我写了一个小的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
Run Code Online (Sandbox Code Playgroud)
这样可行.现在我想让它自动触发,并发现这可以用udev完成.我试过了
udevadm monitor
Run Code Online (Sandbox Code Playgroud)
当插入外部显示输出时
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)
Run Code Online (Sandbox Code Playgroud)
插上电源时
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)
Run Code Online (Sandbox Code Playgroud)
也不错.
然后我添加了一个udev规则:
# cat 40-external-display.rules
SUBSYSTEM=="drm", ACTION=="change", RUN+="/home/didi/bin/monitor_autoswitcher.sh"
Run Code Online (Sandbox Code Playgroud)
并重新启动udev
service udev restart
Run Code Online (Sandbox Code Playgroud)
不幸的是,插入/拔出显示器时仍然没有任何反应.该脚本monitor_autoswitcher.sh肯定有效,因为在插入后手动调用它会做它应该做的事情.
少了什么东西?
小智 6
这看起来几乎是一样的。我看到的唯一真正区别是脚本设置了 DISPLAY 变量,这可能是关键。
http://ruedigergad.com/2012/01/28/hotplug-an-external-screen-to-your-laptop-on-linux/
| 归档时间: |
|
| 查看次数: |
6524 次 |
| 最近记录: |