Mengapa penguncian desktop berhenti berfungsi setelah beberapa waktu?

14

xautolockjelas berjalan :

$ ps wafux | grep [x]autolock
user   21410  0.0  0.0  20124  2628 ?        S    Nov05   0:04 xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock

Namun, ketika saya mencoba menguncinya :

$ xautolock -locknow
Could not locate a running xautolock.

Jika saya memutar yang lain xautolockitu berfungsi:

$ xautolock -time 10 -notify 30 -notifier "notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds'" -locker slock&
[2] 18828
$ ps wafux | grep [x]autolock
user   21410  0.0  0.0  20124  2628 ?        S    Nov05   0:04 xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock
user   18828  0.0  0.0  20124  2708 pts/1    S    08:30   0:00      \_ xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock
$ xautolock -locknow # Runs fine and locks the desktop

Apa yang menyebabkannya?

Sekarang saya sudah melihat ini di desktop dan laptop saya. Harap dicatat bahwa setidaknya pertama kali setelah penguncian boot berfungsi dengan baik. Hanya setelah beberapa waktu atau peristiwa yang tidak diketahui mulai gagal.


Saya belum bisa mereproduksi ini dengan andal. Artinya, saya sudah mencoba pendekatan berikut pada laptop saya dan dalam kedua kasus shortcut / perintah screensaver sebenarnya mengunci desktop setelahnya:

  1. Tutup penutupnya
  2. Tunggu komputer untuk hibernasi
  3. Buka tutupnya
  4. Tekan tombol daya
  5. Berikan kata sandi login yang diikuti oleh Enter

dan

  1. Kunci desktop
  2. Langkah yang sama seperti di atas

Melacak kode:

  1. Baris yang mencetak pesan kesalahan :error1 ("Could not locate a running %s.\n", progName);
  2. Itu terjadi jika messageToSendbenar dantype != XA_INTEGER
  3. Sepertinya typediatur dalam pernyataan berikut:

    (void) XGetWindowProperty (d, root, semaphore, 0L, 2L, False,
                               AnyPropertyType, &type, &format,
                               &nofItems, &after,
                               (unsigned char**) &contents);
    

Apakah ini berarti apakah menjalankan xautolockterdeteksi dapat bergantung pada jendela yang difokuskan? Saya juga ingin tahu apakah panggilan ini dapat dikaitkan dengan bug yang dikenal ini :

  1. Opsi -disable, -enable, -toggle, -exit, -locknow, -unlocknow, dan -restart bergantung pada akses ke server X untuk melakukan pekerjaan mereka. Ini menyiratkan bahwa mereka akan ditangguhkan jika beberapa aplikasi lain telah meraih server untuk dirinya sendiri.

Apakah mungkin xautolockkonflik dengan xss-lock, keduanya menggunakan slock? Selain xautolockbaris di atas, saya juga memiliki baris ini di .xprofile :

xss-lock slock &

Karena keduanya xautolockdan xss-lockdapat menelepon slock, saya curiga bahwa masalahnya seperti ini:

Karena xss-lockdapat mendeteksi tidur laptop saya lebih suka menggunakannya xautolock, tapi sepertinya saya tidak bisa xss-lockbekerja dengannya notify-send.

l0b0
sumber
Unix mana yang Anda gunakan?
kasperd
Saya mengalami masalah yang sama. Saya belum melihat terlalu dalam ke dalamnya, tapi saya ingin tahu jawabannya juga.
HalosGhost
Bagaimana Anda memulainya? Saya menemukan hal yang sama baru-baru ini ketika memulainya dari .xinitrc: Saya beralih ke --userfile layanan dan itu tidak lagi menjadi masalah ...
jasonwryan
1
Memutar video dengan mpv (tetapi bukan mplayer) memicu masalah bagi saya. Kedua pemain memiliki konfigurasi kosong.
jrm
1
Sebuah kurang optimal solusi untuk memicu ini adalah untuk menambahkan stop-screensaver=noke ~/.mpv/config. Tentu saja, ini berarti Anda harus menonaktifkan penguncian secara manual saat memutar video dengan mpv.
jrm

Jawaban:

5

Bagi saya, proses xautolock masih berjalan di latar belakang, tetapi tidak mendengarkan xautolock -locknowperintah apa pun . Seperti yang disebutkan oleh @jrm, aplikasi harus menekan "screensaver" . Bagi kami berdua, ini karena mpv (pemutar video) menonaktifkan screensaver.

Untuk mpv, perbaikannya adalah dengan menambahkan yang berikut ke ~/.config/mpv/configatau ~/.mpv/config:

stop-screensaver=no

Jika Anda tidak menggunakan mpv, itu mungkin aplikasi lain yang menonaktifkan screensaver. Cobalah beberapa yang biasa digunakan untuk melihat yang mana.


Jika Anda ingin mencegah penguncian layar otomatis selama pemutaran video , salah satu cara umum adalah dengan menggunakan fitur "sudut" xautolock:

xautolock -corners 000- -cornersize 30

Dengan perintah di atas, jika Anda meletakkan kursor mouse di sudut kanan bawah layar (dalam radius 30px), penguncian otomatis akan dinonaktifkan sementara.


Satu hal lagi untuk dicoba adalah -resetsaveropsi:

xautolock -resetsaver

Atau -detectsleepopsi:

xautolock -detectsleep
Mateen Ulhaq
sumber
Kiat yang bagus, terima kasih! Saya telah menyadari pemutar video saya (VLC) menonaktifkan penguncian layar selama bertahun-tahun, tetapi jujur ​​masalah ini sekarang sangat jauh ke belakang sehingga saya tidak dapat mengingat jika pikiran saya hanya bingung karena fakta ini. Pokoknya saya sudah berhenti menggunakan xautolock, jadi pertanyaannya agak sedikit diperdebatkan sekarang. Menandai diterima sebagai jawaban yang paling berguna sejauh ini. Jika ada orang yang memiliki masalah yang sama persis, saya dapat menghapus pertanyaan ini untuk menghindari duplikat.
l0b0