Warum funktioniert die Desktop-Sperre nach einiger Zeit nicht mehr?

14

xautolockläuft eindeutig :

$ 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

Wenn ich jedoch versuche, es zu sperren :

$ xautolock -locknow
Could not locate a running xautolock.

Wenn ich einen anderen xautolockdrücke, funktioniert es:

$ 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

Was gibt?

Inzwischen habe ich dies sowohl auf meinem Desktop als auch auf meinem Laptop gesehen. Bitte beachten Sie, dass mindestens das erste Mal nach dem Sperren des Starts einwandfrei funktioniert. Es ist nur nach einer unbekannten Zeit oder einem unbekannten Ereignis, dass es zu scheitern beginnt.


Ich habe nicht gelungen, diese zuverlässig zu reproduzieren. Das heißt, ich habe die folgenden Ansätze auf meinem Laptop ausprobiert und in beiden Fällen sperrt die Bildschirmschoner-Verknüpfung / der Befehl den Desktop anschließend tatsächlich:

  1. Mach den Deckel zu
  2. Warten Sie, bis der Computer in den Ruhezustand wechselt
  3. Öffne den Deckel
  4. Drücke den Power Knopf
  5. Geben Sie das Anmeldekennwort gefolgt von ein Enter

und

  1. Sperren Sie den Desktop
  2. Gleiche Schritte wie oben

Verfolgung des Codes:

  1. Die Zeile, in der die Fehlermeldung ausgegeben wird :error1 ("Could not locate a running %s.\n", progName);
  2. Das passiert, wenn messageToSendes wahr ist undtype != XA_INTEGER
  3. Es sieht aus wie typefestgelegt in der folgenden Aussage:

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

Bedeutet dies, dass es von dem fokussierten Fensterxautolock abhängen kann , ob der Lauf erkannt wird? Ich frage mich auch, ob dieser Aufruf mit diesem bekannten Fehler zusammenhängt :

  1. Die Optionen -disable, -enable, -toggle, -exit, -locknow, -unlocknow und -restart hängen vom Zugriff auf den X-Server ab, um ihre Arbeit auszuführen. Dies impliziert, dass sie angehalten werden, falls eine andere Anwendung den Server für sich beansprucht hat.

Ist es möglich, dass xautolockKonflikte mit denen xss-lockbeide verwenden slock? Zusätzlich zu der xautolockobigen Zeile habe ich auch diese Zeile in .xprofile :

xss-lock slock &

Da beide anrufen xautolockund xss-lockkönnen slock, vermute ich, dass das Problem in etwa so abläuft:

Da xss-lockich den Laptop-Schlaf erkennen kann, würde ich ihn gerne verwenden xautolock, aber ich kann scheinbar nicht damit xss-lockarbeiten notify-send.

l0b0
quelle
Welches Unix benutzt du?
Kasperd
Ich stoße auf dasselbe Problem. Ich habe nicht zu tief hineingeschaut, aber ich würde auch gerne eine Antwort wissen.
HalosGhost
Wie fängst du an? Ich habe vor kurzem das Gleiche gefunden, als .xinitrcich --useres
gestartet habe
1
Das Abspielen eines Videos mit mpv (aber nicht mit mplayer) löst das Problem für mich aus. Beide Spieler haben leere Konfigurationen.
27.
1
Eine weniger als optimale Problemumgehung für diesen Auslöser ist das Hinzufügen stop-screensaver=nozu ~/.mpv/config. Dies bedeutet natürlich, dass Sie die Sperre manuell deaktivieren müssen, wenn Sie Videos mit mpv abspielen.
27.

Antworten:

5

Für mich lief der xautolock-Prozess noch im Hintergrund, hörte aber keine xautolock -locknowBefehle ab. Wie von @jrm erwähnt, muss eine Anwendung den "Bildschirmschoner" unterdrücken . Für uns beide war dies darauf zurückzuführen, dass der Bildschirmschoner durch mpv (Video Player) deaktiviert wurde.

Für mpv besteht die Korrektur darin, Folgendes zu ~/.config/mpv/configoder hinzuzufügen ~/.mpv/config:

stop-screensaver=no

Wenn Sie mpv nicht verwenden, ist dies möglicherweise eine andere Anwendung, die den Bildschirmschoner deaktiviert. Probieren Sie einige häufig verwendete aus, um herauszufinden, um welche es sich handelt.


Wenn Sie die automatische Bildschirmsperre während der Videowiedergabe verhindern möchten, können Sie häufig die Funktion "Ecken" von xautolock verwenden:

xautolock -corners 000- -cornersize 30

Wenn Sie mit dem obigen Befehl den Mauszeiger in die untere rechte Ecke des Bildschirms bewegen (innerhalb eines Radius von 30 Pixel), wird die automatische Sperre vorübergehend deaktiviert.


Eine weitere -resetsaverOption ist:

xautolock -resetsaver

Oder die -detectsleepOption:

xautolock -detectsleep
Mateen Ulhaq
quelle
Gute Tipps, danke! Ich bin mir seit vielen Jahren bewusst, dass mein Videoplayer (VLC) die Bildschirmsperre deaktiviert, aber ehrlich gesagt ist dieses Problem jetzt so weit zurück, dass ich mich nicht erinnern kann, ob ich mich einfach über diese Tatsache hinweggesetzt habe. Wie auch immer, ich habe aufgehört zu benutzen xautolock, daher ist die Frage jetzt etwas umstritten. Als die bisher nützlichste Antwort als akzeptiert markieren. Wenn jemand genau das gleiche Problem hat, kann ich diese Frage löschen, um ein Duplikat zu vermeiden.
l0b0