i3wm-config/scripts/lock

33 lines
980 B
Bash

#!/bin/bash
SUSPEND_TIMEOUT=300
# There are occasions when you want to lock the screen after timeout but don't shutdown
# Make this function return 1 if you don't want to shutdown
function veto() {
if [[ "$(cmus-remote -Q | grep '^status ')" == "status playing" ]]; then
return 1
elif [[ -f "/tmp/i3-lock.no-suspend" ]]; then
return 1
else
return 0
fi
}
waitForSuspend() {
while [ True ]; do
sleep "$SUSPEND_TIMEOUT"
if veto; then
systemctl suspend
fi
done
}
resolution=$(xrandr | grep -E ' *[0-9]*x[0-9]* *[0-9][0-9]\.[0-9][0-9]\*\+' | awk '{print $1}')
waitForSuspend &
waitPID="$!"
trap "kill $waitPID" EXIT
image="$HOME/.cache/i3lock/lock_${resolution}"
[[ ! -d "$HOME/.cache/i3lock" ]] && mkdir "$HOME/.cache/i3lock"
if [[ ! -f "$image" ]]; then
convert "$HOME/.config/i3/lock.png" -resize "${resolution}^" -gravity Center -crop "${resolution}+0+0" "$image"
fi
i3lock -i "$image" -f -n