¿Es posible ejecutar un script cuando hay algo conectado / desconectado de Mini DisplayPort?

En /etc/acpi/ hay varios scripts que pueden personalizarse para hacer algo cuando ocurre un evento en particular en su computadora física, como el script lid.sh que se llama cuando se abre o cierra la tapa del portátil, pero estoy buscando para una forma de detectar cuando algo está conectado o desconectado del Mini DisplayPort, para que pueda ejecutar un comando.

No veo ningún script de ese tipo allí (a menos que me haya perdido algo).

El comando sería configurar la configuración de varios monitores automáticamente utilizando xrandr . Esto solía suceder automáticamente en Gnome (usando ~/.config/monitors.xml , creo) pero ahora he cambiado completamente a xmonad y no lo detecta automáticamente.

Sí, debería ser posible utilizando udev.

He hecho / respondido aquí una pregunta similar (cambiar la salida de sonido en HDMI (dis) connect). Primero necesitarás crear una regla udev como esta:

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

Debería estar en la misma ubicación que en mi respuesta, pero puede cambiar el nombre. Para saber exactamente qué SUBSISTEMA y ACCIÓN necesita usar udevadm y conecte su DP. En mi sistema, conectando la pantalla HDMI obtengo:

 $ 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) 

La segunda parte es la creación de /usr/local/bin/update_screen_config (puede darle otro nombre o ubicación). He usado una secuencia de comandos de Python, pero puede usar lo que quiera, ya que puede ejecutarse. Este será el script al que se llama cuando el cable está conectado / desconectado, por lo que debe encontrar el estado actual y usar xrandr para hacer lo que necesite. Vea cómo hice la detección del estado de la pantalla y si se ajusta a sus necesidades.

Nota: este script se ejecuta como root por udev, así que pruébelo como un usuario normal antes de ponerlo en udev.