为外部显示器添加 UDEV 规则



我写了一个小的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"

并重新启动了乌德夫

service udev restart

不幸的是,插入/拔出显示器时仍然没有任何反应。该脚本绝对monitor_autoswitcher.sh有效,因为在插入后手动调用它会执行应有的操作。

缺少什么?

这看起来几乎是一回事。我看到的唯一真正的区别是脚本设置了 DISPLAY 变量,这可能是关键。

http://ruedigergad.com/2012/01/28/hotplug-an-external-screen-to-your-laptop-on-linux/

相关内容

  • 没有找到相关文章

最新更新