当 Mini DisplayPort 插入/断开连接时可以运行脚本吗?

use*_*159 5 xrandr video display multiple-monitors xmonad

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

我在那里没有看到任何这样的脚本(除非我错过了一些东西)。

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

Sal*_*lem 6

是的,使用 udev 应该可以。

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

SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/update_screen_config"
Run Code Online (Sandbox Code Playgroud)

它应该与我的答案位于同一位置,但您可以更改名称。要准确了解您需要使用哪个子系统和操作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)
Run Code Online (Sandbox Code Playgroud)

第二部分是创建/usr/local/bin/update_screen_config(您可以给它其他名称或位置)。我使用了Python脚本,但你可以使用任何你想要的,因为它可以被执行。这将是连接/断开电缆时调用的脚本,因此它必须找到当前状态并使用xrandr执行您需要的操作。看看我如何检测屏幕状态以及它是否适合您的需求。

注意:该脚本由 udev 执行root,因此在将其置于 udev 上之前,请以普通用户身份对其进行测试。