#!/bin/bash ### From http://www.archlinux.org/index.php/i3 _logfile="$LOGDIR/i3/i3exit.log" LOCKSCREEN="$LIBDIR/wallpaper/lockscreen" _fallback_color=000000 touch "$_logfile" log() { echo "$*" echo "[$(date +%FT%T)] $*" >> "$_logfile" } lock() { if [[ -f "$LOCKSCREEN" ]] ; then i3lock --nofork --show-failed-attempts --ignore-empty-password \ --pointer win --image "$LOCKSCREEN" else i3lock --nofork --show-failed-attempts --ignore-empty-password \ --color "$_fallback_color" fi } screen_off() { xset dpms force off } reset_screen() { xset -dpms xset s off } lock_and_screen_off() { lock & _pid=$! screen_off wait $_pid 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_and_screen_off & systemctl suspend ;; hibernate) log "[I] Hibernating." systemctl hibernate ;; reboot) log "[I] Rebooting." systemctl reboot ;; shutdown) log "[I] Shutting down." systemctl poweroff ;; screen-off) log "[I] Turning screen off." lock_and_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