Чому блокування робочого столу через деякий час припиняє роботу?


14

xautolockчітко працює :

$ 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

Однак, коли я намагаюся його заблокувати :

$ xautolock -locknow
Could not locate a running xautolock.

Якщо я закручую іншого, xautolockце працює:

$ 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

Що дає?

До цього часу я бачив це як на своєму робочому столі, так і на ноутбуці. Зверніть увагу, що принаймні перший раз після блокування завантаження працює чудово. Лише після невідомого часу чи події він починає провалюватися.


Я не зміг надійно відтворити це. Тобто, я спробував наступні підходи на своєму ноутбуці, і в обох випадках клавіатурне скорочення / команда заставки фактично блокує робочий стіл після цього:

  1. Закрийте кришку
  2. Зачекайте, поки комп’ютер сплять
  3. Відкрийте кришку
  4. Натисніть кнопку живлення
  5. Укажіть пароль для входу, за яким слід Enter

і

  1. Блокуйте робочий стіл
  2. Ті ж кроки, що і вище

Відстеження коду:

  1. Рядок, який друкує повідомлення про помилку :error1 ("Could not locate a running %s.\n", progName);
  2. Це станеться, якщо messageToSendє правдою іtype != XA_INTEGER
  3. Схоже, typeце встановлено в наступному викладі:

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

Чи означає це, що xautolockвиявлення запуску може залежати від фокусованого вікна ? Мені також цікаво, чи може цей дзвінок пов’язаний з цією відомою помилкою :

  1. Параметри -disable, -enable, -toggle, -exit, -locknow, -unlocknow та -restart залежать від доступу до сервера X для виконання своєї роботи. Це означає, що вони будуть призупинені, якщо якась інша програма захопить сервер все для себе.

Чи можливо xautolockконфлікти xss-lock, з якими обидва користуються slock? На додаток до xautolockрядка вище, я також маю цей рядок у .xprofile :

xss-lock slock &

Оскільки обидва можуть xautolockі xss-lockдзвонити slock, я підозрюю, що проблема має щось подібне:

Оскільки я xss-lockможу виявити сон ноутбука, я хотів би використовувати його замість xautolock, але я не можу зробити з ним xss-lockроботу notify-send.


Який ви використовуєте Unix?
kasperd

Я стикаюся з цим самим питанням. Я не надто глибоко заглядав у це, але хотів би також дізнатися відповідь.
HalosGhost

Як ви це починаєте? Нещодавно я виявив те саме, коли запускав його .xinitrc: я перейшов до --userсервісного файлу, і це вже не проблема ...
jasonwryan

1
Відтворення відео з mpv (але не mplayer) викликає проблему для мене. Обидва гравці мають порожні конфігурації.
jrm

1
Менш ніж оптимальне рішення цього тригера є додавання stop-screensaver=noдо ~/.mpv/config. Звичайно, це означає, що вам доведеться відключити блокування вручну під час відтворення відео з mpv.
jrm

Відповіді:


5

Для мене процес xautolock все ще працював у фоновому режимі, але він не слухав жодної xautolock -locknowкоманди. Як згадував @jrm, програма повинна придушувати "заставку" . Для нас обох це було пов’язано з відключенням заставки mpv (відеоплеєр).

Для mpv виправлення полягає в тому, щоб додати наступне до ~/.config/mpv/configабо ~/.mpv/config:

stop-screensaver=no

Якщо ви не використовуєте mpv, це може бути інша програма, дезактивація заставки. Спробуйте кілька часто використовуваних, щоб побачити, що це таке.


Якщо ви хочете запобігти автоматичному блокуванню екрана під час відтворення відео , одним із поширених способів є використання функції «кутів» xautolock:

xautolock -corners 000- -cornersize 30

За допомогою наведеної вище команди, якщо ви кладете курсор миші в нижній правий кут екрана (в радіусі 30 пікселів), автоматичне блокування буде тимчасово вимкнено.


Ще одна річ, щоб спробувати це -resetsaverваріант:

xautolock -resetsaver

Або -detectsleepваріант:

xautolock -detectsleep

Гарні поради, дякую! Мені було відомо про те, що моє відеоплеєр (VLC) відключає блокування екрана вже багато років, але, чесно кажучи, ця проблема тепер настільки далека, що я не можу згадати, чи мій розум просто затуманив цей факт. У будь-якому разі я перестав використовувати xautolock, тож питання зараз є суперечливим. Позначення як прийняту як найбільш корисну відповідь поки що. Якщо хтось має саме таку проблему, я можу видалити це питання, щоб уникнути дублікату.
l0b0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.