web-dev-qa-db-fra.com

Possible d'exécuter un script quand quelque chose est branché / déconnecté de Mini DisplayPort?

Dans /etc/acpi/, il est possible de personnaliser plusieurs scripts pour faire quelque chose lorsqu'un événement particulier se produit sur votre ordinateur physique, tel que le script lid.sh qui est appelé à l'ouverture ou à la fermeture du couvercle de l'ordinateur portable. m cherche un moyen de détecter si quelque chose est branché ou déconnecté du Mini DisplayPort, afin que je puisse exécuter une commande.

Je ne vois aucun script de ce type là-dedans (à moins que quelque chose me manque).

La commande consiste à configurer automatiquement la configuration multi-moniteur à l'aide de xrandr. Auparavant, cela se produisait automatiquement dans Gnome (avec ~/.config/monitors.xml je crois), mais je suis maintenant passé complètement en xmonad et il ne le détecte pas automatiquement.

4
user779159

Oui, cela devrait être possible avec udev.

J'ai demandé/répondu ici une question similaire (changer la sortie audio sur HDMI (dis) connect). Vous devez d’abord créer une règle udev comme celle-ci:

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

Ce devrait être au même endroit que dans ma réponse mais vous pouvez changer le nom. Pour savoir exactement quel sous-système et quelle action vous avez besoin, utilisez udevadm et connectez votre DP. Dans mon système, en connectant l'écran HDMI, je reçois:

$ 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 deuxième partie est la création de /usr/local/bin/update_screen_config (vous pouvez lui donner un autre nom ou un autre emplacement). J'ai utilisé un script Python, mais vous pouvez utiliser ce que vous voulez, car il peut être exécuté. Ce sera le script appelé lorsque le câble est connecté/déconnecté. Il doit donc rechercher l'état actuel et utiliser xrandr pour faire ce dont vous avez besoin. Voyez comment j'ai détecté l'état de l'écran et si cela répond à vos besoins.

Remarque: ce script est exécuté sous la forme root par udev. Testez-le donc en tant qu’utilisateur normal avant de le placer sur udev.

3
Salem