it-swarm-es.com

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

En /etc/acpi/ hay varios scripts que se pueden personalizar 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 yo ' Estoy buscando una manera de detectar cuando algo está conectado o desconectado del Mini DisplayPort, para poder 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 múltiples monitores automáticamente usando xrandr. Esto solía ocurrir automáticamente en Gnome (usando ~/.config/monitors.xml Creo) pero ahora he cambiado a xmonad completamente y no detecta esto automáticamente.

4
user779159

Sí, debería ser posible usando udev.

He preguntado/respondido aquí una pregunta similar (cambiar la salida de sonido en HDMI (dis) connect). Primero deberá crear una regla de 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, use 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 un script Python pero puedes usar lo que quieras, ya que puede ejecutarse. Este será el script que se llama cuando el cable está conectado/desconectado, por lo que debe encontrar el estado actual y usar xrandr para hacer lo que necesita. Vea cómo hice la detección del estado de la pantalla y si se ajusta a sus necesidades.

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

3
Salem