summaryrefslogtreecommitdiffstats
path: root/bin/xsession
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2018-06-02 18:19:51 (EDT)
committer P. J. McDermott <pj@pehjota.net>2021-08-21 20:51:41 (EDT)
commit119b294dc32d4bba5e62947a9e0d4a0390a5c0de (patch)
tree65d55122d2bd9ed3b6effefb9ffb0e7cf73a569d /bin/xsession
parent860355bc3695940ddb4e45359d3b0b2f56103380 (diff)
downloadfluxbox-119b294dc32d4bba5e62947a9e0d4a0390a5c0de.zip
fluxbox-119b294dc32d4bba5e62947a9e0d4a0390a5c0de.tar.gz
fluxbox-119b294dc32d4bba5e62947a9e0d4a0390a5c0de.tar.bz2
bin/xsession: New script
Diffstat (limited to 'bin/xsession')
-rwxr-xr-xbin/xsession97
1 files changed, 97 insertions, 0 deletions
diff --git a/bin/xsession b/bin/xsession
new file mode 100755
index 0000000..3b1cf86
--- /dev/null
+++ b/bin/xsession
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+set -eu
+
+actions_icons='/usr/share/icons/gnome/16x16/actions'
+
+do_logout()
+{
+ zenity --question --title='Log Out' \
+ --window-icon="${actions_icons}/system-log-out.png" \
+ --text='Are you sure you want to log out?' \
+ --ok-label='Log Out' --cancel-label='Cancel' && \
+ printf 'quit\n' >~/.xsessionmanage
+
+ return 0
+}
+
+do_shutdown()
+{
+ zenity --question --title='Shut Down' \
+ --window-icon="${actions_icons}/system-shutdown.png" \
+ --text='Are you sure you want to shut down this system?' \
+ --ok-label='Shut Down' --cancel-label='Cancel' && \
+ sudo shutdown -hP now
+
+ return 0
+}
+
+do_reboot()
+{
+ zenity --question --title='Reboot' \
+ --window-icon="${actions_icons}/system-shutdown.png" \
+ --text='Are you sure you want to reboot this system?' \
+ --ok-label='Reboot' --cancel-label='Cancel' && \
+ sudo reboot
+
+ return 0
+}
+
+do_s2mem()
+{
+ zenity --question --title='Suspend' \
+ --window-icon="${actions_icons}/media-playback-pause.png" \
+ --text='Are you sure you want to suspend this system?' \
+ --ok-label='Suspend' --cancel-label='Cancel' && \
+ sudo dd of='/sys/power/state' <<-EOF
+ mem
+ EOF
+
+ return 0
+}
+
+do_s2disk()
+{
+ zenity --question --title='Hibernate' \
+ --window-icon="${actions_icons}/media-playback-pause.png" \
+ --text='Are you sure you want to hibernate this system?' \
+ --ok-label='Hibernate' --cancel-label='Cancel' && \
+ sudo dd of='/sys/power/state' <<-EOF
+ disk
+ EOF
+
+ return 0
+}
+
+usage()
+{
+ printf 'Usage: %s {logout|shutdown|reboot|s2mem|s2disk}\n' "${0}"
+
+ return 0
+}
+
+main()
+{
+ local action=
+
+ if [ ${#} -ne 1 ]; then
+ usage 1>&2
+ return 1
+ fi
+ action="${1}"
+ shift 1
+
+ case "${action}" in
+ 'logout' | 'shutdown' | 'reboot' | 's2mem' | 's2disk')
+ "do_${action}"
+ ;;
+ *)
+ usage 1>&2
+ return 1
+ ;;
+ esac
+
+ return 0
+}
+
+main "${@}"