【发布时间】:2012-09-28 17:43:50
【问题描述】:
我编写了一个小 shell 脚本,用 xrandr 配置附加的外部显示器。
# cat /home/didi/bin/monitor_autoswitcher.sh
#!/bin/bash
xrandr | grep "HDMI1 connected"
if [[ $? == 0 ]]; then
# is connected
xrandr --output HDMI1 --right-of LVDS1 --auto
else
# not connected
xrandr --output HDMI1 --auto
fi
xrandr | grep "VGA1 connected"
if [[ $? == 0 ]]; then
# is connected
xrandr --output VGA1 --right-of LVDS1 --auto
else
# not connected
xrandr --output VGA1 --auto
fi
这行得通。现在我想让它自动触发,发现这可以用 udev 完成。 我试过了
udevadm monitor
当插入外部显示器输出时
KERNEL[465828.240250] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
UDEV [465828.243549] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
以及拔掉电源时
KERNEL[465836.844209] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
UDEV [465836.847445] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
也不错。
然后我添加了一个udev规则:
# cat 40-external-display.rules
SUBSYSTEM=="drm", ACTION=="change", RUN+="/home/didi/bin/monitor_autoswitcher.sh"
然后重启udev
service udev restart
不幸的是,插入/拔出显示器时仍然没有任何反应。脚本monitor_autoswitcher.sh 绝对有效,因为在插入后手动调用它就可以了。
缺少什么?
【问题讨论】: