#!/bin/bash me="$(readlink -f "$0")" timeout=300 notify=10 display=$(systemd-escape -- "$DISPLAY") configure() { xset s $((timeout - notify)) $notify xset dpms $((timeout * 3)) $((timeout * 4)) $((timeout * 5)) } unconfigure() { xset s 0 xset dpms 0 0 0 } case "$1" in start) configure exec xss-lock --session=${XDG_SESSION_ID} --notifier="$me notify" --transfer-sleep-lock "$me" lock ;; dim|notify) echo "notify: start" systemctl --user kill -s STOP redshift@${display}.service trap "systemctl --user kill -s CONT redshift@${display}.service" EXIT trap 'echo notify: user activity; kill %% 2> /dev/null; exit 0' HUP # user activity trap 'echo notify: locker started; kill %% 2> /dev/null; exit 0' TERM # locker started outputs=($(xrandr --current | sed -n 's/\([^ ]*\) connected .*/\1/p')) for out in ${outputs[@]}; do xrandr --output $out --brightness 0.2 done sleep infinity & wait echo "notify: end" ;; lock) # Something may have mendled with screensaver settings configure # First, stop any music player xdotool key XF86AudioStop # Then, lock screen echo "lock: lock screen" systemctl --user stop compton@${display}.service i3lock -n -e -i $HOME/.cache/awesome/current-wallpaper-${display}.png -t -f systemctl --user start compton@${display}.service echo "lock: unlock screen" ;; esac