85 lines
1.5 KiB
Bash
Executable File
85 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
### From http://www.archlinux.org/index.php/i3
|
|
|
|
_logfile="$LOGDIR/i3/i3exit.log"
|
|
|
|
touch "$_logfile"
|
|
|
|
log()
|
|
{
|
|
echo "$*"
|
|
echo "[$(date +%FT%T)] $*" >> "$_logfile"
|
|
}
|
|
|
|
lock()
|
|
{
|
|
set -x
|
|
playerctl -p spotify pause
|
|
|
|
i3lock --nofork --show-failed-attempts --ignore-empty-password \
|
|
--color "000000"
|
|
}
|
|
|
|
screen_off() {
|
|
xset dpms force off
|
|
}
|
|
|
|
reset_screen() {
|
|
systemctl --user restart dpms.service
|
|
}
|
|
|
|
lock_and_screen_off() {
|
|
lock &
|
|
_pid=$!
|
|
dunst_paused=$(dunstctl is-paused)
|
|
[[ "${dunst_paused}" != "true" ]] && dunstctl set-paused true
|
|
screen_off
|
|
wait $_pid
|
|
[[ "${dunst_paused}" != "true" ]] && 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
|