Dlaczego blokowanie pulpitu przestaje działać po pewnym czasie?


14

xautolockwyraźnie działa :

$ 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:

  1. Zamknij pokrywę
  2. Poczekaj, aż komputer przejdzie w stan hibernacji
  3. Otwórz pokrywkę
  4. wciśnij przycisk zasilania
  5. Podaj hasło logowania, a następnie Enter

i

  1. Zablokuj pulpit
  2. Te same kroki jak powyżej

Śledzenie kodu:

  1. Linia, która wypisuje komunikat o błędzie :error1 ("Could not locate a running %s.\n", progName);
  2. Dzieje się tak, jeśli messageToSendjest to prawdą itype != XA_INTEGER
  3. Wygląda na to, że typejest 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 xautolockwykrycie 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 :

  1. 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 xautolockkonflikty xss-lock, z których oba korzystają slock? Oprócz xautolockpowyższej linii mam również tę linię w pliku .xprofile :

xss-lock slock &

Ponieważ zarówno xautolocki xss-lockmoże wywołać slock, mam podejrzenie, że problem wygląda mniej więcej tak:

Ponieważ xss-lockmogę wykryć sen na laptopie, chciałbym go użyć zamiast tego xautolock, ale wydaje się, że nie mogę xss-lockpracować notify-send.


Z jakiego unixa korzystasz?
kasperd

Występuje ten sam problem. Nie zagłębiłem się w to zbyt głęboko, ale chciałbym również poznać odpowiedź.
HalosGhost,

Jak to zaczynasz? Niedawno znalazłem to samo podczas uruchamiania .xinitrc: przełączyłem się na --userplik usługi i nie stanowi to już problemu ...
jasonwryan

1
Odtwarzanie wideo za pomocą mpv (ale nie mplayer) powoduje dla mnie problem. Obaj gracze mają puste konfiguracje.
jrm

1
Mniej niż optymalne obejście tego wyzwalacza polega na dodaniu stop-screensaver=nodo niego ~/.mpv/config. Oczywiście oznacza to, że musisz ręcznie wyłączyć blokowanie podczas odtwarzania filmów w MPV.
jrm

Odpowiedzi:


5

Dla mnie proces xautolock nadal działał w tle, ale nie słuchał żadnych xautolock -locknowpoleceń. 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/configlub ~/.mpv/config:

stop-screensaver=no

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:

xautolock -corners 000- -cornersize 30

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 -resetsaveropcja:

xautolock -resetsaver

Lub -detectsleepopcja:

xautolock -detectsleep

Dobre wskazówki, dzięki! Byłem świadomy tego, że mój odtwarzacz wideo (VLC) wyłącza blokowanie ekranu od wielu lat, ale szczerze mówiąc, ten problem jest już tak dawno, że nie mogę sobie przypomnieć, czy mój umysł po prostu zgasł na ten fakt. W każdym razie przestałem używać 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.
l0b0
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.