
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