Как мне дождаться разблокировки xscreensaver?

Как мне дождаться разблокировки xscreensaver?

Как мне дождаться разблокировки xscreensaver? xscreensaver-command -lockблокирует экран, но возвращается до того, как экран снова разблокируется. xscreensaver предоставляет возможность xscreensaver-command -watchраспечатать UNBLANKсобытия, но как мне их проанализировать и убедиться, xscreensaver-command -watchчто он будет впоследствии завершен?

решение1

Эта программа завершит работу после разблокировки xscreensaver (или «разблокировки» после активации, не требующей пароля):

#!/bin/bash

set -eu

FIFO=/tmp/xscreensaver-wait-for-unlock-$$.fifo
rm -f "$FIFO"
mkfifo "$FIFO"

# Kill `xscreensaver-command -watch` when we exit
trap "exit" INT TERM
trap "kill %1; rm -f $FIFO" EXIT

xscreensaver-command -watch > $FIFO &

while read line; do
    if echo -E "$line" | grep -q "^UNBLANK "; then
        # Make sure the screen is actually unlocked
        xscreensaver-command -time | grep -q " screen non-blanked since " && exit 0 || echo "saw UNBLANK but screen was not unlocked"
    fi
done < $FIFO

Связанный контент