Y at - il une événement qui est déclenché lorsque je branche ou sur un moniteur externe dans le DisplayPort de mon ordinateur portable? ACPID et UDEV ne réagissent pas du tout.
J'utilise des graphiques intégrés sur une puce Intel. Voici une discussion similaire qui a déjà deux ans.
Je ne souhaite pas utiliser l'interrogation, mais j'ai besoin d'une configuration définissant automatiquement les paramètres d'affichage en fonction du type d'affichage connecté.
udev
monitors
acpi
multi-monitor
janoliver
la source
la source
Réponses:
REMARQUE: ceci a été testé sur un ordinateur portable avec une carte graphique pilotée par i915.
Contexte
REMARQUE: Lorsqu'un nouvel écran est branché, aucun événement n'est envoyé à l'hôte, cela est resté vrai même après ma dernière modification. Donc, le seul moyen est d'utiliser polling. Essayer de les rendre aussi efficaces que possible ...
EDIT # 3
Enfin, il existe une meilleure solution (via ACPI):
Il n'y a toujours pas d'événement, mais ACPI semble plus efficace que
xrandr
de s'enquérir. (Nota: Cela nécessite des modules de noyau ACPI chargés, mais ne nécessite pas de privilèges root).Ma solution finale (en utilisant bash):
Maintenant un test:
C'est branché, alors maintenant je le débranche:
REMARQUE:
${1:+*-1+1}
permettre un booléen argument: Si quelque chose est présent , serait inversée réponse:( crtState >> 4 ) * -1 + 1
.et le script final:
AVERTISSEMENTS: plus léger que
xrandr
, mais non sans importance, avec un délai inférieur à 0,02 seconde, le script Bash ira au sommet du processus des utilisateurs de ressources (top
)!Bien que cela coûte ~ 0.001 seconde:
Cela nécessite ~ 0.030 seconde:
C'est grand! Donc, en fonction de vos besoins, vous
delay
pouvez choisir entre0.5
et2
.EDIT # 2
J'ai enfin trouvé quelque chose, en utilisant ceci:
Avertissement important: Jouer avec
/proc
et les/sys
entrées peuvent casser votre système !!! Alors n'essayez pas ce qui suit sur les systèmes de production.... après un nettoyage des entrées non désirées:
J'ai pu lire ceci:
Lorsque je branche, débranche et rebranche le câble du moniteur.
Réponse originaleLorsque la configuration est demandée (en cours d'exécution
system/preferences/monitor
ouxrandr
), les cartes graphiques effectuent un type d' analyse . Par conséquent, l'exécutionxrandr -q
vous donne les informations, mais vous devez interroger l'état.J'ai parcouru tous les journaux (noyau, démon, X, etc.) en cherchant dans
/proc
&/sys
, et rien ne semble exister qui puisse satisfaire votre requête.J'ai aussi essayé ça:
Après tout cela, si vous courez
System/Preferences/Monitor
alors qu’aucun nouvel écran n’a été branché, ni débranché, l’outil apparaîtra simplement (normalement). Mais si vous avez déjà branché ou débranché un écran, vous exécuterez parfois cet outil et votre bureau affichera un type de réinitialisation ou d' actualisation (identique si vous exécutezxrandr
).Cela semble confirmer que cet outil demande
xrandr
(ou fonctionne de la même manière) en interrogeant périodiquement l’état de l’état, à partir du moment où il est exécuté.Vous pouvez essayer vous-même:
Cela affichera combien d'écrans (écrans) sont connectés, pendant 10 secondes.
Pendant que cela fonctionne, branchez et / ou débranchez votre écran / moniteur et regardez ce qui se passe. Vous pouvez donc créer une petite fonction de test Bash:
qui serait utilisable comme dans:
Mais attention, cela
xrandr
prend environ 0.140 sec à 0.200 sec quand aucun changement ne se produit sur les fiches et jusqu’à 0.700 secondes chaque fois que quelque chose était branché ou débranché juste avant ( NOTE: cela ne semble pas être un mangeur de ressources).EDIT # 1
Pour m'assurer que je n'enseigne pas quelque chose d'incorrect, j'ai effectué des recherches sur le Web et dans la documentation, mais je n'ai rien trouvé sur DBus et Screens .
Enfin, j’ai couru dans deux fenêtres différentes
dbus-monitor --system
(j’ai aussi joué avec des options) et le petit script que j’ai écrit:... et encore branché, que débranché le moniteur, plusieurs fois. Alors maintenant, je pourrais dire:
xrandr -q
pour savoir si un moniteur est branché ou non.Mais soyez prudent, car il ne semble pas y avoir d'autres moyens. Par exemple,
xrandr
semble partager cette information, mon bureau GNOME passeraitxinerama
automatiquement à ... quand je courraisxrandr
.Quelques docs
la source
Les lignes suivantes sont apparues dans
udevadm monitor
lors de la connexion d'un moniteur au connecteur VGA. Donc, il pourrait y avoir un moyen de comprendre cela.
la source
Pour ceux qui, pour une raison quelconque, ne veulent pas prendre la route hotplug, il est toujours possible de ne pas interroger dans un script à l'aide de inotifywait:
Il est préférable de l'invoquer à partir de votre fichier .xsessionrc, sans oublier la fin &. Les sondages avec xrandr ont posé de sérieux problèmes d’utilisabilité sur mon tout nouvel ordinateur portable (la souris ralentissait périodiquement).
la source
/proc
, mais leinotifywait -q -e close /sys/class/drm/card0-DP-2/status
fait de ne pas mettre fin à cette opération neJe me suis tenu à utiliser srandrd . Il surveille les événements X et déclenche votre script lorsqu'un affichage est connecté ou déconnecté.
la source
Évidemment il devrait y avoir quelque chose! :) / sys filesystem indique à l’espace utilisateur quel matériel est disponible, ainsi ses outils (tels que udev ou mdev) peuvent remplir dynamiquement un répertoire "/ dev" avec des nœuds de périphérique représentant le matériel actuellement disponible. Linux fournit deux interfaces hotplug: / sbin / hotplug et netlink.
Il y a une petite démo C dans le fichier suivant. http://www.kernel.org/doc/pending/hotplug.txt
la source
Aujourd'hui, les logiciels système / applications sous Linux utilisaient certaines techniques ipc pour communiquer entre eux. D-Bus est maintenant principalement utilisé avec les applications GNOME et pourrait aider.
Journal Linux:
wiki:
Il existe même une bibliothèque Python pour cela, et Ubuntu a récemment utilisé cette capacité appelée " Zeitgeist ".
la source
Graphiquement, vous pouvez voir si le moniteur est reconnu avec
Monitor
, je sais que vous pouvez le trouver sur Ubuntu, Fedora et d’autres dans cet emplacement (ou un emplacement similaire).Et vous pouvez activer / désactiver le moniteur de votre choix ou utiliser les deux en même temps avec une image dupliquée sur un moniteur ou des moniteurs indépendants
la source