#!/bin/bash lock="$HOME/.screen-locker.lck" exec 9>"${lock}" if ! flock -n 9; then logger "screen locker lock already locked" exit fi if pidof i3lock &> /dev/null; then exit 1; fi revert() { xset dpms 0 0 0 logger "unlocking screen" } trap revert SIGHUP SIGINT SIGTERM EXIT # XXX: this seems to be broken so we also have our own loop to do essentially the same xset +dpms dpms 10 10 10 dpms-loop() { exec 9>&- sleep 20 while pidof i3lock &> /dev/null; do xset dpms force off sleep 30 done } dpms-loop & loop_pid=$! logger "locking screen" i3lock -n -c 000000