GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter un script sur le verrouillage/déverrouillage de l'écran ?

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 [])

Linux
  1. Linux - Comment exécuter un script sur le verrouillage/déverrouillage de l'écran ?

  2. Comment exécuter "find -exec {} ; ?

  3. Comment exécuter rétroactivement un script en tant que root ?

  4. Comment verrouiller l'écran ?

  5. Comment exécuter à plusieurs reprises un script bash toutes les N secondes ?

Comment exécuter un script bash {7 méthodes}

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment exécuter un script Python en PHP

Comment exécuter un script Shell en tant que service SystemD sous Linux

Comment exécuter un script bash

Comment créer et exécuter un script shell dans Ubuntu 22.04