
$ 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
Что дает?
К настоящему моменту я видел это и на моем настольном компьютере, и на ноутбуке. Обратите внимание, что по крайней мере первое время после блокировки загрузки работает нормально. Только после какого-то неизвестного времени или события он начинает давать сбои.
У меня естьнетсмог воспроизвести это надежно. То есть, я попробовал следующие подходы на моем ноутбуке и в обоих случаяхсочетание клавиш/команда для заставкифактически блокирует рабочий стол после этого:
- Закройте крышку.
- Подождите, пока компьютер перейдет в режим гибернации.
- Откройте крышку.
- Нажмите кнопку питания.
- Введите пароль для входа, а затемEnter
и
- Заблокировать рабочий стол
- Те же шаги, что и выше
Отслеживание кода:
- Строка, которая выводит сообщение об ошибке:
error1 ("Could not locate a running %s.\n", progName);
- Что происходитесли
messageToSend
это правдаиtype != XA_INTEGER
Это выглядит как
type
установленв следующем заявлении:(void) XGetWindowProperty (d, root, semaphore, 0L, 2L, False, AnyPropertyType, &type, &format, &nofItems, &after, (unsigned char**) &contents);
Означает ли это, что обнаружение пробега xautolock
может зависеть отокночто сосредоточено? Мне также интересно, может ли этот звонок быть связан с этимизвестная ошибка:
- Параметры -disable, -enable, -toggle, -exit, -locknow, -unlocknow и -restart зависят от доступа к X-серверу для выполнения своей работы. Это означает, что они будут приостановлены в случае, если какое-то другое приложение захватит сервер полностью для себя.
Возможно ли, что xautolock
конфликтует с xss-lock
, оба из которых используют slock
? В дополнение к xautolock
строке выше у меня также есть этострока в .xprofile:
xss-lock slock &
Поскольку и xautolock
и xss-lock
могут вызывать slock
, я подозреваю, что проблема заключается в следующем:
xautolock
запускаетсяslock
после 10 минут бездействия.xss-lock
такжепытается бежатьslock
через 10 минут:$ xset q | grep --after-context=2 --line-regexp --fixed-strings 'Screen Saver:' Screen Saver: prefer blanking: yes allow exposures: yes timeout: 600 cycle: 600
slock
Фактически создается только один клиент.xss-lock
убивает неправильноеslock
, которое заставляетxautolock
падать или сдаваться.
Так как xss-lock
я могу обнаружить спящий режим ноутбука, я бы хотел использовать его вместо xautolock
, но, похоже, не могу заставить его xss-lock
работать с notify-send
.
решение1
Для меня процесс xautolock все еще работал в фоновом режиме, но не слушал никаких xautolock -locknow
команд. Как сказал @jrm,приложение должно подавлять «заставку». У нас обоих это произошло из-за того, что mpv (видеоплеер) отключил заставку.
Для mpv исправление заключается в добавлении следующего в ~/.config/mpv/config
or ~/.mpv/config
:
stop-screensaver=no
Если вы не используете mpv, это может быть другое приложение, отключающее заставку. Попробуйте некоторые из наиболее часто используемых, чтобы узнать, какое из них это.
Если вы хотитепредотвратить автоматическую блокировку экрана во время воспроизведения видео, одним из распространенных способов является использование функции «углов» xautolock:
xautolock -corners 000- -cornersize 30
Если с помощью приведенной выше команды поместить курсор мыши в правый нижний угол экрана (в радиусе 30 пикселей), автоматическая блокировка будет временно отключена.
Еще один вариант, который стоит попробовать -resetsaver
:
xautolock -resetsaver
Или -detectsleep
вариант:
xautolock -detectsleep
решение2
Вы можете использовать его xdg-screensaver lock
даже тогда, когда xautolock -locknow
он не работает.