Display Power Management Signaling (Русский)
DPMS (Display Power Management Signaling, сигналы управления энергопотреблением дисплеев) - это технология, позволяющая управлять питанием монитора, когда компьютер не используется. Время неактивности, по истечении которого монитор уходит в режим энергосбережения, сна или отключается, может быть задано как описано в DPMSSetTimeouts(3). Имейте в виду, что DPMS разрабатывался для ЭЛТ-мониторов, а для ЖК-дисплеев обычно нет разницы между разными режимами экономии энергии.
Настройка DPMS в X
Добавьте следующие строки в /etc/X11/xorg.conf
: в секцию Monitor
:
Option "DPMS" "true"
Добавьте следующие строки в секцию ServerLayout
, измените, как считаете нужным время (в минутах):
Option "StandbyTime" "10" Option "SuspendTime" "20" Option "OffTime" "30"
"OffTime"
не работает, используйте вместо неё затемнение экрана (screen blanking), который оставит монитор включенным, но с чёрной картинкой. В качестве альтернативы установите "blanktime"
в "0"
чтобы отключить screen blanking
Option "BlankTime" "30"
Пример файла /etc/X11/xorg.conf.d/10-monitor.conf
, который может выглядеть примерно так.
Section "Monitor" Identifier "LVDS0" Option "DPMS" "false" EndSection Section "ServerFlags" Option "StandbyTime" "0" Option "SuspendTime" "0" Option "OffTime" "0" Option "BlankTime" "0" EndSection Section "ServerLayout" Identifier "ServerLayout0" EndSection
Отключение DPMS
Так как DPMS обычно включен по умолчанию в большинстве случаев, для его отключение нужно явное действие.
Чтобы полностью отключить DPMS, добавьте в файл /etc/X11/xorg.conf.d/10-monitor.conf
:
Section "Extensions" Option "DPMS" "Disable" EndSection
Изменение настроек DPMS и хранителя экрана с помощью команд
Можно выключить монитор с помощью команды xset из пакета xorg-xset.
Примеры:
Команда | Описание |
---|---|
xset s off | Отключить затемнение экрана (screen blanking) |
xset s 3600 3600 | Изменить время перехода в чёрный экран на 1 час |
xset -dpms | Отключить DPMS |
xset s off -dpms | Отключить DPMS и не уходить в чёрный экран |
xset dpms force off | Немедленно отключить экран |
xset dpms force standby | Перейти в режим standby |
xset dpms force suspend | Перейти в режим suspend |
Для просмотра текущих настроек:
$ xset q
... Screen Saver: prefer blanking: yes allow exposures: yes timeout: 600 cycle: 600 DPMS (Energy Star): Standby: 600 Suspend: 600 Off: 600 DPMS is Enabled Monitor is On
Для изучения всех доступных команд смотрите xset(1).
- XScreenSaver и xfce4-power-manager используют свои собственные настройки DPMS и перекрывают xset. Подробнее смотрите XScreenSaver#DPMS and blanking settings и Xfce#Display blanking.
- При ручном запуске команд вам может понадобиться приписать
sleep 1;
для корректной работы, напримерsleep 1; xset dpms force off
- Команда
xset dpms 0 0 0
, которая устанавливает все таймауты DPMS в ноль, может оказаться более хорошим способом «отключить» DPMS, так как эффект от-dpms
может быть отменён, например, командойxset dpms force off
. - Если прописывание
xset
в xinitrc не работает, пропишите настройки в файле/etc/X11/xorg.conf.d/
. Подробнее смотрите #Настройка DPMS в X.
Взаимодействие с DPMS в Linux-консоли с setterm
Утилита setterm выводит escape-коды для взаимодействия с терминалом. По сути, она просто печатает escape-последовательности в текущем терминале, неважно где вы сейчас находитесь: в screen-сессии, в ssh, serial и т.д.
Синтаксис setterm: (0 отключает)
setterm --blank [0-60|force|poke] setterm --powersave [on|vsync|hsync|powerdown|off] setterm --powerdown [0-60]
- Затемнение консоли само по себе не включает DPMS, и оно отключено по умолчанию. [1]
-
setterm --powerdown
, похоже, ни на что не влияет, если настройка ядраAPM_DISPLAY_BLANK
не включена. [2] - Затемнение консоли также может быть включено параметром ядра
consoleblank
. Подробности смотрите в документации к ядру.
Перенаправление вывода для просмотра escape-кодов
$ setterm --powerdown 2>&1 | exec cat -v 2>&1 | sed "s/\\^\\[/\\\\033/g"
Перенаправление escape-кодов в любой tty (с правами на запись) для его изменения
$ setterm --powerdown 0 >> /dev/tty3
>>
, а не >
. В случае проблем с правами при использование sudo в скрипте или чём-то таком вы можете использовать программу tee для дозаписи вывода setterm в устройство tty, которое позволяет дозаписывать, но не перезаписывать.цикл Bash для изменения ttys 0-256
$ for i in {0..256}; do setterm --powerdown 0 >> /dev/tty$i; done; unset I;