Comment faire pour que la résolution du moniteur externe définie par xrandr persiste

11

tl; dr

Mon ordinateur portable oublie toujours la résolution correcte du moniteur externe qui lui est connecté. Comment faire "coller" la configuration?

Détails

J'ai un ordinateur portable exécutant Linux Mint connecté à un moniteur ViewSonic externe. Je l'ai configuré pour utiliser le moniteur externe comme deuxième écran (c'est-à-dire non en miroir). Cela a bien fonctionné pendant quelques semaines.

Du coup, l'ordinateur portable ne l'a plus reconnu comme un ViewSonic, auquel cas il ne connaissait pas sa résolution optimale ( 1600 x 1200), ne permettant qu'un maximum de 1028 x 768. 1 Cela ne fonctionnait pas du tout avec mon ordinateur portable, qui a une 1920 x 1200résolution.

Après beaucoup de frustration, j'ai trouvé cette réponse . Cela m'a aidé à résoudre le problème, comme suit (la sortie de la cvtcommande étant la modélisation utilisée dans la commande suivante):

cvt 1600 1200
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00

C'est exactement ce que j'aurais souhaité pouvoir faire, mais je ne pouvais pas le faire via l'interface graphique. (Il y a des raisons pour lesquelles j'aime toujours la ligne de commande ...)

Cela a encore une fois bien fonctionné pendant un certain temps. Cependant, lorsque j'ai démarré l'ordinateur aujourd'hui et que je me suis connecté, j'ai reçu une fenêtre contextuelle de notification avec une chaîne d'erreurs concernant différents modes tentés qui ne fonctionnaient pas, et le moniteur externe a été éteint. J'ai répété les commandes ci-dessus, et cela fonctionne à nouveau.

J'ai une carte nVidia. J'ai essayé d'installer le pilote propriétaire lorsque les choses ont commencé à mal tourner, mais à ce stade, le moniteur externe n'était plus du tout reconnu, donc je suis de retour au pilote open source. Je n'ai pas de Xorg.confou un Xorg.conf.d, seulement un xorg.conf.failsafe.

Je ne veux pas répéter ces commandes à chaque démarrage de la machine. Existe-t-il un moyen de les enregistrer sur mon Xorg.confou quelque chose? Cela fait plusieurs années que je n'ai pas fait grand chose avec X. Quelqu'un peut-il m'aider ici?


1 Je n'ai pas pu déterminer pourquoi cela s'est produit. Ma meilleure supposition est une mise à jour du pilote problématique.

Kazark
la source
1
Quelle carte graphique utilisez-vous? Et si c'est ATI / AMD ou Nvidia, utilisez-vous le pilote propriétaire ou open source? Avez-vous actuellement un /etc/X11/corg.conffichier ou quelque chose dans /etc/X11/corg.conf.d? Si c'est le cas, veuillez modifier votre question et ajouter le contenu de ces fichiers.
terdon
Veuillez modifier votre question pour ajouter des informations supplémentaires, elle est difficile à lire et facile à manquer dans les commentaires. Cela dit, oui, le xorg.conf n'est plus nécessaire, ces choses sont désormais gérées par udev.
terdon
En regardant à nouveau votre question et ce que j'ai manqué lorsque j'ai écrit ma réponse, c'est que vous avez un ordinateur portable. Ce que vous voudrez peut-être étudier, c'est écrire une udevrègle pour appeler un script pour faire xrandr chaque fois que le moniteur est branché ou débranché, ce sera beaucoup mieux si votre ordinateur n'est pas toujours connecté au moniteur. Sinon, si vous êtes content de l'avoir installé au même endroit tout le temps, Xorg.confc'est la voie à suivre.
Graeme

Réponses:

5

Je suis sûr qu'il y a une meilleure façon, je pense que tout est udevdésormais géré, mais si vous savez que ces commandes vont le résoudre, vous pouvez toujours les transformer en script:

#!/usr/bin/env bash
cvt 1600 1200
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00

Rendez-le exécutable, puis ajoutez-le aux applications de démarrage de votre environnement de bureau. C'est probablement le meilleur choix si votre DE vous en offre la possibilité.


Si vous ne pouvez pas faire ce qui précède, comme un hack sale, vous pouvez les ajouter à votre ~/.profile:

if [ ! -t 0 ] 
then
    cvt 1600 1200
    xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
    xrandr --addmode VGA-1 1600x1200_60.00
fi

Le if [ ! -t 0 ]devrait s'assurer que cela n'est exécuté que dans l'interface graphique et .profileprovient du gestionnaire de connexion de mint si je me souviens bien.

Maintenant, vous devriez également pouvoir l'utiliser, ~/.xsessionmais j'ai eu des problèmes avec cela ignoré. Beaucoup d'anciennes approches sont remplacées et je ne suis pas sûr de l'état actuel de la technique.

terdon
la source
Vous n'avez pas besoin d'utiliser cvt 1600 1200 car nous avons déjà utilisé sa sortie dans les deux lignes suivantes.
PraveenMax
4

Si vous utilisez le pilote propriétaire Nvidia, alors nvdia-settingsdevrait être l'outil GUI pour configurer le Xorg.conffichier. Il devrait avoir son propre paquet dans Linux Mint, donc l'installation serait aussi simple que:

sudo apt-get install nvidia-settings

Cela devrait mettre une icône quelque part dans votre menu, vous pouvez l'exécuter à partir de là (bien que je ne sais pas comment vous obtenez des autorisations root). À partir de la ligne de commande, je pense que vous pouvez faire:

sudo /usr/lib/nvidia/current/nvidia-settings

Si vous voulez faire la ligne de commande, alors nvidia-xconfigsemble être l'outil à utiliser ( nvidia-xconfigpackage pour moi). Dans les deux cas, vous obtiendrez généralement de meilleurs résultats avec le pilote propriétaire s'il est correctement configuré. Ces outils généreront au moins un Xorg.conffichier raisonnable que vous pourrez ensuite modifier directement ou via l'un de ces programmes.

Graeme
la source