从Mini DisplayPort插入/断开连接的东西时可以运行脚本吗?

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

我在那里看不到任何这样的剧本(除非我错过了什么)。

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

是的,应该可以使用udev。

我在这里提出/回答了一个类似的问题(改变HDMI(dis)连接上的声音输出)。 首先,您需要创建一个这样的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之前,请将其作为普通用户进行测试。