Linux: XScreenSaver не гасит подсветку монитора

03 May 2019

xscreensaver-settings-1Начиная с какого-то обновления системы у меня перестал выключаться монитор. Xscreensaver настроен в режим “только пустой экран” и на вкладке энергосбережения выставлен флажок “быстрое отключение питания в режиме пустого экрана”.

Никакими комбинациями опций нельзя было заставить его гаснуть нормально.

xscreensaver-settings-2.png

Вдобавок к этому я использую xss-lock чтобы при открытии крышки не было момента когда выдно содержимое экрана. Подробнее можно почитать в похожем багрепорте для gnome-screensaver (проблема имеет одни и те же корни у всех вариаций скринсейверов).

Проблема выглядит так:

Конечно же надо читать логи.

Прибиваем активного хранителя и стартуем 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.

lxde-hotkey.png