$ 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
.
.xinitrc
: я переключился на--user
служебный файл, и это больше не проблема ...stop-screensaver=no
к~/.mpv/config
. Конечно, это означает, что вы должны вручную отключить блокировку при воспроизведении видео с mpv.Ответы:
Для меня процесс xautolock все еще работал в фоновом режиме, но он не слушал никаких
xautolock -locknow
команд. Как отметил @jrm, приложение должно быть подавление «заставки» . Для нас обоих это было связано с тем, что mpv (видеоплеер) отключил заставку.Для mpv исправление заключается в добавлении следующего к
~/.config/mpv/config
или~/.mpv/config
:Если вы не используете mpv, это может быть другое приложение, отключающее заставку. Попробуйте некоторые часто используемые, чтобы увидеть, какой это.
Если вы хотите предотвратить автоматическую блокировку экрана во время воспроизведения видео , одним из распространенных способов является использование функции «углов» в xautolock:
С помощью приведенной выше команды, если вы поместите курсор мыши в нижний правый угол экрана (в радиусе 30 пикселей), автоматическая блокировка будет временно отключена.
Еще одна вещь, чтобы попробовать это
-resetsaver
вариант:Или
-detectsleep
вариант:источник
xautolock
, поэтому вопрос сейчас немного спорный. Отметить как принятый как самый полезный ответ до сих пор. Если у кого-то есть точно такая же проблема, я могу удалить этот вопрос, чтобы избежать дублирования.