Chciałbym uruchomić ekran, jeśli sesja Gnome jest zablokowana i odblokowana. Czy istnieje sposób, w jaki mogę to przechwycić i wykonać pewne czynności, gdy pulpit jest zablokowany lub odblokowany?
54
Wygaszacz ekranu Gnome emituje pewne sygnały na dbus, gdy coś się dzieje.
Tutaj dokumentacja (z kilkoma przykładami).
Możesz napisać skrypt, który działa:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"
i to robi to, czego potrzebujesz w dowolnym momencie, dbus-monitor
drukuje wiersz o zablokowanym / odblokowanym ekranie.
Oto polecenie bash, aby zrobić to, czego potrzebujesz:
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
Wystarczy wymienić echo SCREEN_LOCKED
i na echo SCREEN_UNLOCKED
to, czego potrzebujesz.
gnome-screensaver-command
już tam jest. Przechodząc-a
dognome-screensaver-command
ciebie będzie zablokować ekran, podczas gdy będziesz go odblokować-d
. W każdym razie większość aplikacji gnome intensywnie korzysta z dbus, więc będziesz mógł robić z nim wiele niesamowitych rzeczy.W Ubuntu 14.04 zdarzenie DBus dla odblokowania blokady ekranu zmieniło się, a nowy skrypt do powiązania z zablokowaniem i odblokowaniem ekranu wygląda następująco
źródło
W dzisiejszych czasach myślę, że lepiej jest słuchać
LockedHint
wiadomości zamiast wygaszacza ekranu. W ten sposób nie jesteś przywiązany do implementacji wygaszacza ekranu.Oto prosty skrypt, aby to zrobić:
Daje to:
źródło
Ubuntu 16.04: rozwiązanie ozma nie działało dla mnie, jednak to:
źródło
Rozwijanie już udzielonej odpowiedzi.
Jeśli spróbujesz uruchomić skrypt z wnętrza sesji
screen
lubtmux
, najpierw musisz znaleźć poprawny$DBUS_SESSION_BUS_ADDRESS
i przekazać go jako argumentdbus-monitor
zamiast--session
. Również jeśli uruchamiasz go jako demon, powinieneś upewnić się, że działa tylko jedna instancja na raz (np. Z plikiem blokady) i że skrypt czyści się po sobietrap
. Poniższy przykład będzie działał jako demon w większości obecnych środowisk Gnome (testowany na Ubuntu GNOME 16.04):Jeśli to nie działa, prawdopodobnie dlatego, że:
źródło
Jeśli korzystasz z Kubuntu lub używasz KDE / Plazmy jako środowiska graficznego
org.freedesktop.ScreenSaver
, musisz nasłuchiwać interfejsu , więc skrypt do odsłuchiwania tego zdarzenia wyglądałby następująco:źródło
Personalization>Notifications>Notifications>Screensaver
.upstart
wsparcie zadania sesjidesktop-lock
idesktop-unlock
wydarzenia wstart on
zwrotce. Wystarczy utworzyć zadanie .conf dla użytkownika z odpowiednimi wyzwalaczami i poleceniami do wywołania poniżej$XDG_CONFIG_HOME/upstart/
lub$HOME/.config/upstart
podobnego przykładu poniżej:źródło
to działało dla mnie w Ubuntu 16.04
źródło