diff options
-rwxr-xr-x | .gitignore.d/fluxbox | 2 | ||||
-rwxr-xr-x | bin/xsession | 97 |
2 files changed, 99 insertions, 0 deletions
diff --git a/.gitignore.d/fluxbox b/.gitignore.d/fluxbox index 30db836..106dc41 100755 --- a/.gitignore.d/fluxbox +++ b/.gitignore.d/fluxbox @@ -13,6 +13,8 @@ /.fluxbox/fbrun_history !/.xinitrc !/.xsession +!/bin/ +!/bin/xsession !/lib/ !/lib/panel/ !/lib/panel/* 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 "${@}" |