web-dev-qa-db-fra.com

Possibilité que xrandr ne réagisse pas au débranchement du moniteur secondaire, retrait du câble HDMI / DisplayPort?

Je suis sur un système de bureau GPU Nvidia GTX 950 avec trois moniteurs connectés. Un moniteur sur le port de sortie HDMI, deux autres sur les ports DisplayPort.

Le comportement par défaut est que le fait de désactiver l'un des moniteurs "secondaires" oblige xrandr à redimensionner le bureau virtuel et à réorganiser toutes les fenêtres pour qu'elles correspondent aux affichages survivants.

Existe-t-il un moyen d’obliger xrandr à ignorer le retrait d’un câble HDMI et/ou d’un moniteur associé de manière à conserver le même "bureau virtuel" (même si les fenêtres sont hors écran et difficile d’accès) et à ne pas le arrangement il fait pour consolider toutes les fenêtres actives dans les affichages survivants? En outre, pour réinsérer le câble et le même moniteur et le rallumer?

Ubuntu 16.04 et 16.10 semblent avoir le même comportement de base. J'ai les deux comme options de démarrage. Je vous remercie.

EDIT 2017: j'ai trouvé des scripts bash et python pour tenter d'automatiser le réarrangement des fenêtres hors écran. Celles-ci peuvent être utiles pour faire face à la situation. Même avec Ubuntu 17.04 (format fraîchement installé), ce problème général est toujours d'actualité pour moi. Discussions de script: Comment récupérer une fenêtre hors écran après avoir déconnecté le second moniteur? et Déplacer des fenêtres vers des écrans spécifiques à l'aide de la ligne de commande

4

Cela peut fonctionner sur les ports HDMI/VGA mais pas sur le protocole DP en raison de certaines normes pour le protocole DP qui doivent toujours transmettre les événements de détection.

Je pourrais tester ceci sur Dell E6410 avec VGA/DP. Retirer le câble de VGA ne déclenche pas de réinitialisation de xrandr et ne déplace pas les fenêtres.

  1. _gksu nvidia-settings_
  2. Allez dans l'onglet de configuration X puis exportez la configuration
  3. Copier uniquement la section de l'appareil
  4. _Sudo mkdir /etc/X11/xorg.conf.d/_
  5. _Sudo nano /etc/X11/xorg.conf.d/90_my_nvidia_hacks.conf_
  6. Coller la section de l'appareil

    _Section "Device"
        Identifier     "Device0"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "NVS 3100M"
    EndSection
    _
  7. Ajoutez-y cette ligne _Option "UseHotplugEvents" "false"_

    _Section "Device"
        Identifier     "Device0"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "NVS 3100M"
        Option "UseHotplugEvents" "false"
    EndSection
    _
  8. Redémarrez ou redémarrez lightdm

    _Sudo systemctl restart lightdm
    _

Vous pouvez également trouver cela utile aussi _Option "AllowEmptyInitialConfiguration" "true"_ qui crée une section de moniteur vide même si aucun écran n’est connecté au démarrage X.

Référence:

Mes écrans sont reconfigurés de manière inattendue lorsque je branche ou débranche un écran, ou si je l'éteins puis le rallume.

Il s'agit d'un cas particulier des problèmes décrits dans "Les paramètres d'affichage que j'ai configurés dans nvidia-settings ne persistent pas". Certains environnements de bureau comprenant des outils de configuration d'affichage avancés configurent automatiquement la disposition de l'affichage en réponse aux modifications de configuration détectées. Par exemple, lorsqu'un nouvel écran est branché, un tel environnement de bureau peut tenter de restaurer la présentation précédente utilisée avec l'ensemble des affichages actuellement connectés ou configurer une présentation par défaut en fonction de sa propre stratégie.

Sur les serveurs X prenant en charge RandR 1.2 ou une version ultérieure, les rapports du pilote NVIDIA X affichent les événements de branchement à chaud sur le serveur X via RandR lorsque les écrans sont connectés et déconnectés. Ces événements hotplug peuvent déclencher un environnement de bureau doté de fonctions de gestion d'affichage avancées pour modifier la configuration d'affichage. Ces modifications peuvent affecter des paramètres tels que le nombre d'écrans actifs, leur résolution et leur positionnement les uns par rapport aux autres, les paramètres de correction des couleurs par écran, etc.

Outre les événements hotplug générés par la connexion ou la déconnexion d'écrans, les écrans DisplayPort généreront un événement de déconnexion à chaud lors de la mise hors tension et un événement à la mise sous tension, même si aucun branchement ou débranchement physique n'a lieu. Cela peut entraîner des modifications de la configuration de l'affichage induites par le hotplug sans qu'aucune action hotplug ne soit réellement effectuée.

Si les événements d'affichage hotplug entraînent des modifications de configuration indésirables, essayez les solutions et les solutions de contournement répertoriées dans "Les paramètres d'affichage que j'ai configurés dans nvidia-settings ne persistent pas.". Une autre solution consiste à désactiver la génération de rapports du pilote NVIDIA X sur les événements hotplug avec l'option de configuration UseHotplugEvents X. Notez que cette option n'aura aucun effet sur les périphériques DisplayPort, qui doivent signaler tous les événements hotplug pour assurer une fonctionnalité correcte.


Option "UseHotplugEvents" "boolean"

Lorsque cette option est activée, le pilote NVIDIA X génère les événements d'affichage modifiés RandR lorsque les affichages sont connectés ou déconnectés d'un processeur graphique NVIDIA. Certains environnements de bureau écoutent ces événements et reconfigurent dynamiquement le bureau lorsque des affichages sont ajoutés ou supprimés.

La désactivation de cette option supprime la génération de ces événements RandR pour les écrans autres que DisplayPort, c'est-à-dire ceux connectés via VGA, DVI ou HDMI. Les événements Hotplug ne peuvent pas être supprimés pour les écrans connectés via DisplayPort.

Notez que la vérification de la configuration d'affichage (par exemple, avec xrandr ou nvidia-settings) peut provoquer la génération d'événements d'affichage RandR modifiés, que cette option soit activée ou désactivée. En outre, certains ports VGA ne peuvent pas être détectés à chaud: sur ces ports, l’ajout ou la suppression d’affichages ne peut être détecté qu’en vérifiant à nouveau la configuration de l’affichage.

Par défaut: on. Le pilote générera des événements RandR lorsque des affichages sont ajoutés ou supprimés.

Option "AllowEmptyInitialConfiguration" "boolean"

Normalement, le pilote NVIDIA X ne pourra pas démarrer s'il ne trouve aucun périphérique d'affichage connecté au GPU NVIDIA. AllowEmptyInitialConfiguration annule ce comportement pour que le serveur X démarre quand même, même si aucun périphérique d'affichage n'est connecté.

L'activation de cette option est utile dans les configurations lors du démarrage du serveur X sans aucun périphérique d'affichage connecté au GPU NVIDIA, mais il est possible que l'un d'entre eux soit connecté ultérieurement. Par exemple, certains moniteurs n'apparaissent pas comme connectés lorsqu'ils sont mis hors tension, même s'ils sont physiquement connectés au GPU.

Ceci est également utile dans les ordinateurs portables basés sur Optimus, où RandR 1.4 affichage déchargé (voir Chapitre 33, Déchargement de l'affichage graphique avec RandR 1.4) est utilisé pour afficher l'écran sur le panneau d'affichage interne non-NVIDIA, mais un affichage externe peut être connecté plus tard.

Par défaut: off. Le pilote refusera de démarrer s'il ne trouve pas au moins un périphérique d'affichage connecté.

3
user.dz