Saya ingin menjalankan layar jika sesi Gnome terkunci dan tidak terkunci. Apakah ada cara saya dapat mencegat ini dan melakukan tindakan tertentu ketika desktop terkunci atau tidak terkunci?
54
Gnome-screensaver memancarkan beberapa sinyal pada dbus ketika sesuatu terjadi.
Berikut dokumentasi (dengan beberapa contoh).
Anda dapat menulis skrip yang berjalan:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"
dan itu melakukan apa yang Anda butuhkan kapan saja dbus-monitor
mencetak garis tentang layar sedang dikunci / dibuka.
Di sini 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
Ganti saja echo SCREEN_LOCKED
dan echo SCREEN_UNLOCKED
dengan apa yang Anda butuhkan.
gnome-screensaver-command
sudah ada di sana. Melewati-a
kegnome-screensaver-command
Anda akan mengunci layar, sementara Anda akan membukanya dengan-d
. Bagaimanapun, sebagian besar aplikasi gnome menggunakan dbus secara luas, sehingga Anda dapat melakukan banyak hal menakjubkan dengannya.Di ubuntu 14.04 acara DBus untuk membuka kunci layar telah berubah dan skrip baru untuk mengikat ke kunci layar dan membuka kunci acara tampak seperti berikut
sumber
Saat ini saya pikir lebih baik mendengarkan
LockedHint
pesan daripada screensaver. Dengan begitu Anda tidak terikat dengan implementasi screensaver.Berikut ini skrip sederhana untuk melakukannya:
Memberi ini:
sumber
Ubuntu 16.04: solusi ozma tidak bekerja untuk saya, namun yang ini berhasil:
sumber
Memperluas jawaban yang sudah diberikan.
Jika Anda mencoba menjalankan skrip dari dalam sesi
screen
atautmux
, Anda harus menemukan yang benar$DBUS_SESSION_BUS_ADDRESS
terlebih dahulu dan meneruskannya sebagai argumen untukdbus-monitor
bukan--session
. Juga jika Anda menjalankannya sebagai daemon, Anda harus memastikan hanya satu instance yang berjalan pada satu waktu (misalnya dengan file kunci) dan bahwa skrip membersihkan setelah itu dengantrap
. Contoh berikut akan berfungsi sebagai daemon di sebagian besar lingkungan Gnome saat ini (diuji pada Ubuntu GNOME 16.04):Jika ini tidak berhasil untuk Anda, mungkin karena:
sumber
Jika Anda menggunakan Kubuntu atau menggunakan KDE / Plasma sebagai Lingkungan Desktop Anda, Anda harus mendengarkan antarmuka
org.freedesktop.ScreenSaver
, sehingga skrip untuk mendengarkan acara tersebut akan terlihat seperti ini:sumber
Personalization>Notifications>Notifications>Screensaver
.upstart
dukungan sesi pekerjaandesktop-lock
dandesktop-unlock
acara dalamstart on
bait. Cukup buat pekerjaan .conf untuk pengguna Anda dengan pemicu dan perintah yang relevan untuk dipanggil di bawah$XDG_CONFIG_HOME/upstart/
atau$HOME/.config/upstart
seperti contoh di bawah ini:sumber
inilah yang bekerja untuk saya di ubuntu 16.04
sumber