como ligar para monitorar o evento do sono?

1

Existe um evento ao qual posso ligar quando o monitor está definido para dormir? Quero dizer, apenas o monitor DPMS dorme, não o PC dorme / suspende.

Minha intenção é executar um script quando o monitor for enviado para dormir, mas o computador ainda estiver ligado.

Da mesma forma, há um evento que é acionado quando o monitor retorna do modo de suspensão?

    
por Cubiq 10.10.2015 / 06:57

2 respostas

1

xset -q dirá se o monitor está ligado ou desligado.

Normalmente, ele informa "Monitor is On". No entanto, se você desligar o monitor e executar o comando, ele informará que está desativado.

Experimente digitando:

sleep 1; xset dpms force off; sleep 1; xset -q

(os comandos sleep estão lá para impedir que o X misture a ordem dos eventos). Em seguida, mexa o mouse para recuperar a tela.

Em um script, fazer $(xset -q|grep Monitor|awk '{print $3;}') fornecerá uma variável que seja On ou Off .

X é uma fera complicada, mas no meu sistema funciona corretamente todas as vezes.

    
por Jos 10.10.2015 / 11:04
0

Estou criando hoje um script básico que pode fornecer uma resposta melhor em uma semana ou mais. Enquanto isso, encontrei esta resposta do reddit com um script bash que você pode usar:

#!/bin/bash
jsdev=${1:-"/dev/input/js0"}
getxss() {
    xset q | grep -e 'timeout\:\|Standby\:' \
        | awk '{a[NR]=$1}END{asort(a);print a[1]}' RS=' '
}
tellit() { notify-send "controller xss holder" "${1:-"date"}: $(date +%T)"; }
fin() { tellit "${1:-"bye"}"; exit; }
trap 'fin "sigint recieved"' INT
slt=$((($(getxss)/5)*4)); [ $slt -lt 1 ] && slt=1; w=60
until [[ -e "$jsdev" || $w -lt 1 ]]; do
    t=$(date +%s); f="$(inotifywait -qq -e create --format '%w%f' -t $w "$(dirname $jsdev)")"
    [ "$f" == "$jsdev" ] && break || t=$(($(date +%s)-$t)) && ((w-=$t))
done; [ $w -lt 1 ] && fin "dev not found" && exit
tellit "connected"; while [ -e "$jsdev" ]; do
    read -rn1< <(jstest --nonblock "$jsdev" 2>/dev/null) \
        && [ -e "$jsdev" ] && xset -display :0 s reset dpms force on
    inotifywait -qq -e delete_self --format '%w%f' -t $slt $jsdev 2>/dev/null
done; fin "disconnected"
    
por WinEunuuchs2Unix 30.09.2018 / 15:10