Warum funktioniert die Desktopsperre nach einiger Zeit nicht mehr?

Warum funktioniert die Desktopsperre nach einiger Zeit nicht mehr?

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,verschließe es:

$ xautolock -locknow
Could not locate a running xautolock.

Wenn ich ein anderes hochfahre, xautolockfunktioniert 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?

Mittlerweile habe ich dies sowohl auf meinem Desktop als auch auf meinem Laptop gesehen. Bitte beachten Sie, dass die Sperre zumindest beim ersten Mal nach dem Booten einwandfrei funktioniert. Erst nach einer unbekannten Zeit oder einem unbekannten Ereignis beginnt es zu versagen.


Ich habenichtkonnte dies zuverlässig reproduzieren. Das heißt, ich habe die folgenden Ansätze auf meinem Laptop ausprobiert und in beiden Fällen dieBildschirmschoner-Verknüpfung/Befehlsperrt 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 ein, gefolgt vonEnter

Und

  1. Sperren des Desktops
  2. Dieselben Schritte wie oben

Ablaufverfolgung des Codes:

  1. Die Zeile, die die Fehlermeldung ausgibt:error1 ("Could not locate a running %s.\n", progName);
  2. Das passiertwenn messageToSendes wahr istUndtype != XA_INTEGER
  3. Es sieht aus wietypeist eingestelltin der folgenden Anweisung:

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

Bedeutet dies, dass die xautolockErkennung des Laufens davon abhängen kann,Fensterdas konzentriert ist? Ich frage mich auch, ob dieser Anruf damit zusammenhängen könntebekannter Fehler:

  1. Die Optionen -disable, -enable, -toggle, -exit, -locknow, -unlocknow und -restart sind für ihre Arbeit auf den Zugriff auf den X-Server angewiesen. Dies bedeutet, dass sie angehalten werden, falls eine andere Anwendung den Server ganz für sich beansprucht.

Ist es möglich, dass es zu xautolockKonflikten mit kommt xss-lock, obwohl beide verwenden slock? Zusätzlich zu der xautolockZeile oben habe ich auch diesZeile in .xprofile:

xss-lock slock &

Da sowohl xautolockals auch xss-lockaufrufen können slock, vermute ich, dass das Problem ungefähr so ​​aussieht:

Da xss-lockes den Ruhezustand des Laptops erkennen kann, würde ich es gerne anstelle von verwenden xautolock, aber es scheint nicht xss-lockmit zum Laufen zu kommen notify-send.

Antwort1

Bei mir lief der xautolock-Prozess noch im Hintergrund, aber er hörte auf keine xautolock -locknowBefehle. Wie von @jrm erwähnt,eine Anwendung muss den "Bildschirmschoner" unterdrücken. Bei uns beiden lag es daran, dass mpv (Videoplayer) den Bildschirmschoner deaktiviert hatte.

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

stop-screensaver=no

Wenn Sie mpv nicht verwenden, kann es sein, dass eine andere Anwendung den Bildschirmschoner deaktiviert. Probieren Sie einige häufig verwendete Anwendungen aus, um herauszufinden, welche es ist.


Wenn Sie wollenVerhindern der automatischen Bildschirmsperre während der Videowiedergabe, eine gängige Möglichkeit besteht darin, die „Ecken“-Funktion von xautolock zu verwenden:

xautolock -corners 000- -cornersize 30

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


Sie können auch folgende -resetsaverOption ausprobieren:

xautolock -resetsaver

Oder die -detectsleepOption:

xautolock -detectsleep

Antwort2

Möglicherweise können Sie es verwenden, xdg-screensaver lockauch wenn xautolock -locknowes nicht funktioniert.

verwandte Informationen