Display Power Management Signaling (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Display Power Management Signaling. Дата последней синхронизации: 15 сентября 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

DPMS (Display Power Management Signaling, сигналы управления энергопотреблением дисплеев) - это технология, позволяющая управлять питанием монитора, когда компьютер не используется. Время неактивности, по истечении которого монитор уходит в режим энергосбережения, сна или отключается, может быть задано как описано в DPMSSetTimeouts(3). Имейте в виду, что DPMS разрабатывался для ЭЛТ-мониторов, а для ЖК-дисплеев обычно нет разницы между разными режимами экономии энергии.

Настройка DPMS в X

Примечание: Начиная с Xorg 1.8, DPMS обнаруживается и включается автоматически, если ACPI также включен в ядре.

Добавьте следующие строки в /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;

Смотрите также