Вопрос или проблема
Я раньше делал это в bash-скрипте, чтобы узнать, включен ли монитор или выключен (“выключен” означает выключен, или то, что происходит после выполнения xset dpms force off
):
xset q | grep "Monitor is Off"
…какова эквивалентная команда в Wayland? Я нашел ddccontrol -p
в другом ответе, и, похоже, это сработает, но это работает слишком медленно (возвращает результат за несколько секунд).
.
Ответ или решение
Подсчитывая переход от X11 к Wayland, многие пользователи сталкиваются с проблемами выполнения команд и сценариев, которые ранее работали на X. Одной из таких задач является определение состояния монитора — включен он или выключен. В X11 эта информация может быть получена с помощью команды xset
, но в среде Wayland данный подход не является возможным.
Как определить состояние монитора в Wayland?
Wayland не предоставляет тех же интерфейсов для управления выводом дисплея, что и X. Поэтому для решения вашей задачи потребуется рассмотреть альтернативные методы. К сожалению, в момент написания данной статьи нет единой утилиты, аналогичной xset
, которую можно было бы использовать, чтобы просто и быстро проверить, выключен ли монитор. Тем не менее, существуют обходные пути.
-
Использование
wlr-randr
:
Если ваша аппаратная среда поддерживает Wayland и вы используете compositors, такие как Sway или any other compositor, вы можете попробовать использоватьwlr-randr
. Эта утилита позволяет просматривать текущее состояние выходных устройств. Команды могут выглядеть так:wlr-randr --verbose
Здесь будет отображена информация о состоянии мониторов, и вы сможете определить, какой из них выключен.
-
Использование
gammastep
:
Утилитаgammastep
может помочь вам управлять охватом цвета и состоянием мониторов. Вы можете установить её и использовать для проверки принимаемых данных о состоянии дисплея. -
Отслеживание с помощью системных журналов:
В некоторых случаях можно отслеживать события включения и выключения мониторов через системные журналы с помощьюjournalctl
. Используя фильтрацию по девушкам и проверяя, не произошло ли событие выключения монитора, вы можете получить необходимые данные.journalctl -f | grep 'monitor'
Проблемы с ddccontrol
Хотя ddccontrol
может удовлетворить вашу потребность в считывании статуса монитора, его медлительность во время исполнения делает его неэффективным решением для сценариев, требующих быстрого ответа. Если время отклика является критическим, рассматривайте группировку вызовов, чтобы избежать задержек. Но, к сожалению, такой подход может привести к нестационарному считыванию состояния.
Заключение
Определение состояния монитора в окружении Wayland может быть более сложным, чем в X11, однако существуют различные подходы, такие как использование wlr-randr
, gammastep
, и отслеживание системных журналов. Каждое из этих решений имеет свои плюсы и минусы, и вам придется выбрать наиболее подходящий в зависимости от ваших потребностей. Надеюсь, эта информация окажется полезной, и позволит вам найти оптимальный способ для вашего сценария.