$ 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
Jednak gdy próbuję to zablokować :
$ xautolock -locknow
Could not locate a running xautolock.
Jeśli uruchomię inny xautolock
, działa:
$ 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
Co daje?
Do tej pory widziałem to zarówno na komputerze stacjonarnym, jak i laptopie. Należy pamiętać, że przynajmniej pierwszy raz po zablokowaniu rozruchu działa dobrze. Dopiero po jakimś nieznanym czasie lub zdarzeniu zaczyna się zawodzić.
I nie był w stanie odtworzyć ten sposób wiarygodny. Oznacza to, że wypróbowałem następujące rozwiązania na moim laptopie iw obu przypadkach skrót / polecenie wygaszacza ekranu faktycznie blokuje pulpit:
- Zamknij pokrywę
- Poczekaj, aż komputer przejdzie w stan hibernacji
- Otwórz pokrywkę
- wciśnij przycisk zasilania
- Podaj hasło logowania, a następnie Enter
i
- Zablokuj pulpit
- Te same kroki jak powyżej
Śledzenie kodu:
- Linia, która wypisuje komunikat o błędzie :
error1 ("Could not locate a running %s.\n", progName);
- Dzieje się tak, jeśli
messageToSend
jest to prawdą itype != XA_INTEGER
Wygląda na to, że
type
jest ustawiony w następującej instrukcji:(void) XGetWindowProperty (d, root, semaphore, 0L, 2L, False, AnyPropertyType, &type, &format, &nofItems, &after, (unsigned char**) &contents);
Czy to oznacza, że xautolock
wykrycie działania może zależeć od skupionego okna ? Zastanawiam się również, czy to wywołanie może być powiązane z tym znanym błędem :
- Opcje -disable, -enable, -toggle, -exit, -locknow, -unlocknow i -restart zależą od dostępu do serwera X do wykonania swojej pracy. Oznacza to, że zostaną zawieszone na wypadek, gdyby jakaś inna aplikacja złapała serwer dla siebie.
Czy to możliwe, że xautolock
konflikty xss-lock
, z których oba korzystają slock
? Oprócz xautolock
powyższej linii mam również tę linię w pliku .xprofile :
xss-lock slock &
Ponieważ zarówno xautolock
i xss-lock
może wywołać slock
, mam podejrzenie, że problem wygląda mniej więcej tak:
xautolock
działaslock
po 10 minutach bezczynności.xss-lock
próbuje także uruchomićslock
po 10 minutach :$ xset q | grep --after-context=2 --line-regexp --fixed-strings 'Screen Saver:' Screen Saver: prefer blanking: yes allow exposures: yes timeout: 600 cycle: 600
- Odradza się tylko jeden
slock
klient. xss-lock
zabija źleslock
, co powodujexautolock
awarię lub poddanie się.
Ponieważ xss-lock
mogę wykryć sen na laptopie, chciałbym go użyć zamiast tego xautolock
, ale wydaje się, że nie mogę xss-lock
pracować notify-send
.
źródło
.xinitrc
: przełączyłem się na--user
plik usługi i nie stanowi to już problemu ...stop-screensaver=no
do niego~/.mpv/config
. Oczywiście oznacza to, że musisz ręcznie wyłączyć blokowanie podczas odtwarzania filmów w MPV.Odpowiedzi:
Dla mnie proces xautolock nadal działał w tle, ale nie słuchał żadnych
xautolock -locknow
poleceń. Jak wspomniano w @jrm, aplikacja musi tłumić „wygaszacz ekranu” . Dla nas obu było to spowodowane wyłączeniem przez mpv (odtwarzacz wideo) wygaszacza ekranu.W przypadku MPV poprawka polega na dodaniu następujących elementów do
~/.config/mpv/config
lub~/.mpv/config
:Jeśli nie korzystasz z MPV, może to być inna aplikacja wyłączająca wygaszacz ekranu. Wypróbuj niektóre często używane, aby zobaczyć, która to jest.
Jeśli chcesz zapobiec automatycznemu blokowaniu ekranu podczas odtwarzania wideo , jednym z powszechnych sposobów jest użycie funkcji „narożników” xautolock:
Za pomocą powyższego polecenia, jeśli umieścisz kursor myszy w prawym dolnym rogu ekranu (w promieniu 30 pikseli), automatyczne blokowanie zostanie tymczasowo wyłączone.
Jeszcze jedną rzeczą do wypróbowania jest
-resetsaver
opcja:Lub
-detectsleep
opcja:źródło
xautolock
, więc pytanie jest teraz trochę dyskusyjne. Oznaczanie jako zaakceptowane jako najbardziej użyteczna jak dotąd odpowiedź. Jeśli ktoś ma dokładnie ten sam problem, mogę usunąć to pytanie, aby uniknąć duplikatu.