Gnome-screensaver émet des signaux sur dbus lorsque quelque chose se passe.
Ici la documentation (avec quelques exemples).
Vous pouvez écrire un script qui s'exécute :
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"
et cela fait ce dont vous avez besoin à tout moment dbus-monitor
imprime une ligne indiquant que l'écran est verrouillé/déverrouillé.
Voici une commande bash pour faire ce dont vous avez besoin :
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" |
while read x; do
case "$x" in
*"boolean true"*) echo SCREEN_LOCKED;;
*"boolean false"*) echo SCREEN_UNLOCKED;;
esac
done
Remplacez simplement echo SCREEN_LOCKED
et echo SCREEN_UNLOCKED
avec ce dont vous avez besoin.
Dans Ubuntu 14.04, l'événement DBus pour le déverrouillage de l'écran a changé et le nouveau script de liaison aux événements de verrouillage et de déverrouillage de l'écran ressemble à ce qui suit
dbus-monitor --session "type='signal',interface='com.ubuntu.Upstart0_6'" | \
(
while true; do
read X
if echo $X | grep "desktop-lock" &> /dev/null; then
SCREEN_LOCKED;
elif echo $X | grep "desktop-unlock" &> /dev/null; then
SCREEN_UNLOCKED;
fi
done
)
Aujourd'hui je pense qu'il vaut mieux écouter le LockedHint
plutôt que des messages d'économiseur d'écran. De cette façon, vous n'êtes pas lié à la mise en œuvre d'un économiseur d'écran.
Voici un script simple pour le faire :
gdbus monitor -y -d org.freedesktop.login1 | grep LockedHint
Donne ceci :
/org/freedesktop/login1/session/_32: org.freedesktop.DBus.Properties.PropertiesChanged ('org.freedesktop.login1.Session', {'LockedHint': <true>}, @as [])
/org/freedesktop/login1/session/_32: org.freedesktop.DBus.Properties.PropertiesChanged ('org.freedesktop.login1.Session', {'LockedHint': <false>}, @as [])