aboutsummaryrefslogtreecommitdiff
path: root/scripts/powercontrol.sh
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xscripts/powercontrol.sh45
1 files changed, 45 insertions, 0 deletions
diff --git a/scripts/powercontrol.sh b/scripts/powercontrol.sh
new file mode 100755
index 0000000..90304d0
--- /dev/null
+++ b/scripts/powercontrol.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+source "$HOME/scripts/modules/rofi-menu.sh";
+source "$HOME/scripts/modules/utils.sh";
+
+optn_poweroff="[] off";
+optn_reboot="[] reboot";
+optn_suspend="[] suspend";
+optn_logout="[] logout";
+optn_lock="[] lock";
+optn_cancel="[] cancel";
+
+OPTIONS=$(echo -e "
+$optn_poweroff
+$optn_reboot
+$optn_suspend
+$optn_logout
+$optn_lock
+$optn_cancel
+" | trim);
+
+lock() { bslock; }
+logout_() { ~/.config/autostart.sh kill; killall dwm; }
+poweroff_() { systemctl shutdown; }
+reboot_() { systemctl reboot; }
+suspend_() { lock & disown; sleep 0.3; sudo zzz; }
+
+menu() {
+ result=$(echo -e "$OPTIONS" | open-menu -l 0 -p "Power button");
+ case "$result" in
+ "$optn_lock") lock ;;
+ "$optn_logout") logout_ ;;
+ "$optn_poweroff") poweroff_ ;;
+ "$optn_reboot") reboot_ ;;
+ "$optn_suspend") suspend_ ;;
+ esac
+}
+
+case "$1" in
+ menu) menu ;;
+ lock) lock ;;
+ poweroff) poweroff_ ;;
+ reboot) reboot_ ;;
+ *) exit 1 ;;
+esac
+