
$ 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, xautolock
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?
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:
- 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 ein, gefolgt vonEnter
Und
- Sperren des Desktops
- Dieselben Schritte wie oben
Ablaufverfolgung des Codes:
- Die Zeile, die die Fehlermeldung ausgibt:
error1 ("Could not locate a running %s.\n", progName);
- Das passiertwenn
messageToSend
es wahr istUndtype != XA_INTEGER
Es sieht aus wie
type
ist eingestelltin der folgenden Anweisung:(void) XGetWindowProperty (d, root, semaphore, 0L, 2L, False, AnyPropertyType, &type, &format, &nofItems, &after, (unsigned char**) &contents);
Bedeutet dies, dass die xautolock
Erkennung des Laufens davon abhängen kann,Fensterdas konzentriert ist? Ich frage mich auch, ob dieser Anruf damit zusammenhängen könntebekannter Fehler:
- 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 xautolock
Konflikten mit kommt xss-lock
, obwohl beide verwenden slock
? Zusätzlich zu der xautolock
Zeile oben habe ich auch diesZeile in .xprofile:
xss-lock slock &
Da sowohl xautolock
als auch xss-lock
aufrufen können slock
, vermute ich, dass das Problem ungefähr so aussieht:
xautolock
slock
wird nach 10 Minuten Inaktivität ausgeführt .xss-lock
Auchslock
versucht nach 10 Minuten zu laufen:$ xset q | grep --after-context=2 --line-regexp --fixed-strings 'Screen Saver:' Screen Saver: prefer blanking: yes allow exposures: yes timeout: 600 cycle: 600
- Tatsächlich wird nur ein
slock
Client erzeugt. xss-lock
tötet das Falscheslock
, wasxautolock
zum Absturz oder zur Aufgabe führt.
Da xss-lock
es den Ruhezustand des Laptops erkennen kann, würde ich es gerne anstelle von verwenden xautolock
, aber es scheint nicht xss-lock
mit zum Laufen zu kommen notify-send
.
Antwort1
Bei mir lief der xautolock-Prozess noch im Hintergrund, aber er hörte auf keine xautolock -locknow
Befehle. 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/config
oder 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 -resetsaver
Option ausprobieren:
xautolock -resetsaver
Oder die -detectsleep
Option:
xautolock -detectsleep
Antwort2
Möglicherweise können Sie es verwenden, xdg-screensaver lock
auch wenn xautolock -locknow
es nicht funktioniert.