X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=bin%2Fxlockscreen;h=11b8aecfff44f464a95959656ded0025e49de001;hb=e0a76c26f9164e070166fcc62e1c287cc1033eef;hp=1bac3a19aadba22209858a50f97e02f2ed688331;hpb=b71680c55e6e492ed008f8ec5af3bf169b272f09;p=config%2Fdotfiles.git diff --git a/bin/xlockscreen b/bin/xlockscreen index 1bac3a1..11b8aec 100755 --- a/bin/xlockscreen +++ b/bin/xlockscreen @@ -50,17 +50,24 @@ if test x"$1" = xstart; then # [1]: https://stackoverflow.com/questions/3748432/insane-crond-behavior-keeps-making-defunct-bash-processes/3750028#3750028 if installed xscreensaver; then - echo "xscreensaver.lockTimeout: $lock_time_minutes" | xrdb -merge + printf 'xscreensaver.timeout: %d + xscreensaver.lock: True + xscreensaver.lockTimeout: 0 + ' "$lock_time_minutes" | xrdb -merge xscreensaver >/dev/null & echo xscreensaver elif installed xautolock; then - if installed "$lock_bin"; then + if installed "$lock_binary"; then + # Terminate a running xautolock because we might have to replace + # its timeout and other settings with our values. + pkill -u "$USER" xautolock || true + xautolock -secure -time "$lock_time_minutes" \ -locker "$lock_binary" \ >/dev/null & echo xautolock else - echo "Locker '$lock_bin' not installed. Auto lock won't work!" + echo "Locker '$lock_binary' not installed. Auto lock won't work!" exit 1 fi else @@ -78,16 +85,17 @@ elif test x"$1" = xlock; then # ensures xscreensaver is available for the current X session. xscreensaver-command -time >/dev/null 2>&1 || xscreensaver & - xscreensaver-command -lock # It can take a while for xscreensaver to start, wait until it's - # ready. - while test $? -eq 255; do - xscreensaver-command -lock + # ready. a || b && c behaves like (a || b) && c. + while :; do + xscreensaver-command -lock || test $? -ne 255 && break done elif installed xtrlock; then # Sleep is necessary to allow xtrlock to grab the keyboard input. sleep 1 - xtrlock + exec xtrlock + elif installed xlock; then + exec xlock else echo 'No screen locker found!' exit 1