¿Por qué el bloqueo de escritorio deja de funcionar después de un tiempo?

14

xautolockclaramente se ejecuta :

$ 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

Sin embargo, cuando trato de bloquearlo :

$ xautolock -locknow
Could not locate a running xautolock.

Si giro otro xautolockfunciona:

$ 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

¿Lo que da?

Hasta ahora he visto esto en mi computadora de escritorio y portátil. Tenga en cuenta que al menos la primera vez después del bloqueo de arranque funciona bien. Es solo después de un tiempo o evento desconocido que comienza a fallar.


He no podido reproducir esta manera confiable. Es decir, he probado los siguientes enfoques en mi computadora portátil y en ambos casos el atajo / comando del protector de pantalla bloquea el escritorio después:

  1. Cerrar la tapa
  2. Espera a que la computadora hiberne
  3. Abre la tapa
  4. presiona el boton de poder
  5. Proporcione la contraseña de inicio de sesión seguida de Enter

y

  1. Bloquear el escritorio
  2. Los mismos pasos que arriba

Rastreando el código:

  1. La línea que imprime el mensaje de error :error1 ("Could not locate a running %s.\n", progName);
  2. Eso sucede si messageToSendes verdad ytype != XA_INTEGER
  3. Parece que typese establece en la siguiente declaración:

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

¿Esto significa que si xautolockse detecta la ejecución puede depender de la ventana que está enfocada? También me pregunto si esta llamada podría estar relacionada con este error conocido :

  1. Las opciones -disable, -enable, -toggle, -exit, -locknow, -unlocknow y -retart dependen del acceso al servidor X para hacer su trabajo. Esto implica que se suspenderán en caso de que alguna otra aplicación haya tomado el servidor por sí mismo.

¿Es posible que entre en xautolockconflicto con los xss-lockdos que están usando slock? Además de la xautolocklínea anterior, también tengo esta línea en .xprofile :

xss-lock slock &

Dado que tanto xautolocky xss-lockse puede llamar slock, estoy sospechando que el problema es algo como esto:

Dado que xss-lockpuede detectar la suspensión del portátil, me gustaría usarlo en lugar de hacerlo xautolock, pero parece que no puedo hacer que xss-lockfuncione notify-send.

l0b0
fuente
¿Qué unix estás usando?
kasperd
Me encuentro con este mismo problema. No lo he investigado demasiado, pero me encantaría saber una respuesta también.
HalosGhost
¿Cómo lo estás comenzando? Encontré lo mismo recientemente al iniciarlo .xinitrc: cambié a un --userarchivo de servicio y ya no es un problema ...
jasonwryan
1
Reproducir un video con mpv (pero no mplayer) me provoca el problema. Ambos jugadores tienen configuraciones vacías.
jrm
1
Una solución menos-que-óptima para este disparador es agregar stop-screensaver=noa ~/.mpv/config. Por supuesto, esto significa que debe deshabilitar manualmente el bloqueo al reproducir videos con mpv.
jrm

Respuestas:

5

Para mí, el proceso xautolock todavía se estaba ejecutando en segundo plano, pero no estaba escuchando ningún xautolock -locknowcomando. Como mencionó @jrm, una aplicación debe estar suprimiendo el "protector de pantalla" . Para los dos, esto se debió a que mpv (reproductor de video) deshabilitó el protector de pantalla.

Para MPV, la solución es añadir lo siguiente a ~/.config/mpv/configo ~/.mpv/config:

stop-screensaver=no

Si no usa mpv, podría ser otra aplicación que deshabilite el protector de pantalla. Pruebe algunos de los más utilizados para ver cuál es.


Si desea evitar el bloqueo automático de la pantalla durante la reproducción de video , una forma común es usar la función de "esquinas" de xautolock:

xautolock -corners 000- -cornersize 30

Con el comando anterior, si coloca el cursor del mouse en la esquina inferior derecha de la pantalla (dentro de un radio de 30 píxeles), el bloqueo automático se desactivará temporalmente.


Una cosa más para probar es la -resetsaveropción:

xautolock -resetsaver

O la -detectsleepopción:

xautolock -detectsleep
Mateen Ulhaq
fuente
Buenos consejos, gracias! He estado consciente de que mi reproductor de video (VLC) deshabilitó el bloqueo de pantalla durante muchos años, pero honestamente, este problema ahora está tan atrás que no puedo recordar si mi mente simplemente había dejado en blanco este hecho. De todos modos, he dejado de usar xautolock, por lo que la pregunta es un poco discutible ahora. Marcado como aceptado como la respuesta más útil hasta ahora. Si alguien tiene exactamente el mismo problema, puedo eliminar esta pregunta para evitar un duplicado.
l0b0