当有东西插入/断开 Mini DisplayPort 时可以运行脚本吗?

当有东西插入/断开 Mini DisplayPort 时可以运行脚本吗?

/etc/acpi/几个脚本可以定制为在您的物理计算机上发生特定事件时执行某些操作,例如lid.sh当笔记本电脑盖打开或关闭时调用的脚本,但我正在寻找一种方法来检测何时将某些东西插入或断开与 Mini DisplayPort 的连接,以便我可以运行命令。

我没有看到任何这样的脚本(除非我错过了什么)。

该命令将使用 自动配置多显示器设置xrandr。这曾经在 Gnome 中自动发生(~/.config/monitors.xml我相信使用),但我现在已经完全切换到xmonad,它不会自动检测到这一点。

答案1

是的,使用 udev 应该可以。

我已经问过/回答过这里类似的问题(更改 HDMI 连接(断开)时的声音输出)。首先,您需要创建一个 udev 规则,如下所示:

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

它应该与我的答案位于同一位置,但您可以更改名称。要确切知道您需要使用哪个 SUBSYSTEM 和 ACTION,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执行您需要的操作。看看我如何检测屏幕的状态,以及它是否适合您的需求。

注意:此脚本由 udev 执行root,因此在将其放入 udev 之前,请先以普通用户的身份对其进行测试。

相关内容