Files

42 lines
1.3 KiB
Bash
Raw Permalink Normal View History

2026-09-14 15:31:20 -05:00
#!/usr/bin/env bash
# ---------------------------------------------------------------------------
# rofi power menu — lock / logout / suspend / hibernate / reboot / shutdown
# Destructive entries ask for confirmation before firing.
# ---------------------------------------------------------------------------
set -euo pipefail
THEME="$HOME/.config/rofi/themes/powermenu.rasi"
LOCK_CMD=(betterlockscreen --lock dimblur)
lock=" Lock"
logout=" Log out"
suspend=" Suspend"
hibernate=" Hibernate"
reboot=" Reboot"
shutdown=" Shut down"
menu() {
printf '%s\n' "$lock" "$logout" "$suspend" "$hibernate" "$reboot" "$shutdown" |
rofi -dmenu -i \
-theme "$THEME" \
-p " $(whoami)@$(hostname)" \
-select "$lock"
}
confirm() {
local answer
answer=$(printf ' No\n Yes\n' |
rofi -dmenu -i -theme "$THEME" -p "$1" -select " No")
[[ "$answer" == *Yes* ]]
}
case "$(menu)" in
"$lock") "${LOCK_CMD[@]}" ;;
"$logout") confirm "Log out?" && i3-msg exit ;;
"$suspend") "${LOCK_CMD[@]}" & sleep 0.3; systemctl suspend ;;
"$hibernate") confirm "Hibernate?" && { "${LOCK_CMD[@]}" & sleep 0.3; systemctl hibernate; } ;;
"$reboot") confirm "Reboot?" && systemctl reboot ;;
"$shutdown") confirm "Shut down?" && systemctl poweroff ;;
*) exit 0 ;;
esac