Como posso esperar até que o xscreensaver seja desbloqueado?

0

Como posso esperar até que o xscreensaver seja desbloqueado? xscreensaver-command -lock bloqueia a tela, mas retorna antes que a tela seja desbloqueada novamente. O xscreensaver fornece xscreensaver-command -watch para imprimir UNBLANK eventos, mas como posso analisá-los e garantir que xscreensaver-command -watch seja morto depois?

    
por Ivan Kozik 01.12.2017 / 02:28

1 resposta

0

Este programa irá sair após o xscreensaver ser desbloqueado (ou "não protegido" após uma ativação que não exija uma senha):

#!/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
    
por 01.12.2017 / 02:28