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

関連情報