Управление отдельными мониторами невозможно с помощью xset (и X11 на самом деле)
Как следует из названия, это невозможно по причинам, связанным со сборкой, xset
и из-за функций X11, которые он использует. Если мы посмотрим на исходный код, xset
вызовы DPMSForceLevel(dpy,DPMSModeSuspend)
( строка 557 ) и переменную отображения, dpy
полученную из XOpenDisplay()
функции ( строка 203 ), и это по определению :
Сервер вместе с его экранами и устройствами ввода называется дисплеем.
Другими словами, xset
настройки применяются глобально ко всему экрану, а не к отдельным экранам. Было бы необходимо изменить xset
исходный код, чтобы это работало. Сами расширения DPMS чаще всего вызывают только весь экран, а не отдельные экраны, поэтому невозможно даже написать собственный код с библиотекой X11.
Ручное управление этим параметром через /sys
подсистему также не работает
$ sudo bash -c 'echo Off > /sys/class/drm/card0-VGA-1/dpms'
[sudo] password for admin:
bash: /sys/class/drm/card0-VGA-1/dpms: Permission denied
Экраны также выводятся из режима DPMS, когда происходят события клавиш или мыши, поэтому, учитывая, что вы можете перемещать мышь или использовать клавиатуру, любое из этих действий приведет к выходу монитора из режима DPMS.
Альтернативные обходные пути
Лучшая альтернатива (и фактически физически работающее решение) xrandr
- это может быть использовано для контроля отдельных «результатов». В частности,
xrandr --output VGA-1 -off
отключит этот выход. Да, вы упомянули, что не хотите использовать это решение, поскольку оно недостаточно быстрое, однако пока оно является лучшим из доступных. У него есть пара преимуществ:
- невосприимчив к событиям клавиш и мыши
- самостоятельно контролирует выход в отличие
xset
xrandr --output VGA-1 --brightness 0.1
Будет раскрасить экран таким образом , что он появляется прочь, даже если --brightness
это программное решение, так что дисплей не фактически недоступен на аппаратном уровне, и он выключен на аппаратном уровне. Тем не менее, он выполняет работу по очистке экрана и устойчив к событиям нажатия клавиш / мыши.
Я посмотрел исходный код скринсейверов Mate и Budgie, которые являются вилками заставки GNOME, однако в любом случае они кажутся программным решением, поскольку в исходном коде нет упоминания о DPMS.