aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Wittamore <philip@wittamore.com>2025-05-18 17:56:11 +0200
committerPhilip Wittamore <philip@wittamore.com>2025-05-18 17:56:11 +0200
commit8923a5f27822b2332856ffb71bb625edc4a92da4 (patch)
tree7edbad0fe8171e509f0e766a6784fc5d266f65c7
parentce43b91f3035dcc984ed519920198ef91bf89177 (diff)
downloadscripts-master.tar.gz
scripts-master.tar.bz2
scripts-master.zip
-rwxr-xr-xdpower30
-rwxr-xr-xdprompt10
2 files changed, 40 insertions, 0 deletions
diff --git a/dpower b/dpower
new file mode 100755
index 0000000..d19ba8c
--- /dev/null
+++ b/dpower
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+# Dmenu power menu.
+# Uses dprompt for confirmation.
+
+Menu='Logout
+Power Off
+Reboot
+Lockscreen
+Suspend
+Hibernate'
+
+Chosen=$(printf "$Menu" | dmenu -i -l 10 -p 'dpower')
+
+if [ "$Chosen" = 'Logout' ]; then
+ dprompt "Confirm $Chosen?" "loginctl terminate-session $XDG_SESSION_ID"
+elif [ "$Chosen" = 'Power Off' ]; then
+ dprompt "Confirm $Chosen?" 'sytemctl poweroff'
+elif [ "$Chosen" = 'Restart' ]; then
+ dprompt "Confirm $Chosen?" 'systemctl reboot'
+elif [ "$Chosen" = 'Lockscreen' ]; then
+ dprompt "Confirm $Chosen?" "loginctl lock-session $XDG_SESSION_ID"
+elif [ "$Chosen" = 'Suspend' ]; then
+ dprompt "Confirm $Chosen?" 'systemctl suspend'
+elif [ "$Chosen" = 'Hibernate' ]; then
+ dprompt "Confirm $Chosen?" 'systemctl hibernate'
+else
+ exit 1
+fi
+
diff --git a/dprompt b/dprompt
new file mode 100755
index 0000000..73eda47
--- /dev/null
+++ b/dprompt
@@ -0,0 +1,10 @@
+#!/usr/bin/env sh
+
+# Dmenu binary prompt.
+# Gives a dmenu prompt labled with $1 to perform command $2.
+# Example: dprompt "Suspend?" "sudo systemctl suspend"
+
+[ "$(printf 'No\nYes' \
+ | dmenu -p "$1" \
+ -i -nb darkred -sb red -sf black -nf gray)" = 'Yes' ] && $2
+