XRandR
XRandR est un outil en ligne de commande qui utilise l'extension RandR de Xorg afin de gérer les paramètres d'affichage de vos écrans comme la taille, le redimensionnement, la rotation ou le multi-écran.
Le point fort de l'extension RandR est que cette dernière est directement implémentée dans Xorg et ne nécessite pas le redémarrage de X lorsque l'on souhaite par exemple changer sa résolution, brancher un deuxième écran ou en utiliser plusieurs.
Il existe des interfaces graphiques réalisant une partie des transformations de xrandr :
- Voir la page sur comment configurer son écran pour les interfaces graphiques par défaut.
- ARandR : très utile pour gérer le multi-écran avec LXDE (Lubuntu). Permet de régler l'emplacement d'un écran activé mais qui n'est pas connecté (écran virtuel qui peut être partagé via vnc)
Configuration
Connaitre la configuration xrandr actuelle
Avant de jouer avec xrandr, il est souvent utile de connaitre la configuration xrandr actuelle. Voici une astuce super utile : utiliser l'application arandr :
- Installer arandr
- Lancer arandr
- (optionnel) changer la configuration de vos écrans
- Menu Disposition ⇒ commande Enregisrter sous…
- Choisir un fichier
- Ouvrir le fichier dans un éditeur de texte et vous verrez la commande xrandr complète
Lister les sorties et les résolutions disponibles
Pour lister les résolutions disponibles, depuis un terminal lancez la commande suivante:
xrandr
Vous obtenez une réponse, variable suivant votre matériel et la configuration de votre serveur X, du type :
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 32767 x 32767 eDP1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 345mm x 194mm 1366x768 60.0*+ 1360x768 59.8 60.0 1024x768 60.0 800x600 60.3 56.2 640x480 59.9 CVT connected 1440x900+0+0 (normal left inverted right x axis y axis) 0mm x 0mm 1440x900 60.0 1024x768 60.0* 800x600 60.3 56.2 848x480 60.0 640x480 59.9 TV1 unknown connection (normal left inverted right x axis y axis) 848x480 59.9 + 640x480 59.9 + 1024x768 59.9 800x600 59.9
Vous voyez apparaître les noms des modes écrans disponibles en première colonne et les différentes fréquences de rafraîchissement disponibles en seconde colonne.
Les noms des écrans apparaissent en MAJUSCULES et leur statut suit. Il existe 5 sorties vidéo possibles : sortie VGA, sortie DVI, sortie HDMI, sortie LVDS pour la sortie principale d'un portable et sortie TV pour S-video. Les écrans utilisables sont marqués « connected », leurs noms seront utilisés avec la commande « – output ».
Attention, il n'est pas nécessaire d'avoir sur votre ordinateur toutes les sorties détectées par XRandR. Certaines peuvent être bridées par le constructeur.
Les modes activés sont directement suivis du signe *.
Lister les propriétés disponibles
L'option --prop
permet d'obtenir un affichage encore plus détaillé des propriétés disponibles.
usr@pc:~$ xrandr --prop
La sortie de cette commande renvoie une information analogue à l'affichage ci-dessous :
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192 HDMI-1 disconnected (normal left inverted right x axis y axis) aspect ratio: Automatic supported: Automatic, 4:3, 16:9 Broadcast RGB: Automatic supported: Automatic, Full, Limited 16:235 audio: auto supported: force-dvi, off, auto, on non-desktop: 0 range: (0, 1) link-status: Good supported: Good, Bad HDMI-2 disconnected (normal left inverted right x axis y axis) aspect ratio: Automatic supported: Automatic, 4:3, 16:9 Broadcast RGB: Automatic supported: Automatic, Full, Limited 16:235 audio: auto supported: force-dvi, off, auto, on non-desktop: 0 range: (0, 1) link-status: Good supported: Good, Bad DP-1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm Broadcast RGB: Automatic supported: Automatic, Full, Limited 16:235 audio: auto supported: force-dvi, off, auto, on non-desktop: 0 range: (0, 1) link-status: Good supported: Good, Bad 1024x768 60.00 800x600 60.32 56.25 848x480 60.00 640x480 59.94 1366x768_60.00 59.80* HDMI-3 disconnected (normal left inverted right x axis y axis) aspect ratio: Automatic supported: Automatic, 4:3, 16:9 Broadcast RGB: Automatic supported: Automatic, Full, Limited 16:235 audio: auto supported: force-dvi, off, auto, on non-desktop: 0 range: (0, 1) link-status: Good supported: Good, Bad
Fréquence listée dans les modes disponibles
Dimension de la fenêtre
Pour changer la résolution vers 1440x900 (plus haute résolution disponible d'après la réponse du terminal), tapez dans un terminal:
xrandr -s 1440x900
Fréquences de rafraîchissement
La commande ci-dessous change la fréquence à la nouvelle valeur de 1440×900 à 60 Hz :
xrandr -s 1440x900 -r 60
Utiliser plusieurs écrans
Si par exemple vous souhaitez mettre le second écran connecté en HDMI sur le coté droit de l'écran principal et que l'écran principal ait une résolution de 1920x1200
, nous pouvons entrer dans un terminal :
xrandr --output HDMI --pos 1920x0 --mode 1440x900 --rate 60
Ainsi, nous pouvons en déduire l'effet des paramètres.
- --output détermine l'écran à configurer
- --pos positionne l'écran dans l'espace virtuel, dans cet exemple l'écran sera décalé de 1920 px vers la droite et de 0 vers le bas. Soit tout simplement à droite de l'écran principal (optionnel)
- --mode détermine le mode utilisé (optionnel)
- --rate la fréquence de l'écran, optionnel : par défaut c'est la plus grande valeur qui est appliquée.
Exemples de configuration multi-écrans (multi screen, dual screen, mirror screen, clone screen...)
Pour chaque configuration, mettez la ou les lignes suivantes dans /etc/X11/Xsession.d/45x11-xrandr
Pour tester après une modification de configuration, il suffit de fermer puis réouvrir une session.
- Deux écrans cote à cote :
DP-2 est l'écran principal, DP-1 est à droite de DP-2, résolutions différentes :
xrandr --output DP-2 --mode 1680x1050 --primary xrandr --output DP-1 --mode 1280x1024 --right-of DP-2
Vous pouvez adapter la position de l'écran secondaire avec --left-of, --right-of, --above, --below en fonction de vos besoins.
- Deux écrans clonés, résolutions identiques (Clone dual screen) :
DP-2 est l'écran principal, DP-1 est identique à DP-2, les résolutions sont identiques :
xrandr --output DP-2 --mode 1280x1024 --output DP-1 --same-as DP-2
- Deux écrans clonés, résolutions différentes (Clone dual screen) :
DP-3 est l'écran principal, DP-1 est identique à DP-3, les résolutions sont différentes :
xrandr --output DP-3 --mode 1280x1024 --scale 1x1 --output DP-1 --same-as DP-3 --scale 1.25x1.33
Ici, la résolution de l'écran principal est 1280x1024, celle de l'écran secondaire est 1024x768.
NB : L'échelle déclarée pour l'écran secondaire (1.25x1.33) est obtenue en divisant les dimensions de l'écran principal par celles de l'écran secondaire.
Ici : 1280/1024=1.25 et 1024/768=1.33
Fréquence non listée dans les modes disponibles
Il est tout à fait possible que votre écran supporte le mode 1280x1024 à 60Hz mais que ce mode ne soit actuellement pas listé dans les modes disponibles. Dans ce cas vous pouvez imposer la résolution de l'écran à cette dimension et cette fréquence avec xrandr
. Mais, si ce mode n'est pas supporté, vous obtiendrez un message Frequency out of range
et vous ne verrez plus rien à l'écran… Vous pourrez éventuellement revenir à une résolution et une fréquence supportées en utilisant le paragraphe Fréquence listée dans les modes disponibles en aveugle (c'est à dire sans voir ce que l'on tape!).
Pour obtenir un mode non listé, utilisez les programmes complémentaires gtf et sed. Vous entrez la ligne de commande suivante, vous devriez bien entendu adapter les nombres 1280, 1024 et 60 à votre résolution cible :
xrandr --newmode $(gtf 1280 1024 60 | sed -ne 's/"//g;s/ Modeline //p')
Vous avez normalement défini un mode nommé 1280x1024_60.00
ou un nom adapté à votre résolution cible. Maintenant, il ne vous reste plus qu'à l'autoriser pour l'écran récalcitrant. Imaginons que le nom de cet écran soit VGA1.
xrandr --addmode VGA1 1280x1024_60.00
Vous pouvez maintenant utiliser un programme graphique pour changer la résolution de cet écran. Par exemple, par le biais de la méthode graphique ou par celle décrite à la section Fréquence listée dans les modes disponibles ci-dessus.
Activer la résolution choisie
Il reste maintenant à appliquer cette résolution soit (liste non exhaustive) :
- En ligne de commande :
xrandr --output <SortieEcran> --mode <NomDuMode>
- En sélectionnant dans les paramètres d'affichage le nouveau mode,
- En sélectionnant dans ArandR ce nouveau mode.
Maintenant que la nouvelle résolution fonctionne, il faut l'activer pour l'avoir au prochain démarrage de l'ordinateur. Une solution consiste à créer un script avec nos deux commandes et de le lancer au démarrage. Avec notre exemple, créez un fichier Resolution.sh avec ce qui suit comme contenu :
#!/bin/bash/ xrandr --addmode HDMI 1440x900_60 xrandr --output HDMI --mode 1440x900_60 exit 0;
rendez votre script éxécutable et ajoutez-le enfin aux applications au démarrage (cf. point suivant pour une explication détaillée de la procédure de créatoin d'un script).
Ajouter une résolution non listée
La résolution de votre écran n'est pas disponible par défaut. C'est rare et ça arrive, on va voir comment gérer cela.
Commencez par identifier votre écran :
xrandr | awk '/connected [^(]/{print $1}'
Par exemple comme réponse vous avez "eDP-1-1" comme identifiant, vous aurez à le remplacer par le votre dans les prochaines commandes.
Si vous désirez essayer avec une résolution de 1920x1080 en 60hz (n.b. vérifiez si la carte graphique le supporte avant) Tapez la commande :
gtf 1920 1080 60
En retour vous aurez :
# 1920x1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
Ce qui nous intéresse ici est la seconde ligne (# est toujours suivi d'un commentaire)
Pour ajouter la résolution depuis xrandr cela donne donc :
xrandr --newmode "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
et donc pour l'ajouter au menu ("eDP-1-1" sera à remplacer par votre identifiant d'écran) tapez :
xrandr --addmode eDP-1-1 1920x1080_60.00
Pour changer de résolution depuis le terminal :
xrandr -s 1920x1080_60.00
Cependant au redémarrage, ces modifications seront perdues, d'ou le chapitre suivant
Rendre persistantes les modifications
Créer le script
Reprenez les commandes précédentes (en modifiant les commandes au besoin) :
#!/bin/sh xrandr --newmode "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync xrandr --addmode eDP-1-1 1920x1080_60.00 xrandr -s 1920x1080_60.00
'Ctrl+X' pour quitter, n'oubliez pas de sauvegarder en tapant "o".
Lancer le script via /etc/X11/Xsession.d/
La première méthode consiste à créer le fichier 45x11-xrandr avec les droits d'administration dans /etc/X11/Xsession.d/, en y mettant le script.
Lancer le script via ~/.xprofile
Créez un fichier "~/.xprofile" et copiez y le script
Lancer le script via le lancement d'application au démarrage
Une autre méthode, peut-être plus artisanale mais efficace, consiste à préparer un script qui sera lancé avec applications au démarrage.
Ajouter au script précédent :
#!/bin/bash gsettings set org.gnome.desktop.background picture-uri file:///usr/share/backgrounds/Xerus_Wallpaper_Grey_4096x2304.png gsettings set org.gnome.desktop.background picture-uri file:///usr/share/backgrounds/TCP118v1_by_Tiziano_Consonni.jpg exit 0;
Le script est enregistré dans un fichier texte (adapt_resolution.sh par exemple) auquel les droits d’exécution sont accordés :
chmod gua+x adapt_resolution.sh
Ensuite, sélectionner « applications au démarrage » parmi les applications d'Ubuntu. Choisir « Ajouter » parmi les options proposées :
Rechercher le script dans l'arborescence, compléter le nom donné à la commande ainsi que les commentaires puis cliquer sur « Ajouter » (l'image d'illustration correspond à une fenêtre de modification où « Ajouter » a été remplacé par « Enregistrer ») : Désormais le script se lancera automatiquement à chaque connexion de l'utilisateur (dès la prochaine connexion).
Pivoter l'affichage
Pour pivoter l'affichage (utilisation d'un écran en mode portrait par exemple), il est nécessaire d’utiliser l'option --rotate
suivie du sens de rotation et précédée du nom de l'écran concerné.
Les options de rotation disponibles sont :
normal | orientation par défaut (selon l'écran, généralement paysage ou portrait) |
left | pivoté de 90° vers la gauche par rapport à l’orientation « normal » |
right | pivoté de 90° vers la droite par rapport à l’orientation « normal » |
inverted | pivoté de 180° (à l'envers) par rapport à l'orientation « normal » |
Ainsi, pour un écran nommé « eDP1 » dont l'affichage doit être tourné vers la gauche, la commande sera la suivante :
usr@pcx:~$ xrandr --output eDP1 --rotate left
Résolution virtuelle
La résolution virtuelle consiste à définir une résolution plus grande que pourrait supporter l'écran.
Modes « panning » et « scale »
Avec le mode « panning » la taille d'affichage n'est pas modifiée mais on peut déplacer son écran au sein de cette résolution virtuelle. Ce serait comme si on utilisait une lucarne pour visionner une partie d'un paysage et qu'on la déplaçait.
Avec le mode « scale » vous pouvez augmenter artificiellement la résolution native à une résolution supérieure de celle supportée par la dalle LCD. Contrairement à la résolution virtuelle, tout le contenu est visible mais redimensionné.
Il faut préciser les paramètres « panning » et « scale » ensembles.
Exemple pour une sortie VGA 1280x800 pixels :
- mode « scale » :
xrandr --output VGA1 --mode 1280x800 --scale 1.5x1.5 --panning 1920x1200
- mode « panning » :
xrandr --output VGA1 --mode 1280x800 --scale 1x1 --panning 1920x1200
- revenir en mode « normal » :
xrandr --output VGA1 --mode 1280x800 --scale 1x1 --panning 1280x800
X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 7 (RRSetScreenSize) Serial number of failed request: 26 Current serial number in output stream: 28
Dans ce cas essayez :
xrandr --output VGA1 --scale 2x1 ; !-1
NVidia : "BadMatch" error
Si vous avez une erreur de ce type en ajoutant une résolution à une sortie vidéo :
xrandr --addmode HDMI-0 1400x1050_57.20 X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 18 (RRAddOutputMode) Serial number of failed request: 31 Current serial number in output stream: 32
Vous pouvez créer un fichier xorg.conf en adaptant les données :
# nvidia-settings: X configuration file generated by nvidia-settings # nvidia-settings: version 361.42 (buildd@lgw01-18) Tue Apr 5 14:33:28 UTC 2016 Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" 0 0 InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" Option "Xinerama" "0" EndSection Section "Files" EndSection Section "InputDevice" # generated from default Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/psaux" Option "Emulate3Buttons" "no" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" # generated from default Identifier "Keyboard0" Driver "kbd" EndSection Section "Monitor" # HorizSync source: edid, VertRefresh source: edid Identifier "Monitor0" VendorName "Unknown" ModelName "NT@ LCD MONITOR" HorizSync 28.0 - 66.0 VertRefresh 48.0 - 75.0 Option "DPMS" Modeline "1400x1050_57.20" 115.75 1400 1488 1632 1864 1050 1053 1057 1088 -hsync +vsync EndSection Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce GT 520" EndSection Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 Option "Stereo" "0" Option "nvidiaXineramaInfoOrder" "CRT-1" Option "metamodes" "HDMI-0: nvidia-auto-select +0+0, VGA-0: nvidia-auto-select +1400+0" Option "SLI" "Off" Option "MultiGPU" "Off" Option "BaseMosaic" "off" Option "ModeValidation" "NoVesaModes, NoXServerModes" Option "ExactModeTimingsDVI" "True" SubSection "Display" Depth 24 Modes "1400x1050_57.20" EndSubSection EndSection
Pour plus de détail, voir l'article hyper complet en Anglais sur xrandr sur askubuntu.com
Conserver les paramètres
L'automatisation de l'augmentation de résolution est possible. Créez le fichier /etc/X11/Xsession.d/45x11-xrandr avec les droits d'administration et collez-y le code suivant :
xrandr --verbose --output LVDS1 --mode "800x480" --scale "1.28x1.25"
Enregistrez et quittez. Dorénavant, la résolution sera augmentée automatiquement lors de chaque connexion.
Ajouter des écrans virtuels
Si vous souhaitez des écrans virtuels VIRTUALX, voir ce lien : https://askubuntu.com/questions/453109/add-fake-display-when-no-monitor-is-plugged-in
Voir aussi
- XrandR : Ajouter un mode vidéo non listé (modeline) - wiki officiel anglophone.
Le fichier xorg.conf
La configuration de xorg.conf n'est plus nécessaire sur les versions récentes d'Ubuntu et même, ce fichier n'existe plus. Cependant pour certaines cartes cela peut s'avérer utile, dans ce cas référez-vous à la page qui traite d'Xorg.
Contributeurs : ymulleneers azerttyu, Id2ndR, Ignace72, percherie, L'Africain.