#!/bin/bash ### From http://www.archlinux.org/index.php/i3 _logfile="$LOGDIR/i3/i3exit.log" LOCKSCREEN="$LIBDIR/lockscreen" _fallback_color="000000" touch "$_logfile" log() { echo "$*" echo "[$(date +%FT%T)] $*" >> "$_logfile" } lock() { set -x playing=0 if [[ "$(playerctl -p spotify status)" == "Playing" ]] ; then playing=1 fi if (( $playing )) ; then playerctl -p spotify pause fi if [[ -f "$LOCKSCREEN" ]] ; then resized_lockscreen=$(mktemp) convert "${LOCKSCREEN}" -resize "${MACHINE_RESOLUTION_X}x${MACHINE_RESOLUTION_Y}" "${resized_lockscreen}" i3lock --nofork --show-failed-attempts --ignore-empty-password \ --image "${resized_lockscreen}" rm "${resized_lockscreen}" else i3lock --nofork --show-failed-attempts --ignore-empty-password \ --color "$_fallback_color" fi if (( $playing )) ; then playerctl -p spotify play fi } screen_off() { xset dpms force off } reset_screen() { systemctl --user restart dpms.service } lock_and_screen_off() { lock & _pid=$! dunstctl set-paused true screen_off wait $_pid dunstctl set-paused false reset_screen } signal="$1" log "[I] Received signal \"$signal\"." case "$signal" in lock) log "[I] Locking session." lock_and_screen_off ;; logout) log "[I] Exiting i3." i3-msg exit ;; suspend) log "[I] Suspending." lock & sleep 0.1 systemctl suspend ;; hibernate) log "[I] Hibernating." sudo systemctl hibernate ;; reboot) log "[I] Rebooting." systemctl reboot ;; shutdown) log "[I] Shutting down." systemctl poweroff ;; screen-off) log "[I] Turning screen off." screen_off ;; *) echo "Usage: $0 {lock|logout|suspend|hibernate|reboot|shutdown}" log "[E] Signal \"$signal\" unknown. Aborting." exit 2 esac log "[I] Done." exit 0