Dual screen sous Ubuntu
Aujourd’hui, j’ai voulu connecté un écran externe à mon ordinateur portable. Je l’avais déjà fait sans souci sous Windows Seven ; cette fois, j’étais sous Ubuntu 11.10 (Oneiric Ocelot). J’ai innocemment branché mon second écran et constaté…. qu’il ne se passait rien. Le périple a commencé.
La première étape est de trouver l’outil des préférences système dans Unity. Dans le lanceur d’application, il s’appelle Paramètres système. On va ensuite dans Affichage et on voit qu’on peut activer le second écran qui a été branché et qui est correctement reconnu. On choisit les résolutions et la position et on fait Appliquer. Second drame avec ce message d’erreur :
La seconde étape est d’aller sur le site français d’Ubuntu pour connaître les méthodes pour gérer le multi-écran. Je choisis d’utiliser la méthode recommandée et de me servir de la commande xrandr. Cette commande me renvoie :
$ xrandr Screen 0: minimum 320 x 200, current 1280 x 800, maximum 1280 x 1280 LVDS connected 1280x800+0+0 (normal left inverted right x axis y axis) 331mm x 207mm 1280x800 60.0*+ 1280x768 60.0 + 1280x720 60.0 + 1024x768 60.0 + 1024x600 60.0 + 800x600 60.0 + 800x480 60.0 + 720x480 60.0 + 640x480 60.0 + DFP1 disconnected (normal left inverted right x axis y axis) CRT1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 338mm x 270mm 1280x1024 60.0 + 75.0 1280x800 60.0 + 75.0* 1280x720 60.0 + 1280x960 60.0 1152x864 75.0 60.0 1280x768 59.9 1024x768 75.0 70.1 60.0 1024x600 60.0 800x600 72.2 75.0 70.0 60.3 56.2 800x480 60.0 720x480 60.0 640x480 75.0 72.8 60.0
L’écran externe est donc CRT1. J’adapte donc les commandes données dans la documentation d’Ubuntu et entre :
$ xrandr --output CRT1 --pos 1280x0 --mode 1024x768 xrandr: screen cannot be larger than 1280x1280 (desired size 2304x800)
Pas de chance, j’ai le même message d’erreur qu’avec l’outil graphique… Effectivement, la somme des dimensions de mes écrans dépassent le maximum autorisé. Je pourrais réduire la résolution de mon écran principal et mettre une résolution faible à mon écran externe. Cette solution s’exclue d’elle-même dès son énoncé : je ne vais quand même pas travailler avec des résolutions minables juste pour avoir deux écrans. Je recherche ce message d’erreur dans Google et trouve une aide précieuse dans cette page. Il y est expliqué le concept d’écran virtuel dans lequel les deux écrans physiques doivent rentrés. Par défaut, sa limite semble être 1600×1600 (c’était mon cas avant que je ne bricole ; la limite de 1280×1280 est apparue quand j’ai fait marche arrière pour l’écriture de l’article), à moins que ça ne soit une limitation des pilotes de ma carte graphique. J’avoue ne pas avoir trop creusé ce point. Toujours est-il qu’il est possible d’augmenter cette taille pour que l’écran virtuel soit assez grand pour contenir mes deux écrans physiques.
La troisième étape est donc d’éditer le fichier xorg.conf en prenant soin d’en faire une sauvegarde auparavant*. Il faut que la somme des tailles des écrans séparés soit plus petite que la taille de l’écran virtuel. Grâce à la liste affichée par xrandr, vous avez la taille maximale de chaque écran que vous pouvez sommer pour obtenir la taille de l’écran virtuel nécessaire pour être tranquille. Dans mon cas j’ai donc ajouté la ligne suivante à mon fichier xorg.conf dans Section "Screen" / Subsection "Display" :
Virtual 2560 1824
Je redémarre le serveur X avec la commande suivante* pour que mes modifications soient prises en compte :
sudo restart lightdm
Je retente la commande déjà utilisée pour afficher mon second écran et le miracle se produit. En parcourant la page de manuel de xrandr, je trouve une option pour utiliser la résolution la plus adaptée :
$ xrandr --output CRT1 --pos 1280x0 --preferred
Tout est presque bon.
Oui, il y a un presque et il vient d’Unity, l’interface par défaut d’Ubuntu. La barre de menu (Unity Global Menu) ne s’affiche pas sur l’écran secondaire et quand l’application est en mode plein écran sur l’écran secondaire, cette barre reste vide sur l’écran principal. On peut double-cliquer dessus pour remettre l’application en mode fenêtré mais impossible d’accéder au menu de l’application. Avec Cinnamon par exemple, pas de soucis puisque pas de barre globale de menu.
* : tant pour pour l’utilisation du fichier de sauvegarde que pour le redémarrage du serveur X, j’ai été méfiant. Si pour X raisons (oui, le jeu de mots est pourri…) je cassais mon serveur graphique, il fallait être capable de sauver la mise. J’ai donc fait quelques recherches sur l’utilisation de la console (la vraie, et non le terminal) et la manipulation du serveur X. Cela a été une sorte de périple dans le périple.
Commençons par l’utilisation de la console, qui elle n’a pas besoin du serveur X pour fonctionner. Tout ce que vous avez besoin de savoir pour y accéder est décrit dans la partie 1 de la page dédiée à cette console sur Ubuntu-Fr.
Continuons avec le serveur X. Avec Unity, le service associé est LightDM mais cela dépend du gestionnaire graphique et on peut avoir GDM ou KDM. Ils servent de simplification à l’utilisation de XDM. Le service peut être lancé, arrêté ou redémarré. Il y a plusieurs techniques pour le faire, certaines ont mieux marché que d’autres sur mon PC. En vrac, on a :
sudo /etc/init.d/lightdm restart sudo service lightdm restart sudo restart lightdm
Le mot restart peut être remplacé par start ou stop.



