$ 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 xautolock
drü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:
- Mach den Deckel zu
- Warten Sie, bis der Computer in den Ruhezustand wechselt
- Öffne den Deckel
- Drücke den Power Knopf
- Geben Sie das Anmeldekennwort gefolgt von ein Enter
und
- Sperren Sie den Desktop
- Gleiche Schritte wie oben
Verfolgung des Codes:
- Die Zeile, in der die Fehlermeldung ausgegeben wird :
error1 ("Could not locate a running %s.\n", progName);
- Das passiert, wenn
messageToSend
es wahr ist undtype != XA_INTEGER
Es sieht aus wie
type
festgelegt 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 :
- 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 xautolock
Konflikte mit denen xss-lock
beide verwenden slock
? Zusätzlich zu der xautolock
obigen Zeile habe ich auch diese Zeile in .xprofile :
xss-lock slock &
Da beide anrufen xautolock
und xss-lock
können slock
, vermute ich, dass das Problem in etwa so abläuft:
xautolock
Läuftslock
nach 10 Minuten Inaktivität.xss-lock
auch versucht zu laufenslock
nach 10 Minuten :$ xset q | grep --after-context=2 --line-regexp --fixed-strings 'Screen Saver:' Screen Saver: prefer blanking: yes allow exposures: yes timeout: 600 cycle: 600
- Es
slock
wird tatsächlich nur ein Client erzeugt. xss-lock
tötet das Falscheslock
, wasxautolock
zum Absturz oder Aufgeben führt.
Da xss-lock
ich den Laptop-Schlaf erkennen kann, würde ich ihn gerne verwenden xautolock
, aber ich kann scheinbar nicht damit xss-lock
arbeiten notify-send
.
quelle
.xinitrc
ich--user
esstop-screensaver=no
zu~/.mpv/config
. Dies bedeutet natürlich, dass Sie die Sperre manuell deaktivieren müssen, wenn Sie Videos mit mpv abspielen.Antworten:
Für mich lief der xautolock-Prozess noch im Hintergrund, hörte aber keine
xautolock -locknow
Befehle 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/config
oder hinzuzufügen~/.mpv/config
: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:
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
-resetsaver
Option ist:Oder die
-detectsleep
Option:quelle
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.