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

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

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

xscreensaver-settings-2.png

Вдобавок к этому я использую 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.

lxde-hotkey.png

Категории: HowTo