GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire uno script sul blocco/sblocco dello schermo?

Gnome-screensaver emette dei segnali su dbus quando succede qualcosa.

Qui la documentazione (con alcuni esempi).

Potresti scrivere uno script che esegua:

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

e questo fa ciò di cui hai bisogno in qualsiasi momento dbus-monitor stampa una riga sullo schermo bloccato/sbloccato.

Ecco un comando bash per fare ciò di cui hai bisogno:

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

Basta sostituire echo SCREEN_LOCKED e echo SCREEN_UNLOCKED con ciò di cui hai bisogno.


In Ubuntu 14.04 l'evento DBus per lo sblocco del blocco dello schermo è cambiato e il nuovo script per l'associazione agli eventi di blocco e sblocco dello schermo è simile al seguente

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
)

Oggi penso che sia meglio ascoltare il LockedHint piuttosto che messaggi salvaschermo. In questo modo non sei legato all'implementazione di un salvaschermo.

Ecco un semplice script per farlo:

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

Dà questo:

/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 – Come eseguire uno script sul blocco/sblocco dello schermo?

  2. Come eseguire "find -exec {};?

  3. Come eseguire retroattivamente uno script come root?

  4. Come bloccare lo schermo?

  5. Come eseguire lo script dopo il ripristino e dopo lo sblocco dello schermo?

Come eseguire uno script Bash {7 metodi}

Come eseguire il comando / script della shell di Linux in background

Come eseguire uno script Python in PHP

Come eseguire lo script della shell come servizio SystemD in Linux

Come eseguire uno script Bash

Come creare ed eseguire uno script di shell in Ubuntu 22.04