Вопрос или проблема
Предыстория
По какой-то причине X11 / lightdm вылетает при нажатии кнопки питания монитора. Вместо этого выполнение xset dpms force off
переводит монитор в режим низкого энергопотребления, что устраивает и обходит проблему нажатия проблемной кнопки питания.
Используется Arch Linux.
Проблема
После нажатия клавиши для возврата монитора к работе экран становится пустым, когда компьютер неактивен в течение нескольких минут. Хотелось бы отключить это поведение.
Вопрос
Как можно написать bash-алиас (например, off
), который:
- Выключает монитор (“низкий энергопотребление” режим).
- Обеспечивает отсутствие затемнения экрана или таймаутов после повторного включения монитора.
Например:
alias off="xset dpms force off ; wait until keypress ; xset -dpms"
Есть ли более простое решение?
Попробуйте:
xset dpms 65535 65535 65535
Это установит dpms так, чтобы он автоматически не активировался, пока машина не будет неактивна в течение 18,2… часов. Вы можете сократить это время, изменив количество секунд, но это значение, по-видимому, является пределом.
Я бы рекомендовал это для вашего ~/.xsession
или ~/.xinitrc
или какого-либо аналогичного файла, который запускается при входе в систему или запуске X сервера. (Возможно, там, где находится текущий xset -dpms
.) С этим xset dpms force off
будет по-прежнему работать.
Создайте $HOME/bin/await.sh
:
#!/usr/bin/env bash
xinput test-xi2 --root 2>&1 | \
grep --line-buffered -m 1 'EVENT type 2 (KeyPress)' &> /dev/null
Используйте это:
alias off="xset dpms force off && await.sh && xset -dpms"
.
Ответ или решение
Для решения задачи отключения монитора на Arch Linux с одновременным предотвращением его выключения или затемнения при повторной активации, потребуется реализация нескольких шагов. Данная инструкция поможет наладить стабильную работу системы, минуя баги X11/lightdm, возникающие при использовании физической кнопки на мониторе.
Теория
Основой решения является использование утилиты xset
, которая управляет параметрами отображения экрана в среде X Windows. Команда xset dpms force off
позволяет перевести монитор в режим пониженного энергопотребления, что является альтернативой использования кнопки на мониторе. Оставшаяся проблема – это предотвращение выключения или затемнения экрана после того, как монитор был активирован снова. Команды xset -dpms
и xset s off
отключают соответственно управление питанием дисплея и любые экраны заставки, что должно исключить возврат к прежнему состоянию.
Пример
-
Настройка команды "off" для отключения экрана:
Создать команду-алиас, которая сразу отправляет монитор в "спящий" режим и отключает все настройки, возвращающие его к исходному состоянию после пробуждения. Наиболее простой способ – использование bash-скрипта, который эффективно слушает нажатия клавиш, после чего отключает функцию DPMS и заставки. -
Создание скрипта для отслеживания событий клавиатуры:
Создайте файлawait.sh
в директории~/bin/
с следующим содержимым:#!/usr/bin/env bash xinput test-xi2 --root 2>&1 | grep --line-buffered -m 1 'EVENT type 2 (KeyPress)' &> /dev/null
Этот скрипт будет ожидать нажатия клавиши, и это событие будет сигналом к активации дальнейших команд.
-
Настройка алиаса команды:
Настройте алиас для командыoff
следующим образом:alias off="xset dpms force off && ~/bin/await.sh && xset -dpms && xset s off"
После выполнения первой команды, скрипт
await.sh
будет ожидать нажатия клавиши, затем отключаются DPMS и экранные заставки. -
Обеспечение постоянной работы настроек:
Для того чтобы эти настройки были активны при каждом запуске X-сервера, вы можете добавить следующее в файл~/.xinitrc
или~/.xsession
:xset dpms 65535 65535 65535
Эти значения указывают на крайне долгий срок бездействия (в данном случае около 18.2 часов), определяющий выключение экрана.
Применение
Добавление вышеуказанных смещений в конфигурационные файлы вашего X-сервера позволит не только избежать внезапного выключения, но и даст возможность возвращаться к нормальному состоянию после нажатия клавиши без нежелательных эффектов. Такая команда будет полезной в автоматизации задачи управления питанием в системах, где кнопка отключения монитора вызывает нестабильность системы.
Таким образом, вы достигнете желаемого поведения системы с минимальными изменениями в конфигурации. Важно помнить, что работа с системными утилитами и конфигурациями требует аккуратности, в связи с чем наилучше всего провести тестирование в безопасной среде перед тем, как внедрять изменения в производственную систему.