Отключение двух мониторов с помощью «xset dpms force off» не работает — почему?

Отключение двух мониторов с помощью «xset dpms force off» не работает — почему?

Я хотел бы выключить два монитора, запустив: xset dpms force offно выключается только основной монитор, а другой просто получает "черный экран" (как будто он был выключен), но он не выключается. Светодиод все еще светится зеленым, указывая на то, что монитор включен.

решение1

Чего именно вы пытаетесь добиться? Для управления использованием монитора вы можете/должны использовать расширение randr, которое xrandrбудет оружием выбора в скриптах.

xrandr -qпоказывает все выходы вашего компьютера и некоторую информацию о подключенных мониторах. Чтобы отключить выход, вы должны указать что-то вроде xrandr --output=HDMI1 --off. В вашем случае вам нужно заменить "HDMI1" на то, что xrandr -qговорит вам, что ваши выходы названы. С отключенным выходом X больше не использует этот монитор (вообще) и, скорее всего, перейдет в спящий режим.

Если вы действительно хотите, чтобы монитор выключился, ваша проблема в том, что xsetон не знает и не заботится о том, сколько мониторов вы подключили к своему компьютеру, потому что xsetобщается с X-серверами, а не с их компонентами и, определенно, не с оборудованием. Это означает, что xsetон отправляет ровно один запрос "dpms force off", и этот запрос (обрабатывается и) отправляется на один из ваших мониторов X-сервером. Я предполагаю, что он отправляет его на ваш основной монитор, т. е. тот, который подключен к выходу, который появляется первым в списке, показанном xrandr -q. Это тот же монитор, на котором находится ваша панель gnome, если вы используете gnome.

По сути, я предполагаю, что вам придется xsetдважды отправить свой запрос. Если это не поможет немедленно, я предполагаю, что вам нужно четко указать, какой из подключенных мониторов является основным, а какой нет.

xrandrпозволяет вам установить основной выход/монитор с помощью опции --primary. Если ваши выходы HDMI1и HDMI2, я бы попробовал:

xrandr --output HDMI2 --primary
xset dpms force off
xrandr --output HDMI1 --primary
xset dpms force off

Проверьте вывод xrandr -qи напишите скрипт, который отключает ваши мониторы в обратном порядке, в котором они перечислены, то есть снизу вверх. Причина в том, что хотя (x)randr должен произвольно делать вывод выводом по умолчанию, я бы не стал/не доверял ему работать так безупречно, особенно если задействованы драйверы с закрытым исходным кодом. Работая с мониторами в обратном порядке, вы отключаете "естественный" основной монитор последним, и если что-то пойдет не так, наличие "естественного" основного монитора — это ваш лучший шанс получить полностью функциональный Xserver.

решение2

Уточнение вопроса: я предполагаю, что Рокс хочет выключать свои мониторы, когда уходит (но оставить компьютер включенным). Обычно это происходит после того, как заставка некоторое время показывает красивые узоры. Использование команды "xset dpms force off" — это способ проверить, работает ли все, не дожидаясь полчаса, пока заставка DPMS включится. (Вы также можете установить тайм-аут для DPMS off очень коротким, но это просто еще один способ ускорить тестирование).

Я только что проверил это на своей системе. В ней есть: 01:00.0 Совместимый с VGA контроллер: Advanced Micro Devices [AMD] nee ATI RV620 LE [Radeon HD 3450] и когда я ввожу "xset dpms force off", оба монитора показывают "нет сигнала" в течение трех секунд, а затем светодиод загорается желтым (т.е. спящий режим). "У меня работает"!

Итак... Чтобы выяснить, что не так в вашей ситуации: можете ли вы поменять мониторы, чтобы убедиться, что ваш второй монитор поддерживает DPMS? Если это так, как я и предполагаю, это может быть ошибкой. Вероятно, это довольно специфично для вашего чипа/программного обеспечения. Вы используете последнюю версию программного обеспечения? (например, Ubuntu 12.04).

Связанный контент