Linux: Как запустить скрипт, когда подключен внешний монитор?


10

Как я могу определить, когда внешний монитор подключен в Linux?

Мне нужно запустить различные сценарии, чтобы настроить мое рабочее пространство.

Есть ли какой-нибудь умный способ запустить скрипт, когда состояние монитора изменилось?

Я использую драйвер дисплея Nvidia.


Хакерским способом было бы написать скрипт, который запрашивает изменения в выходных данных xrandrкаждые пару секунд и запускает скрипт (ы), если он замечает разницу.
new123456

В идеале вы можете сказать udev запустить скрипт. Я не ожидаю, что это будет работать с драйверами nvidia, пока не поддерживается KMS, хотя я не пробовал. stackoverflow.com/questions/5469828/…
Энди

Ответы:


3

Существует набор инструментов, называемых read-edid, которые могут анализировать расширенные идентификационные данные дисплея (EDID). Если ваш внешний монитор фактически обнаружен этими инструментами, вы можете периодически проверять обнаружение и использовать выходные данные для запуска сценариев и т. Д.

Вы не упомянули, нужно ли вам делать это независимо от того, запущен ли X.


Да, мне это нужно только в X. У меня есть и другие инструменты, которые распознают дисплеи (например, disper), но я надеялся избежать написания демона :)
Joernsn

1

Я искал тот же ответ: /
Я использую disper ( http://willem.engen.nl/projects/disper ) и gconftool для включения / отключения моего второго монитора вместе со второй панелью gnome на нем.
disper -l выводит список всех подключенных мониторов, чтобы вы могли опрашивать их как последнее средство.

# only primary display
disper -s
gconftool-2 --type int --set  /apps/panel/toplevels/panel_1/screen -- -1


# dual display (nvidia twinview)
disper -e
gconftool-2 --type int --set  /apps/panel/toplevels/panel_1/screen 0
killall gnome-panel


0

Учитывая, что по состоянию на 270.18 двоичные драйверы nVidia, похоже, по-прежнему не реализуют современный XRandR, вам, возможно, придется просто согласиться с предложением new123456 опрашивать инструмент, например, xrandrдля изменения размера экрана.

В моей системе мне еще предстоит найти способ сделать так, чтобы nVidia правильно объявила о xrandrтом, что у меня есть два монитора 1280x1024, а не один 2560x1024 ... который, как вы можете догадаться, делает полноэкранные игровые центры на обоих мониторах, когда я запрещаю их от изменения разрешения. (Это испортило мои настольные наклейки)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.