rofi/powermenu.sh
2025-02-17 17:31:19 +01:00

87 lines
1.3 KiB
Bash
Executable file

#!/usr/bin/env bash
## Author : Aditya Shakya (adi1090x)
## Github : @adi1090x
# CMDs
uptime="`uptime -p | sed -e 's/up //g'`"
# Options
shutdown='󰐥'
reboot='󰜉'
lock=''
suspend=''
logout='󰍃'
# Rofi CMD
rofi_cmd() {
rofi -dmenu \
-p "" \
-mesg "Uptime: $uptime" \
-theme "$HOME/.config/rofi/themes/powermenu.rasi"
}
# Pass variables to rofi dmenu
run_rofi() {
echo -e "$lock\n$suspend\n$logout\n$reboot\n$shutdown" | rofi_cmd
}
# Execute Command
run_cmd() {
case $1 in
--shutdown)
systemctl poweroff
;;
--reboot)
systemctl reboot
;;
--suspend)
mpc -q pause
amixer set Master mute
systemctl suspend
;;
--logout)
case "$DESKTOP_SESSION" in
openbox)
openbox --exit
;;
bspwm)
bspc quit
;;
dwm)
pkill dwm
;;
i3)
i3-msg exit
;;
plasma)
qdbus org.kde.ksmserver /KSMServer logout 0 0 0
;;
esac
;;
esac
}
# Actions
chosen="$(run_rofi)"
case "${chosen}" in
"${shutdown}")
run_cmd --shutdown
;;
"${reboot}")
run_cmd --reboot
;;
"${lock}")
if [[ -x '/usr/bin/betterlockscreen' ]]; then
betterlockscreen -l
elif [[ -x '/usr/bin/i3lock' ]]; then
i3lock
fi
;;
"${suspend}")
run_cmd --suspend
;;
"${logout}")
run_cmd --logout
;;
esac