blob: d2eba4c96613a873870923760d8339975a668641 (
plain) (
tree)
|
|
#!/bin/bash
# Example locker script -- demonstrates how to use the --transfer-sleep-lock
# option with i3lock's forking mode to delay sleep until the screen is locked.
## CONFIGURATION ##############################################################
screenshot="$XDG_RUNTIME_DIR/.screen.png"
# Options to pass to i3lock
i3lock_options="--image=$screenshot --ignore-empty-password"
# Run before starting the locker
pre_lock() {
gpgconf --kill scdaemon || true
rm -f "$screenshot" \
&& scrot "$screenshot" \
&& convert "$screenshot" -scale 5% -scale 2000% "$screenshot"
#mpc pause
return
}
# Run after the locker exits
post_lock() {
return
}
###############################################################################
pre_lock
# We set a trap to kill the locker if we get killed, then start the locker and
# wait for it to exit. The waiting is not that straightforward when the locker
# forks, so we use this polling only if we have a sleep lock to deal with.
if [[ -e /dev/fd/${XSS_SLEEP_LOCK_FD:--1} ]]; then
kill_i3lock() {
pkill -xu $EUID "$@" i3lock
}
trap kill_i3lock TERM INT
# we have to make sure the locker does not inherit a copy of the lock fd
i3lock $i3lock_options {XSS_SLEEP_LOCK_FD}<&-
# now close our fd (only remaining copy) to indicate we're ready to sleep
exec {XSS_SLEEP_LOCK_FD}<&-
while kill_i3lock -0; do
sleep 0.5
done
else
trap 'kill %%' TERM INT
i3lock -n $i3lock_options &
wait
fi
post_lock
|