如何才能等到 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

相關內容