Gnome-screensaver memancarkan beberapa sinyal pada dbus ketika sesuatu terjadi.
Berikut dokumentasinya (dengan beberapa contoh).
Anda dapat menulis skrip yang menjalankan:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"
dan itu melakukan apa yang Anda butuhkan kapan saja dbus-monitor
mencetak baris tentang layar yang dikunci/dibuka.
Berikut perintah bash untuk melakukan apa yang Anda butuhkan:
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
Cukup ganti echo SCREEN_LOCKED
dan echo SCREEN_UNLOCKED
dengan apa yang Anda butuhkan.
Di ubuntu 14.04 acara DBus untuk membuka kunci layar telah berubah dan skrip baru untuk mengikat ke kunci layar dan membuka acara terlihat seperti berikut
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
)
Saat ini saya pikir lebih baik mendengarkan LockedHint
daripada pesan screensaver. Dengan demikian, Anda tidak terikat dengan penerapan screensaver.
Berikut skrip sederhana untuk melakukannya:
gdbus monitor -y -d org.freedesktop.login1 | grep LockedHint
Berikan ini:
/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 [])