Возможно ли запустить скрипт, когда что-то подключено / отключено от Mini DisplayPort?

В /etc/acpi/ есть несколько сценариев, которые можно настроить для выполнения определенных действий на физическом компьютере, например сценарий lid.sh, который вызывается, когда крышка ноутбука открывается или закрывается, но я ищу способ обнаружить, когда что-то подключено или отключено от Mini DisplayPort, чтобы я мог выполнить команду.

Я не вижу такого сценария там (если я что-то пропустил).

Командой будет настройка автоматической настройки нескольких мониторов с использованием xrandr. Раньше это происходило автоматически в Gnome (используя ~/.config/monitors.xml, я полагаю), но теперь я полностью переключился на xmonad, и он не обнаруживает это автоматически.

4
задан 20 March 2013 в 21:59

1 ответ

Да это должно быть возможное использование udev.

Я спросил/ответил здесь, подобный вопрос (измените звуковой вывод на HDMI (скидка) подключение). Сначала необходимо будет создать правило udev как это:

SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/update_screen_config"

Это должно быть на том же местоположении как в моем ответе, но можно изменить имя. Знать точно, какую ПОДСИСТЕМУ и ДЕЙСТВИЕ Вы должны использовать udevadm и соедините свой DP. В моей системе соединяя экран HDMI я добираюсь:

$ udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
(here I connected my screen)
KERNEL[16383.092226] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
UDEV  [16383.281930] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
(disconnected my screen)
KERNEL[16389.092226] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
UDEV  [16389.281930] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)

Вторая часть является созданием /usr/local/bin/update_screen_config (можно дать ему другое имя или местоположение). Я использовал сценарий Python, но можно использовать что-либо, что Вы хотите, так как он может быть выполнен. Это будет сценарием, который называют, когда кабель соединен/разъединен, таким образом, он должен найти текущее состояние и использование xrandr сделать то, в чем Вы нуждаетесь. Посмотрите, как я сделал обнаружение состояния экрана и если это удовлетворяет Вашим потребностям.

Примечание: этот сценарий выполняется как root udev так протестируйте его как обычного пользователя перед помещением его на udev.

3
ответ дан 20 March 2013 в 21:59

Другие вопросы по тегам:

Похожие вопросы: