web-dev-qa-db-fra.com

Comment exécuter des scripts sur veille / veille d'écran

Je me demande comment exécuter un script lorsque l'écran s'éteint et lorsqu'il se réveille. Je ne parle pas de mise en veille prolongée ou de suspension, mais uniquement lorsque l'écran s'éteint.

La raison en est que j'ai un clavier LED et que je souhaite activer/désactiver les LED intégrées au réveil.

4
John Petryk

vous pouvez utiliser xset -q pour vérifier l'état de votre moniteur. Jusqu'à présent, j'ai vu des états DPMS pour que le moniteur soit "Le moniteur est allumé", "Le moniteur est éteint" ou "Le moniteur est en suspension". vous pouvez écrire un script que vous démarrerez automatiquement après le démarrage de xorg:

#!/bin/bash
while true; do
    xset -q | grep "Monitor is On"
    if [ $? -eq 1 ]; then
        if [ "`cat /tmp/displaystate`" != "off" ]; then 
            echo "off" > /tmp/displaystate
            # do something when display is switched off
            /opt/myScreenOffAction.sh
        fi
        sleep 1
    else 
        if [ "`cat /tmp/displaystate`" != "on" ]; then 
            echo "on" > /tmp/displaystate
            #do something when display is switched on
            /opt/myScreenOffAction.sh
        fi
        sleep 10
    fi
done

pour tester votre script, vous pouvez utiliser xset dpms force suspend pour mettre votre écran en veille.

Je vous suggère de grep pour "Monitor is On" car il semble qu'il y ait différents états pour off comme mentionné ci-dessus.

5
Pascal Suter