mirror of
https://github.com/vincentbernat/i3wm-configuration.git
synced 2025-06-26 19:58:35 +02:00
One time out of two, the screen will stay black. Moreover, since this is not incorruptible, it is cumbersome to cancel it.
39 lines
1.3 KiB
Bash
Executable file
39 lines
1.3 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
me="$(readlink -f "$0")"
|
|
timeout=240
|
|
notify=10
|
|
|
|
case "$1" in
|
|
start)
|
|
xset s $(($timeout - $notify)) $notify
|
|
xset dpms $(($timeout * 2)) $(($timeout * 3)) $(($timeout * 4))
|
|
exec xss-lock -n "$me notify" -l $me lock
|
|
;;
|
|
dim|notify)
|
|
echo "$(date --rfc-3339=seconds) $me: notify: start"
|
|
trap 'exit 0' TERM INT
|
|
trap "kill %% ; wait" EXIT
|
|
notify-send "Lock screen" -t $(($notify * 1000)) \
|
|
"Screen will be locked in 10 seconds..."
|
|
echo "$(date --rfc-3339=seconds) $me: notify: end"
|
|
sleep 2147483647 &
|
|
wait
|
|
;;
|
|
lock)
|
|
i3lock_options="-e -i $HOME/.cache/awesome/current-wallpaper.png"
|
|
echo "$(date --rfc-3339=seconds) $me: lock: lock screen"
|
|
if [ -e /proc/self/fd/${XSS_SLEEP_LOCK_FD:--1} ]; then
|
|
trap 'kill %%' TERM INT
|
|
i3lock -n $i3lock_options {XSS_SLEEP_LOCK_FD}<&- &
|
|
sleep 0.3 # Slight race condition, better than an active loop
|
|
exec {XSS_SLEEP_LOCK_FD}<&-
|
|
wait
|
|
else
|
|
trap 'kill %%' TERM INT
|
|
i3lock -n $i3lock_options &
|
|
wait
|
|
fi
|
|
echo "$(date --rfc-3339=seconds) $me: lock: unlock screen"
|
|
;;
|
|
esac
|