Linux: comment exécuter un script lorsqu'un moniteur externe est connecté?

10

Comment puis-je détecter lorsqu'un moniteur externe est connecté sous Linux?

J'ai besoin d'exécuter divers scripts pour configurer mon espace de travail.

Existe-t-il un moyen intelligent de lancer un script lorsque l'état du moniteur a changé?

J'utilise le pilote d'affichage Nvidia.

Joernsn
la source
La méthode hackish serait d'écrire un script qui interroge sur les changements de sortie xrandrtoutes les deux secondes et exécute le ou les scripts s'il constate une différence.
new123456
Idéalement, vous pouvez demander à udev d'exécuter un script. Je ne m'attends pas à ce que cela fonctionne avec les pilotes nvidia jusqu'à ce que KMS soit pris en charge, même si je n'ai pas essayé. stackoverflow.com/questions/5469828/…
Andy

Réponses:

3

Il existe un ensemble d'outils appelés read-edid qui peuvent analyser les données d'identification d'affichage étendues (EDID). Si votre moniteur externe est réellement détecté par ces outils, vous pourrez peut-être vérifier périodiquement la détection et utiliser la sortie pour démarrer des scripts, etc.

Vous n'avez cependant pas mentionné si vous deviez le faire, que X soit en cours d'exécution ou non.

Rolf
la source
Bon, je n'en ai besoin que dans X. J'ai aussi d'autres outils qui détecteront les affichages (comme disper), mais j'espérais éviter d'avoir à écrire un démon :)
Joernsn
1

Je cherchais la même réponse: /
J'utilise disper ( http://willem.engen.nl/projects/disper ) et gconftool pour activer / désactiver mon deuxième moniteur avec un deuxième panneau gnome dessus.
disper -l répertorie tous les moniteurs connectés, vous pouvez donc l'interroger en dernier recours.

# only primary display
disper -s
gconftool-2 --type int --set  /apps/panel/toplevels/panel_1/screen -- -1


# dual display (nvidia twinview)
disper -e
gconftool-2 --type int --set  /apps/panel/toplevels/panel_1/screen 0
killall gnome-panel
Vindolin
la source
0

Étant donné que, à partir de 270.18, les pilotes binaires nVidia ne semblent toujours pas implémenter XRandR moderne, vous devrez peut-être simplement suivre la suggestion de new123456 pour interroger un outil comme xrandrpour les changements de taille d'écran.

Sur mon système, je n'ai pas encore trouvé de moyen d'annoncer correctement à nVidia xrandrque j'ai deux moniteurs 1280x1024, plutôt qu'un seul 2560x1024 ... les empêcher de changer la résolution. (Il détruit mes stickies de bureau)

ssokolow
la source