Perché il blocco del desktop smette di funzionare dopo qualche tempo?


14

xautolockè chiaramente in esecuzione :

$ 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

Tuttavia, quando provo a bloccarlo :

$ xautolock -locknow
Could not locate a running xautolock.

Se ne giro un altro xautolockfunziona:

$ 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

Cosa dà?

Ormai l'ho visto su desktop e laptop. Si noti che almeno la prima volta dopo il blocco dell'avvio funziona correttamente. È solo dopo un periodo sconosciuto o un evento che inizia a fallire.


Sono non stato in grado di riprodurre questo modo affidabile. Cioè, ho provato i seguenti approcci sul mio laptop e in entrambi i casi il collegamento / comando screensaver in realtà blocca il desktop in seguito:

  1. Chiudi il coperchio
  2. Attendere il letargo del computer
  3. Apri il coperchio
  4. Premi il pulsante di accensione
  5. Fornire la password di accesso seguita da Enter

e

  1. Blocca il desktop
  2. Stessi passi come sopra

Tracciare il codice:

  1. La riga che stampa il messaggio di errore :error1 ("Could not locate a running %s.\n", progName);
  2. Succede se messageToSendè vero etype != XA_INTEGER
  3. Sembra che typesia impostato nella seguente dichiarazione:

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

Questo significa che il xautolockrilevamento della corsa può dipendere dalla finestra focalizzata? Mi chiedo anche se questa chiamata potrebbe essere correlata a questo bug noto :

  1. Le opzioni -disable, -enable, -toggle, -exit, -locknow, -unlocknow e -restart dipendono dall'accesso al server X per fare il loro lavoro. Ciò implica che saranno sospesi nel caso in cui un'altra applicazione abbia afferrato il server da solo.

È possibile che sia in xautolockconflitto con xss-lockentrambi i quali stanno usando slock? Oltre alla xautolockriga sopra ho anche questa riga in .xprofile :

xss-lock slock &

Dal momento che entrambi xautolocke xss-lockposso chiamare slock, sospetto che il problema vada in questo modo:

Dal momento che è in xss-lockgrado di rilevare la sospensione del laptop, mi piacerebbe usarlo invece di xautolock, ma non riesco a farlo xss-lockfunzionare notify-send.


Quale unix stai usando?
Kasperd,

Sto incontrando questo stesso problema. Non ho studiato troppo a fondo, ma mi piacerebbe sapere anche una risposta.
HalosGhost

Come lo stai iniziando? Recentemente ho trovato la stessa cosa quando lo .xinitrcho avviato : sono passato a un --userfile di servizio e non è più un problema ...
jasonwryan

1
La riproduzione di un video con mpv (ma non mplayer) fa scattare il problema per me. Entrambi i giocatori hanno configurazioni vuote.
jrm,

1
Una soluzione meno-che-ottimale per questo trigger è quello di aggiungere stop-screensaver=noa ~/.mpv/config. Naturalmente, questo significa che devi disabilitare manualmente il blocco durante la riproduzione di video con mpv.
jrm

Risposte:


5

Per me, il processo xautolock era ancora in esecuzione in background, ma non stava ascoltando alcun xautolock -locknowcomando. Come accennato da @jrm, un'applicazione deve eliminare lo "screensaver" . Per entrambi, ciò è dovuto al fatto che mpv (lettore video) ha disabilitato lo screensaver.

Per mpv, la correzione è quello di aggiungere la seguente a ~/.config/mpv/configo ~/.mpv/config:

stop-screensaver=no

Se non usi mpv, potrebbe trattarsi di un'altra applicazione che disabilita lo screensaver. Prova alcuni di quelli comunemente usati per vedere quale è.


Se si desidera impedire il blocco automatico dello schermo durante la riproduzione video , un modo comune è utilizzare la funzione "angoli" di xautolock:

xautolock -corners 000- -cornersize 30

Con il comando sopra, se si posiziona il cursore del mouse nell'angolo in basso a destra dello schermo (entro un raggio di 30px), il blocco automatico verrà temporaneamente disabilitato.


Un'altra cosa da provare è l' -resetsaveropzione:

xautolock -resetsaver

O l' -detectsleepopzione:

xautolock -detectsleep

Buoni consigli, grazie! Sono a conoscenza del mio lettore video (VLC) che disabilita il blocco dello schermo da molti anni, ma onestamente questo problema è ormai così lontano che non riesco a ricordare se la mia mente si fosse semplicemente oscurata su questo fatto. Comunque ho smesso di usare xautolock, quindi la domanda è un po 'discutibile ora. Contrassegnare come accettato la risposta più utile finora. Se qualcuno ha lo stesso identico problema, posso eliminare questa domanda per evitare un duplicato.
l0b0
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.