Impossible d'automatiser de manière fiable les paramètres xrandr dans Debian 7 sur VirtualBox

23

Bien qu'il existe plusieurs questions sur le sujet (dont la réponse la plus utile est celle-ci ) et divers fils de discussion sur d'autres forums, je ne peux pas définir de manière fiable mes xrandrparamètres dans Debian 7 sur VirtualBox.

J'essaie d'utiliser xrandrpour contrôler mes paramètres d'affichage (plutôt que de permettre à mon environnement de bureau de les automatiser) parce que j'utilise le i3gestionnaire de fenêtres , qui n'automatise pas les paramètres d'affichage ni n'utilise les paramètres d'affichage de l'environnement de bureau Gnome.

Installer:

Je ne suis pas sûr de la pertinence de tout cela, en particulier du matériel, car je ne pense pas que Debian puisse réellement accéder à beaucoup d'informations sur la configuration du moniteur; pour autant que je sache, VirtualBox ne fait que signaler l'existence d'écrans virtuels comme s'il s'agissait de moniteurs matériels.

Matériel

  • Ordinateur portable Lenovo avec carte graphique nVidia (le GPU Intel intégré n'est pas utilisé, AFAIK - il y a un paramètre BIOS que j'ai utilisé pour accomplir cela)
    • Windows 7
    • 32 Go de RAM
    • Utilisation du dernier pilote (je pense) nVidia (340.84) - cela pourrait avoir de l' importance, car j'ai activé l'accélération 3D dans VirtualBox (voir ci-dessous), ce qui, je pense, permet au système d'exploitation invité d'avoir accès au matériel hôte
  • Téléviseur Seiki 4K (utilisé comme moniteur) via HDMI via une station d'accueil (qui convertit en interne DisplayPort en HDMI)
  • Moniteur Samsung SyncMaster 243T tourné verticalement

VirtualBox

  • Utilisation de VirtualBox 4.3.20
  • Les compléments invité (même version) sont installés
  • Nombre de moniteurs: 2 (attribué au Seiki et au SyncMaster en mode plein écran)
  • Mémoire vidéo maximale (128 Mo) utilisée
  • L'accélération 3D est activée

Paramètres invités

  • Debian 7 32 bits
  • gnomeet gdm3sont installés
  • WM préféré est i3

Comportement:

Lorsque je lance i3et interroge xrandr, les paramètres d'affichage par défaut semblent toujours identiques entre VBOX0et VBOX1, les deux "moniteurs" auxquels VirtualBox rapporte xrandr(du moins, c'est comme ça que je le comprends; il se peut que je manque quelque chose). Notez que pour autant que je sache, il n'y a pas de bon moyen de savoir quelle VBOX # est celle qui surveille à court d'essais et d'erreurs.

Habituellement, cela inclut une résolution raisonnable (bien que légèrement inférieure à la native) pour mon SyncMaster vertical, mais pas de résolution 4K pour le Seiki. L'option "redimensionner automatiquement l'affichage invité" dans VirtualBox ne semble pas affecter xrandr.

J'ai essayé diverses modifications du script décrit dans la réponse liée ci - dessus , mais en général, je semble obtenir diverses xrandrerreurs. Je n'ai pas trouvé beaucoup de corrélations entre les différentes choses que j'ai essayées et les erreurs que j'obtiens, mais voici les principales choses qui pourraient être importantes:

Ajustements de script

  • (Généralement) sauter les VBoxServiceétapes de redémarrage (elles ne semblent pas changer le xrandrcomportement)
  • Utilisez l' xrandr --fboption avant toute autre xrandrcommande; cela se traduit parfois par une erreur "écran spécifié pas assez grand" répertorié ci-dessous
  • Utilisez 30 ips au lieu de 60 (4K via HDMI actuel est de 30 ips max, mais je ne pense pas que cela devrait avoir d'importance dans VirtualBox; en tout cas, je pense que je l'ai parfois fait fonctionner et parfois échoué dans les deux sens)
  • Utiliser à la cvtplace de gtf(ceux-ci semblent se comporter essentiellement de la même manière)
  • Remplacez le premier nombre donné par gtf(qui est généralement autour de 200 ou 300) par un nombre plus petit, tel que 100.00(je pense que cela a fonctionné une ou deux fois sur la ligne de commande, mais ne semble généralement pas faire de différence)
  • Randomisez de nouveaux noms de mode en utilisant $RANDOM(j'ai également essayé divers autres moyens de jouer avec les noms)
  • --rmmodeModes explicites avant de les créer à l'aide --newmode(cela semble empêcher l'erreur "police" répertoriée ci-dessous)
  • Utilisez --right-ofou --left-oflorsque vous définissez --outputs (car les écrans sont généralement reflétés par défaut)

Messages d'erreur

  • xrandr: specified screen 5120x2160 not large enough for output VBOX0 (3840x2160+3840+0) X Error of failed request: BadValue (integer parameter out of range for operation) J'ai obtenu celui-ci tout à l'heure lors de la réexécution du script après que les moniteurs aient déjà été contraints à leur résolution appropriée (en utilisant la solution de contournement décrite dans la section suivante). Cela m'a surpris, car xrandrrapporte ce qui suit: Screen 0: minimum 64 x 64, current 5120 x 2160, maximum 16384 x 16384
  • X Error of failed request: BadMatch (invalid parameter attributes) Cela se produit parfois lorsque vous essayez de faire un --newmode. C'est probablement la deuxième raison la plus courante d'échec du script. Je pense qu'il peut être causée par xrandr« se souvenir » , le nom du mode à partir d' une précédente tentative de mettre en place, mais en utilisant $RANDOMne pas apparaître pour résoudre systématiquement le problème, il peut donc être un autre problème. (Je suppose qu'il est possible que même avec des $RANDOMcollisions de noms, cependant.) Je n'ai pas vu cette erreur depuis que j'ai commencé à utiliser --rmmode, mais je n'ai pas exécuté le script suffisamment de fois depuis l'ajout de cette commande pour être sûr que cela fait une différence pour le comportement.
  • X Error of failed request: BadMatch (invalid parameter attributes) Cela se produit parfois lorsque vous essayez de faire un --addmode. C'est probablement la raison la plus courante de l'échec du script, et cela me mystifie. Parfois, l'exécution manuelle (c'est-à-dire dans un terminal) de la même séquence de commandes utilisée par le script semble être une solution de contournement viable pour cette erreur, ce qui est bizarre.

Solution Gnome:

J'ai constaté que si je me connecte au bureau Gnome, puis exécute la fonction "Redimensionnement automatique de l'affichage invité" de VirtualBox, puis me déconnecte et me reconnecte avec i3, xrandrinclut généralement les résolutions correctes pour le Seiki et le SyncMaster dans sa génération automatique liste des modes, et la résolution 4K est définie comme la résolution "préférée" pour chaque écran VBOX. Cela me permet d'utiliser simplement xrandr --output [4K VBOX] --auto --left-of [SyncMaster VBOX], suivi de xrandr --output [SyncMaster VBOX] --mode [SyncMaster resolution](notez que la résolution SyncMaster doit toujours être spécifiée manuellement, car xrandrsignale la même résolution préférée pour les deux VBOX# sans aucun égard pour la vérité ou la raison).

Cette solution de contournement, une fois exécutée, persiste apparemment pendant les arrêts et redémarrages (c'est-à-dire que les modes souhaités sont toujours présents dans xrandrla liste des modes de, bien que je doive toujours exécuter les deux xrandrcommandes après le démarrage d'une i3session), mais ne persiste pas toujours lorsque simplement vous déconnecter et démarrer une nouvelle i3session. Notez que l' gdm3écran de connexion n'a jamais la bonne résolution (pour autant que je l'ai vu). Je n'ai pas d'autre commentaire sur l'étrangeté qui se passe ici.

EDIT: Cette approche ne semble pas être scriptable, et le comportement ne semble pas être cohérent.

Autres notes:

  • Je n'ai pas de xconffichier (ou similaire) dans mon répertoire etc/X11.
  • La réparation des écrans est un problème assez courant, car chaque fois que j'éteins l'un de mes moniteurs, VirtualBox tue l'un des moniteurs virtuels plein écran. (Urgh.)

Des questions:

  • Existe-t-il un moyen de distinguer par programme les capacités matérielles réelles (c'est-à-dire les résolutions natives) de différents moniteurs à partir de VirtualBox?
  • Pourquoi est-ce que je vois ces diverses erreurs? Que se passe-t-il xrandr, etc.?
  • Existe-t-il un moyen d'obtenir de manière fiable la bonne résolution plein écran sans m'obliger à démarrer une gnomesession avant ma i3session?

Problèmes éventuellement liés

  • Le pointeur de ma souris ne s'aligne pas correctement correctement avec l'endroit où les clics semblent être détectés; des clics se produisent généralement en dessous et à droite du pointeur. Une fois que les écrans sont correctement configurés, ce problème disparaît généralement, bien que les écrans aient actuellement les bonnes résolutions, mais le pointeur est toujours légèrement éteint.
  • Lorsque j'arrive à obtenir les résolutions correctes, l'écran scintille parfois. C'est ennuyeux mais vivable. Une idée de ce qui la cause ou si elle peut être corrigée?
Kyle Strand
la source
Je devrai déterrer mes notes, mais quels sont les modes pris en charge pour vos écrans? i3 a-t-il un moyen de démarrer un script avant / juste après la connexion? superuser.com/questions/808737/… est ce que j'ai fini par faire avec un problème physique similaire, mais cela peut nécessiter un peu de travail pour fonctionner dans votre cas.
Journeyman Geek
@JourneymanGeek Le 4K prend en charge la plupart des modes standard à 60 Hz et prend en charge les modes plus grands (y compris 4K) à 30 Hz. Le SyncMaster semble prendre en charge la plupart des modes normaux, avec une résolution native (verticale) de 1920x1280. Le script de configuration i3 prend en charge l'exécution d'un script à la connexion; J'utilise cette fonctionnalité pour exécuter automatiquement le script décrit ci-dessus, qui ressemble au vôtre, mais je reçois toujours des xrandrerreurs étranges .
Kyle Strand du
Comment lancez-vous i3? A-t-il sa propre routine d'initialisation X? Ou le déposez-vous dans votre .xinitrcet utilisez-vous startx? J'utilise xmonad (qui, si je comprends bien, est similaire à i3?) Que je lance en utilisant startx. Mes xrandrscripts sont tous effectués .xinitjuste avant le lancement de mon gestionnaire de fenêtres. J'ai eu d'excellents résultats de cette façon. X est prêt à partir, et rien d'autre n'a été lancé pour interférer.
Chris
J'utilise gdm3et ai i3sélectionné comme environnement de bureau par défaut pour mon compte.
Kyle Strand
1
Malheureusement, aucun auquel je peux penser immédiatement, car la VBox ne semble pas attribuer systématiquement des noms aux moniteurs. Pourriez-vous publier la sortie de xrandr --query(a) lorsqu'il détecte les paramètres de manière incorrecte, et (b) après que tout a fonctionné correctement? Ou au moins un de tout fonctionne correctement.
Chris

Réponses:

0

La mise à jour vers la dernière version de VirtualBox, 5.0.14, semble avoir résolu le problème.

Kyle Strand
la source