GNU/Linux >> Znalost Linux >  >> Linux

Jak spustit skript na uzamčení/odemknutí obrazovky?

Gnome-screensaver vysílá nějaké signály na dbus, když se něco stane.

Zde dokumentace (s několika příklady).

Můžete napsat skript, který se spustí:

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

a to dělá to, co kdykoli potřebujete dbus-monitor vytiskne řádek o zamykání/odemykání obrazovky.

Zde bash příkaz k provedení toho, co potřebujete:

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

Stačí nahradit echo SCREEN_LOCKED a echo SCREEN_UNLOCKED s tím, co potřebujete.


V ubuntu 14.04 se událost DBus pro odemknutí zámku obrazovky změnila a nový skript pro vazbu na události zámku a odemknutí obrazovky vypadá následovně

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
)

V dnešní době si myslím, že je lepší poslouchat LockedHint spíše než zprávy spořiče obrazovky. Tímto způsobem nejste vázáni na implementaci spořiče obrazovky.

Zde je jednoduchý skript, jak to udělat:

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

Dává toto:

/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 – Jak spustit skript na obrazovce uzamčení/odemknutí?

  2. Jak spustit „find -exec {};?

  3. Jak zpětně zajistit, aby skript běžel jako root?

  1. Jak zamknout obrazovku?

  2. Jak spustit skript po obnovení a po odemknutí obrazovky?

  3. Jak spouštět skripty Pythonu ze shellu

  1. Jak spustit skript??

  2. Jak zamknout a odemknout uživatele v Linuxu

  3. Jak opakovaně spouštět bash skript každých N sekund?