Pourquoi le verrouillage du bureau cesse-t-il de fonctionner après un certain temps?

14

xautolockest clairement en marche :

$ 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

Cependant, lorsque j'essaie de le verrouiller :

$ xautolock -locknow
Could not locate a running xautolock.

Si j'en tourne un autre, xautolockça marche:

$ 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

Ce qui donne?

À ce jour, je l'ai vu sur mon ordinateur de bureau et mon ordinateur portable. Veuillez noter qu'au moins la première fois après le verrouillage du démarrage fonctionne correctement. Ce n'est qu'après un moment ou un événement inconnu qu'il commence à échouer.


Je n'ai pas pu reproduire cela de manière fiable. C'est-à-dire que j'ai essayé les approches suivantes sur mon ordinateur portable et dans les deux cas, le raccourci / la commande d'économiseur d'écran verrouille le bureau par la suite:

  1. Ferme la couverture
  2. Attendez que l'ordinateur hiberne
  3. Ouvrez le couvercle
  4. appuyez sur le bouton d'allumage
  5. Fournissez le mot de passe de connexion suivi de Enter

et

  1. Verrouillez le bureau
  2. Mêmes étapes que ci-dessus

Traçage du code:

  1. La ligne qui imprime le message d'erreur :error1 ("Could not locate a running %s.\n", progName);
  2. Cela se produit si messageToSendest véridique ettype != XA_INTEGER
  3. Il semble être typedéfini dans l'instruction suivante:

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

Est-ce à dire que la xautolockdétection de l'exécution peut dépendre de la fenêtre ciblée? Je me demande également si cet appel pourrait être lié à ce bug connu :

  1. Les options -disable, -enable, -toggle, -exit, -locknow, -unlocknow et -restart dépendent de l'accès au serveur X pour faire leur travail. Cela implique qu'ils seront suspendus au cas où une autre application aurait saisi le serveur pour lui-même.

Est-il possible que des xautolockconflits avec les xss-lockdeux utilisent slock? En plus de la xautolockligne ci-dessus, j'ai également cette ligne en .xprofile :

xss-lock slock &

Puisque les deux xautolocket xss-lockpeuvent appeler slock, je soupçonne que le problème va quelque chose comme ceci:

Comme xss-lockje peux détecter le sommeil d'un ordinateur portable, j'aimerais l'utiliser à la place xautolock, mais je n'arrive pas à xss-locktravailler avec notify-send.

l0b0
la source
Quel Unix utilisez-vous?
kasperd
Je rencontre ce même problème. Je n'y suis pas allé trop profondément, mais j'aimerais aussi connaître une réponse.
HalosGhost
Comment commencez-vous? J'ai trouvé la même chose récemment en le démarrant .xinitrc: je suis passé à un --userfichier de service et ce n'est plus un problème ...
jasonwryan
1
La lecture d'une vidéo avec mpv (mais pas mplayer) déclenche le problème pour moi. Les deux joueurs ont des configurations vides.
jrm
1
Une solution de contournement moins qu'optimale pour ce déclencheur est d'ajouter stop-screensaver=noà ~/.mpv/config. Bien sûr, cela signifie que vous devez désactiver manuellement le verrouillage lors de la lecture de vidéos avec mpv.
jrm

Réponses:

5

Pour moi, le processus xautolock était toujours en cours d'exécution en arrière-plan, mais il n'écoutait aucune xautolock -locknowcommande. Comme mentionné par @jrm, une application doit supprimer "l'économiseur d'écran" . Pour nous deux, cela était dû au fait que mpv (lecteur vidéo) avait désactivé l'économiseur d'écran.

Pour mpv, le correctif consiste à ajouter ce qui suit à ~/.config/mpv/configou ~/.mpv/config:

stop-screensaver=no

Si vous n'utilisez pas mpv, il peut s'agir d'une autre application désactivant l'économiseur d'écran. Essayez quelques-uns couramment utilisés pour voir lequel il s'agit.


Si vous souhaitez empêcher le verrouillage automatique de l'écran pendant la lecture vidéo , une façon courante consiste à utiliser la fonction "coins" de xautolock:

xautolock -corners 000- -cornersize 30

Avec la commande ci-dessus, si vous placez le curseur de votre souris dans le coin inférieur droit de l'écran (dans un rayon de 30 pixels), le verrouillage automatique sera temporairement désactivé.


Une autre chose à essayer est l' -resetsaveroption:

xautolock -resetsaver

Ou l' -detectsleepoption:

xautolock -detectsleep
Mateen Ulhaq
la source
De bons conseils, merci! Je suis au courant que mon lecteur vidéo (VLC) a désactivé le verrouillage de l'écran pendant de nombreuses années, mais honnêtement, ce problème est maintenant si loin que je ne me souviens pas si mon esprit avait simplement effacé ce fait. Quoi qu'il en soit, j'ai cessé d'utiliser xautolock, donc la question est un peu théorique maintenant. Marquage comme accepté comme la réponse la plus utile à ce jour. Si quelqu'un a exactement le même problème, je peux supprimer cette question pour éviter un doublon.
l0b0