Introduction

Nous allons voir dans ce billet comment utiliser deux écrans, mais d'une manière un peu particulière puisque ma carte graphique n'a qu'une seule sortie[1] ! L'astuce est simple, il s'agit d'ajouter une 2ème carte graphique et de configurer Xorg de manière à utiliser les deux pour le même bureau.

Avant de se lancer dans les manipulations que nous allons voir, il est fortement conseillé de :

  • ne pas avoir peur de la ligne de commande (vous allez la visiter)
  • de savoir configurer un serveur Xorg (dpkg-reconfigure, xorg.conf)
  • de connaitre un éditeur en mode texte (vi, nano...)
  • et d'avoir du temps et de la patience devant soit :)

Enfin, avant de vous lancer, lisez tout pour bien comprendre la procédure, allez lire les liens (surtout celui-la) et mémorisez les moyens de s'en sortir. Disposer d'un autre pc avec accès internet n'est pas une mauvaise chose.

DualDesktop, Xinerama ... késako ?

Commençons par définir rapidement les termes que vous allez rencontrer dans ce billet :

DualDesktop, multi-bureau

Vous avez deux bureaux différents, un sur chaque écran. La souris peut se déplacer de l'un à l'autre, mais pas les applications (impossible d'étaler Gimp sur les deux écrans[2]). Vous disposez de deux barres de tâches, deux menus ...

DualScreen, multi-écran, bureau étendu

Vous disposez d'un seul bureau qui occupe les deux écrans. Les applications peuvent déborder de l'un à l'autre et vous ne disposez que d'une barre de tâches. Xinerama est un mode qui permet cela.

Le mode Clone

Ce mode permet de dupliquer votre bureau sur deux écrans. Il est utile pour les portables ou pour faire de la videoprojection par exemple.

Carte Video avec deux sorties

Evoquons tout de même cette possibilité. Certaines cartes disposent d'une double sortie graphique (par exemple VGA/DVI).
Si votre carte est une nvidia, je vous renvois vers le TwinView Wiki Ubuntu-fr ou vers le récent article de Racoon publié sur ce même planet.

Si votre carte est une ATI, deux possibilités s'offrent à vous :

  • avec les drivers propriétaires[3] (fglrx) voyez du coté de Big-Desktop et aticonfig
  • avec les drivers libres (ati/radeon), renseignez-vous sur MergeFB

Dans tous les cas, allez lire ce très bon tutorial sur ubuntuforum

Notons enfin que seul ce genre de cartes permettent d'avoir une accéleration 3D en même temps que deux écrans.

Deux cartes graphiques

La carte que vous allez ajouter à votre PC n'a pas besoin d'être une foudre de guerre. Elle ne servira qu'en 2D sur un écran généralement plus petit. Une vieille carte PCI avec 4 ou 8Mo sera largement suffisante. J'ai acheté une S3 Virge sur eBay pour 6€ port compris.
Attention si vous envisagez une Matrox, voyez ci-dessous
Dans ce billet nous utiliserons :

  • ATi Radeon 9000/PRO en AGP avec le driver libre radeon
  • S3 Virge/DX 4Mo en PCI avec le driver libre s3virge

La nouvelle carte

Pour tester votre nouvelle carte, le plus simple est de l'utiliser d'abord en tant que carte unique. Cela nous permettra aussi de faire la configuration Xorg pour celle-ci.

Attention : Commencez par sauvegarder votre fichier de configuration actuel ! Nous allons tout casser !

cd /etc/X11
sudo cp xorg.conf xorg.conf.MonoScreen_Radeon

Copiez le ailleur pour prévenir toute erreur de manipulation. Voyez aussi ci-dessous la section En cas de problème.

Configurez votre BIOS pour qu'il prenne une carte PCI comme adaptateur graphique principal (plutôt que AGP). Chez moi c'est dans :

  • PNP Configuration
  • Primary Graphic Controler
  • PCI ou AGP

Démarrez alors normalement. Si tout se passe bien, Ubuntu va détecter le nouveau materiel et configurer Xorg pour qu'il utilise cette nouvelle carte[4]. Si non, rebootez en recovery mode et reconfigurez votre serveur X :

dpkg-reconfigure xserver-xorg
reboot

Vous devez alors avoir l'interface graphique sur votre deuxième écran uniquement.
Copiez la nouvelle configuration :

cd /etc/X11
sudo cp xorg.conf xorg.conf.MonoScreen_S3

Mixons donc tout cela

Vous avez donc deux fichiers mono-écran que nous allons regrouper en un fichier multi-écrans. Créez en un nouveau à partir d'un :

sudo cp xorg.conf.MonoScreen_Radeon xorg.conf.DualScreen_Radeon_S3

Il y a 4 sections qui sont utiles dans notre cas :

  • Device : La carte graphique
  • Monitor : L'écran
  • Screen : Le câble entre les deux :)
  • ServerLayout : L'organisation de notre serveur

Recopiez intelligement ces sections d'un fichier à l'autre. Vous devez obtenir quelque chose qui ressemble à cela mais sur une seule colonne (Attention, j'ai enlevé la majorité des lignes pour ne garder que l'esprit du fichier !) :

# Les cartes graphiques
Section "Device"                    Section "Device"
   Identifier "Radeon 9000"           identifier "S3 Inc. ViRGE/DX"
   Driver     "radeon"                driver     "s3virge"
   BusID      "PCI:1:0:0"             busid     "PCI:0:9:0"
EndSection                          EndSection

# Les ecrans ( Attention aux fréquences ! )
Section "Monitor"                    Section "Monitor"
  identifier  "DPlus 230SB"            identifier  "Flatsys"
EndSection                           EndSection

# Les liens entre tout cela : Carte/Ecran
Section "Screen"                    Section "Screen"
  Identifier "Ecran de gauche"        Identifier "Ecran de droite"
  Device     "Radeon 9000"            Device     "S3 Inc. ViRGE/DX"
  Monitor    "DPlus 230SB"            Monitor    "Flatsys"
EndSection                          EndSection

# L'aspect général de notre serveur Xorg
Section "ServerLayout"
  Identifier "Default Layout"
  Screen 0 "Ecran de gauche" 0 0
  Screen 1 "Ecran de droite" rightof "Ecran de gauche"
  # rightof peux être remplacé, voir : man xorg.conf
EndSection

Note: les identifiants Screen X dans la section Device, souvent préconisés ne sont nécessaire qu'en cas de carte avec deux sorties

Je met à disposition tous les fichiers que j'ai fait au fur et à mesure de mes tests. Ils devraient tous fonctionner, mais je ne garantis rien. Lisez le readme.

Redemarrez Xorg, vous devez alors avoir deux bureaux ! Votre ancien sur l'écran de gauche et un nouveau à droite. Pour avoir un bureau étendu, ajouter ces lignes :

Section "ServerFlags"
  option     "Xinerama" "true"
EndSection

Et mon ancienne Matrox ?

Je dispose d'une Millenium I[5] de bien meilleure qualité qu'une S3. Malheureusement elle n'est pas au mieux pour le dual screen :

  • il FAUT que la carte principale soit PCI, donc le PC boot sur le 2ème écran
  • l'extension Xvideo n'est pas supportée par cette génération, donc pas de video sur le 2ème écran

Bref c'esr rédibitoire :(

Les Scrinechoutes

Et pour ceux qui ont eu le courage d'aller jusque la, voici quelques images :
D'abord une photo des deux écrans en mode bureau étendu. Remarquez la vidéo à cheval sur les deux : Capture Et la capture d'écran correspondante[6]. On remarque une zone noire innaccessible situé en dessous de l'écran de droite. En effet, celui-ci à une résolution moindre que l'autre. Capture Enfin, les même en mode DualDesktop : Capture

En cas de problème

De multiples problèmes peuvent apparaître au cours de ces manipulations. Il serait étonnant que vous ayez Xorg qui fonctionne tout au long de vos tests. Voici donc quelques pistes :

  • Pour restaurer votre configuration originale :
cd /etc/X11
sudo cp xorg.conf.MonoScreen_Radeon xorg.conf
  • si possible ayez un autre PC connecté au réseau. Il est très agréable de garder un éditeur (Kate) ouvert avec le xorg.conf et le fichier de log. De même google et les forums de ubuntu-fr sont vos amis
  • Les logs de Xorg sont dans /var/log/Xorg.0.log et /var/log/Xorg.0.log.old. Pour en extraire les lignes d'erreurs utilisez :
grep -E "WW|EE" /var/log/Xorg.0.log
  • Pour tester votre (non) acceleration graphique :
glxinfo |grep rendering
glxgears -printfps
  • Pour reconfigurer votre serveur Xorg, rebootez en recovery mode à partir du menu de Grub et entrez
dpkg-reconfigure xserver-xorg
  • Vous n'avez pas besoin de redémarrer votre PC à chaque fois, Ctrl+Alt+Backspace tue votre serveur X. sudo pkill kdm[7] vous renvoi vers la ligne de commande tapez alors startx pour repartir
  • Pour lister les cartes graphiques et leurs identfiant PCI (pour BusId) :
lspci |grep VGA  # ou
Xorg -scanpci
  • Conservez vos fichiers MonoScreen, la prochaine fois que vous voudrez de la 3D, vous y reviendrez ;)

Liens connexes

Pour aller plus loin :

Notes

[1] si l'on omet la sortie TV

[2] en fait je crois que c'est un mauvais exemple, il semble que justement Gimp le permet

[3] C'est mal ;)

[4] votre ancien fichier est alors automatiquement sauvegardé

[5] ma 1ère belle carte graphique :)

[6] réalisée avec Ksnapshot

[7] ou gdm