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

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

xautolockesta claramente corriendo:

$ 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 intentoCiérralo:

$ xautolock -locknow
Could not locate a running xautolock.

Si hago girar 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 tanto en mi computadora de escritorio como en mi computadora portátil. Tenga en cuenta que al menos la primera vez después del bloqueo del arranque funciona bien. Sólo después de algún momento o evento desconocido comienza a fallar.


Tengonopodido reproducir esto de forma fiable. Es decir, probé los siguientes enfoques en mi computadora portátil y en ambos casos elatajo/comando del salvapantallasen realidad bloquea el escritorio después:

  1. Cerrar la tapa
  2. Espere 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 deEnter

y

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

Seguimiento del código:

  1. La línea que imprime el mensaje de error.:error1 ("Could not locate a running %s.\n", progName);
  2. Eso pasasi messageToSendes verdadytype != XA_INTEGER
  3. Parece quetypeEstá establecidoen el siguiente comunicado:

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

¿Significa esto que la xautolockdetección del funcionamiento puede depender delventanaque esta enfocado? También me pregunto si esta llamada podría estar relacionada con esto.error conocido:

  1. Las opciones -disable, -enable, -toggle, -exit, -locknow, -unlocknow y -restart dependen del acceso al servidor X para realizar su trabajo. Esto implica que se suspenderán en caso de que alguna otra aplicación se haya apoderado del servidor.

¿Es posible que xautolockentre en conflicto con xss-lockambos que están usando slock? Además de la xautolocklínea de arriba también tengo estolínea en .xprofile:

xss-lock slock &

Dado que ambos xautolockpueden xss-lockllamar slock, sospecho que el problema es más o menos así:

Como xss-lockpuedo detectar la suspensión de la computadora portátil, me gustaría usarlo en lugar de xautolock, pero parece que no puedo xss-locktrabajar con él notify-send.

Respuesta1

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

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

stop-screensaver=no

Si no utiliza mpv, es posible que sea otra aplicación la que deshabilite el protector de pantalla. Pruebe algunos de los que se utilizan habitualmente para ver cuál es.


Si quieresevitar el bloqueo automático de la pantalla durante la reproducción de vídeo, una forma común es utilizar la función "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 px), 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

Respuesta2

Es posible que pueda utilizarlo xdg-screensaver lockincluso cuando xautolock -locknowno esté funcionando.

información relacionada