Linux: XScreenSaver не гасит подсветку монитора
Начиная с какого-то обновления системы у меня перестал выключаться монитор. Xscreensaver настроен в режим “только пустой экран” и на вкладке энергосбережения выставлен флажок “быстрое отключение питания в режиме пустого экрана”.
Никакими комбинациями опций нельзя было заставить его гаснуть нормально.
Вдобавок к этому я использую xss-lock чтобы при открытии крышки не было момента когда выдно содержимое экрана. Подробнее можно почитать в похожем багрепорте для gnome-screensaver (проблема имеет одни и те же корни у всех вариаций скринсейверов).
Проблема выглядит так:
- если активировать блокировку через консоль
xscreensaver-command -lock
то все работает как надо и экран гаснет;
- если активировать блокировку через хоткеи lxde, то после активации на долю секунды виден рабочий стол и после этого черный экран с активной подсветкой.
Конечно же надо читать логи.
Прибиваем активного хранителя и стартуем verbose-mode.
$ killall xscreensaver
$ xscreensaver -no-splash -v
После этого можно пытаться заблокировать экран из консоли и с клавиатуры. Смотрим.
Блокировка с консоли
xscreensaver: 20:03:18: LOCK ClientMessage received; activating and locking.
xscreensaver: 20:03:19: 0: locked mode switching.
xscreensaver: 20:03:19: user is idle (ClientMessage)
xscreensaver: 20:03:19: blanking screen at Fri May 3 20:03:19 2019.
xscreensaver: 20:03:19: mouse is on screen 1 of 2
xscreensaver: 20:03:19: 1: grabbing keyboard on 0x16a... GrabSuccess.
xscreensaver: 20:03:19: 1: grabbing mouse on 0x16a... GrabSuccess.
xscreensaver: 20:03:19: LOCK ClientMessage received while already locked.
xscreensaver: 20:03:33: user is active (keyboard activity)
xscreensaver: 20:03:33: pam_start ("xscreensaver", "penguin", ...) ==> 0 (Succes
s)
...
Блокировка с хоткея
xscreensaver: 20:01:46: LOCK ClientMessage received; activating and locking.
xscreensaver: 20:01:46: 0: locked mode switching.
xscreensaver: 20:01:46: user is idle (ClientMessage)
xscreensaver: 20:01:46: blanking screen at Fri May 3 20:01:46 2019.
xscreensaver: 20:01:46: mouse is on screen 1 of 2
xscreensaver: 20:01:46: 1: grabbing keyboard on 0x16a... GrabSuccess.
xscreensaver: 20:01:46: 1: grabbing mouse on 0x16a... GrabSuccess.
xscreensaver: 20:01:48: DPMSForceLevel(dpy, DPMSModeOff) did not change monitor power state.
xscreensaver: 20:01:48: LOCK ClientMessage received while already locked.
xscreensaver: 20:02:05: user is active (keyboard activity)
xscreensaver: 20:02:05: pam_start ("xscreensaver", "penguin", ...) ==> 0 (Success)
...
Ага. Во втором случае у нас почему-то не смог выключиться монитор.
В интернетах ответа я не нашел, но предполагается, что хоткей передается дальше в активированный скринсейвер.
Поэтому я просто модифицировал команду, которую вызываю с клавиатуры добавив sleep 0.1. Это помогло. Вероятно значение слипа вам придется выбрать самостоятельно. На одной из машин этот фикс у меня сработал только при задержке в 0.5.
Категории: HowTo