Я нашел ваш код и продолжал пытаться заставить его работать. Ни при каких условиях я не мог бы заставить его работать с парадигмой «если тогда». «xrandr | grep» ВСЕГДА не мог быть верным при запуске как триггер udev, но работал, если я запускал его вручную. Я был вынужден разбить его на два сценария.
Хотя мое устройство отличается (StarTech CDPVGDVHDMDP), я опубликую свою версию здесь.
Во-первых, я обнаружил, что полезно перезагрузить правила udev при устранении неполадок:
sudo udevadm control --reload-rules
Мое устройство было немного другим, и я обнаружил, что подсистема "hidraw" была чем-то, что я мог вызвать. Также я был вынужден запустить / bin / bash / path / to / script ", иначе он не запустился. Это мое правило udev (/etc/udev/rules.d/95-monitor-hotplug.rules):
ACTION=="remove", SUBSYSTEM=="hidraw", RUN+="/bin/bash /home/user/scripts/hotunplug-displayport.sh" ACTION=="add", SUBSYSTEM=="hidraw", RUN+="/bin/bash /home/user/scripts/hotplug-displayport.sh"
Это мой скрипт горячего подключения
#!/bin/bash export XAUTHORITY=/home/user/.Xauthority DISPLAY=:0 /usr/bin/xrandr --addmode DP-1 1680x1050 DISPLAY=:0 /usr/bin/xrandr --output DP-1 --right-of eDP-1 --mode 1680x1050 echo "$(date) : Hotplug Connect DP-1" >> /var/log/hotplug.txt DISPLAY=:0 /usr/bin/xrandr --addmode DP-2 1680x1050 DISPLAY=:0 /usr/bin/xrandr --output DP-2 --right-of eDP-1 --mode 1680x1050 echo "$(date) : Hotplug Connect DP-2" >> /var/log/hotplug.txt
Это мой сценарий горячего отключения
#!/bin/bash export XAUTHORITY=/home/user/.Xauthority DISPLAY=:0 /usr/bin/xrandr --output DP-1 --off echo "$(date) : Hotplug Disconnect DP-1" >> /var/log/hotplug.txt DISPLAY=:0 /usr/bin/xrandr --output DP-2 --off echo "$(date) : Hotplug Disconnect DP-2" >> /var/log/hotplug.txt