Avec mon PC portable (un Asus U36SD) je n’arrivais pas à faire fonctionner la sortie HDMI ni même la sortie VGA sous Gentoo Linux.
L’utilisation de la combinaison de touche Fn+F8 l’affichage changeait, la sortie vidéo était activée mais X plantait sans autre solution pour moi de redémarrer la machine.
Ce portable dispose de la technologie Optimus de nvidia.
Optimus est assez bien supporté sous linux aujourd’hui malgré l’impression de bidouiller, on s’en sort très bien avec bumblebee. Sous optimus, l’affichage passe tout le temps par la carte graphique intégrée au processeur Intel. La carte nvidia (ici une GT520M) n’est utilisée que pour le rendu de certaines applications. Une telle configuration nécessite 2 serveurs X.
Cette petite introduction, juste pour dire que ce qui suit marche sous Optimus, mais fonctionne très bien sans architecture Optimus. De plus, cela fonctionne très bien avec tout autre type de sortie d’écran (VGA, HDMI, DVI, …)
Donc, c’est parti.
La solution présentée ici permet de:
- gérer l’affichage en mode miroir (affichage identique sur les deux écrans)
- gérer l’affichage en mode bureau étendu (affichage différent sur les deux écrans)
La solution est basée sur lxrandr et xrandr.
Une fois installé, il suffit de taper lxrandr ou xrandr dans un terminal les utiliser.
Avant de continuer, un bon test est de démarrer l’ordinateur avec tous les écrans branchés afin de voir que ceux-ci fonctionnent bien durant la phase de démarrage de la machine.
lxrandr: le mode mirroir simplement
lxrandr offre une interface graphique simple. Celle-ci ne permet pas de gérer le mode bureau étendu. Elle offre la gestion de la résolution et de l’allumage des écrans en mode miroir:
Cette interface est fort simple, cochez la case “Activer”, règlez la résolution et la fréquence de rafraîchessement, faites “Appliquer” et voilà les écrans configurés.
Comme dit précédemment, impossible de gérer le mode bureau étendu avec cette interface.
xrandr: utilisation avancée et mode étendu
Voici comment utiliser la commande xrandr.
Lister les différentes sorties vidéos, les différentes résolutions supportées:
$ xrandr -q
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
LVDS1 connected 1366×768+0+0 (normal left inverted right x axis y axis) 293mm x 164mm
1366×768 59.4*+ 60.0
1024×768 60.0
800×600 60.3 56.2
640×480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920×1080+0+0 (normal left inverted right x axis y axis) 160mm x 90mm
1920×1080 60.0*+
1600×1200 60.0
1680×1050 60.0
1280×1024 75.0 60.0
1440×900 75.0 59.9
DP1 disconnected (normal left inverted right x axis y axis)
Sur cette sortie console, ce qui est important est:
- “LVDS1″, “VGA1″, “HDMI1″, “DP1″: ce sont les identifiants de chaque sortie/écran
- Les résolutions de chaque écran
Voici ce que l’application lxrandr produit comme commande une fois que le bouton “Appliquer” est cliqué:
$ xrandr --output LVDS1 --mode 1366x768
$ xrandr --output HDMI1--mode 1920x1080
- –output définit la sortie/écran affectée par la commande xrandr
- –mode permet de choisir la résolution de l’écran
Pour créer un bureau étendu, seule la commande suffit:
$ xrandr --output HDMI1 --right-of LVDS1
- LVDS1 est l’écran de gauche (mon pc portable)
- HDMI1 est l’écran de droite (un écran externe)
Pour éteindre un écran, on utilise l’option “--off“. Par exemple, pour éteindre l’écran branché sur ma sortie HDMI, j’utilise donc la commande suivante:
$ xrandr --output HDMI1 --off
Pour me simplifier la vie j’ai mis la suite de commandes suivantes dans un fichier bash:
$ cat startHDMI.sh
#!/bin/sh
xrandr –output LVDS1 –mode 1366×768
xrandr –output HDMI1 –mode 1920×1080
xrandr –output HDMI1 –right-of LVDS1
Pour arrêter la sortie HDMI:
$ cat stopHDMI.sh
#!/bin/sh
xrandr –output HDMI1 –off
C’est pas si compliqué que ca, c’est moins overkill que nvidia-settings (surtout qu’avec optimus pas de salut pour utiliser le panneau de configuration de nvidia…)





