GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo ejecutar un script en el bloqueo/desbloqueo de pantalla?

Gnome-screensaver emite algunas señales en dbus cuando sucede algo.

Aquí la documentación (con algunos ejemplos).

Podrías escribir un script que ejecute:

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"

y eso hace lo que necesitas en cualquier momento dbus-monitor imprime una línea sobre el bloqueo/desbloqueo de la pantalla.

Aquí un comando bash para hacer lo que necesitas:

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

Simplemente reemplace echo SCREEN_LOCKED y echo SCREEN_UNLOCKED con lo que necesitas.


En ubuntu 14.04, el evento DBus para el desbloqueo de bloqueo de pantalla ha cambiado y la nueva secuencia de comandos para vincular eventos de bloqueo y desbloqueo de pantalla tiene el siguiente aspecto

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
)

Hoy en día creo que es mejor escuchar el LockedHint en lugar de mensajes de salvapantallas. De esa manera, no está atado a una implementación de protector de pantalla.

Aquí hay un script simple para hacer eso:

gdbus monitor -y -d org.freedesktop.login1 | grep LockedHint

Da esto:

/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:¿cómo ejecutar un script en el bloqueo/desbloqueo de la pantalla?

  2. ¿Cómo ejecutar “find -exec {};?

  3. ¿Cómo hacer retroactivamente que un script se ejecute como raíz?

  4. ¿Cómo ejecutar un script?

  5. Cómo bloquear y desbloquear usuarios en Linux

Cómo ejecutar un script Bash {7 métodos}

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo ejecutar un script de Python en PHP

Cómo ejecutar Shell Script como servicio SystemD en Linux

Cómo ejecutar un script Bash

Cómo crear y ejecutar un script de shell en Ubuntu 22.04