Di Ubuntu 12.04 LTS, saya ingin menjalankan skrip setelah melanjutkan dari penangguhan, dan setelah membuka kunci desktop saya. Ini perlu dijalankan sebagai pengguna saya, dan dengan akses ke saya $DISPLAY
.
Secara khusus, saya ingin
- restart
nm-applet
untuk mengatasi bug 985028 - tampilkan pemberitahuan khusus menggunakan
notify-send
- mungkin hal-hal lain ketika saya membuatnya bekerja
Saat saya melanjutkan, skrip dalam /etc/pm/sleep.d/
dijalankan, tetapi skrip dijalankan sebagai root, tanpa sepengetahuan layar dan nama pengguna saya. Mungkin berhasil jika saya membuat hard-code nama pengguna saya dan export
default DISPLAY :0
di skrip ini, tapi rasanya seperti peretasan yang sangat jelek.
Skrip sedang ~/.config/autostart/xyz.desktop
berjalan setelah masuk, tetapi skrip tidak berjalan setelah hanya membuka kunci layar setelah melanjutkan.
Apakah ada cara untuk menjalankan skrip setelah membuka kunci layar setelah resume?
users
, dengan asumsi bahwa tidak ada orang lain yang login. (Atau tidak masalah)Jawaban:
Sepertinya Anda harus membuat kode nama pengguna di jawaban sebelumnya, jadi inilah skrip sederhana untuk di /etc/pm/sleep.d jika ada yang mencari perbaikan cepat:
sumber
Pertanyaan ini di situs Unix & Linux mendokumentasikan pendekatan alternatif menggunakan pesan dbus:
(Ganti SCREEN_LOCKED dan SCREEN_UNLOCKED dengan tindakan yang ingin Anda lakukan.)
Menggunakan
xrandr 1>/dev/null 2>1
sebagai tindakan membuka kunci memperbaiki masalah saya bahwa resolusi / posisi monitor tidak dipulihkan dengan benar pada pembukaan kunci layar (xrandr tampaknya menyebabkan pembacaan ulang pengaturan layar). Saya menambahkan baris ini sebagai tugas latar belakang di .bash_profile saya (mungkin ini lebih baik sebagai file desktop di ~ / .config / autostart, karena itu hanya berjalan ketika Anda memulai gnome):Latar belakang lebih lanjut pada API gnome-screensaver dapat ditemukan di situs ini , dan pada monitor dbus di sini .
sumber
Salah satu solusinya adalah skrip yang berjalan saat masuk ke desktop, dan yang menangkap pesan dbus. Setelah melanjutkan dari menangguhkan layar terkunci, dan setelah memasukkan kata sandi, ada acara Buka kunci di dbus.
(Terima kasih kepada Kim SJ karena telah menempatkan saya di jalur yang benar. Saya tidak memiliki sinyal ScreenSaver, tetapi menemukan antarmuka lain untuk digunakan).
Di
~/.config/autostart/
, saya memiliki file .desktop yang memulai skrip bash:The
unlock_monitor
Script Monitor membaca pesan dbus daricom.canonical.Unity.Session
dan melakukan hal-hal diUnlocked
sinyal:Saat masuk, tidak ada sinyal "Tidak Terkunci", tetapi ada sinyal "NameAcquired" saat
dbus-monitor
mulai.sumber
Anda dapat menjalankan skrip menggunakan start-stop-daemon. start-stop-daemon dapat memotong utas berjalan sebagai uid dan gid yang berbeda, karenanya menyelesaikan masalah Anda.
Yang perlu Anda lakukan adalah menulis skrip pekerjaan yang ditempatkan di system PATH like
/usr/bin
, dan membuat skrip daemon tambahan/etc/pm/sleep.d
.pm-suspend
Tindakan mencocokkan sepertiresume
atauthaw
skrip daemon melakukan skrip pekerjaan melaluidi mana
ARGs
bisa--chuid 1001:1001
atau adil--user your_username
.Dan untuk integritas, Anda mungkin ingin skrip daemon menghentikan damon yang dinamai
nm-rtvt
sebelum ditangguhkan melaluipm-suspend
tindakan yang cocok sepertisuspend
atauhibernate
.Untuk lebih jelasnya
man start-stop-daemon
,. Dan ada banyak contoh lain dalam/etc/init.d
skrip daemon.sumber