Le multi-écran1) est pris en charge nativement par la plupart des environnements. En mode bureau étendu, les écrans peuvent avoir des résolutions différentes.
Le comportement peut légèrement varier en fonction de l'environnement choisi.
Par défaut (avec Gnome Shell), les réglages et choix d'options se font via les paramètres système. Ça permet notamment de régler la résolution de chaque écran ainsi que de les positionner les uns par rapport aux autres (par glisser-déposer).
Vous pouvez réaliser l'ensemble de votre configuration en utilisant l'outil graphique Arandr, quel que soit votre environnement de bureau.
Commande pour voir les connecteurs d'écrans détectés par le système
find /sys/devices/ -iname edid
/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-LVDS-1/edid /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-VGA-1/edid
Commande pour identifier ceux qui sont connectés. (xrandr)
xrandr
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767 LVDS1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 410mm x 230mm 1920x1080 60.00*+ 59.93 1680x1050 59.88 1400x1050 59.98 1600x900 60.00 59.95 59.82 1280x1024 60.02 1400x900 59.96 59.88 1280x960 60.00 1368x768 60.00 59.88 59.85 1280x800 59.81 59.91 1280x720 59.86 60.00 59.74 1024x768 60.00 1024x576 60.00 59.90 59.82 960x540 60.00 59.63 59.82 800x600 60.32 56.25 864x486 60.00 59.92 59.57 640x480 59.94 720x405 59.51 60.00 58.99 640x360 59.84 59.32 60.00 VGA1 disconnected (normal left inverted right x axis y axis) VIRTUAL1 disconnected (normal left inverted right x axis y axis)
Il arrive lorsque que l'on utilise plusieurs moniteurs, que l'agencement des écrans soit chamboulé à l'ouverture de la session, ceci arrive notamment lorsque l'on ne se base que sur l'outil d'un pilote propriétaire.
Afin de retrouver la disposition d'affichage souhaité à chaque ouverture de session nous allons tout simplement utiliser l'outil mis à disposition par Gnome. Paramètre système → Périphériques → Écrans, un petit Appliquer et le tour est joué.
Changer le moniteur principal va modifier l'écran où apparaît la barre supérieure de Gnome Shell, bien que des extensions existent pour modifier ce comportement.
sudo cp ~/.config/monitors.xml /var/lib/gdm3/.config/
Dans Menu → Paramètres Système → Affichage et Écran (dans la section Matériel).
Dans Menu → Système → Préférences → Matériel → Écran.
Depuis le menu de démarrage: Paramètres → Affichage.
Une solution qui semble l'une des plus "faciles" est :
Les étapes sont donc :
Cette page en Anglais donne plus de détails
Nous allons voir ici plusieurs méthodes avancées pour utiliser le multi-écran :
lspci | grep VGA
Il est à noter que cette solution semble la plus rapide et la plus efficace car :
Voir la page dédiée XRandR
Eyefinity est une solution valable uniquement pour les cartes ATI/AMD supportant la technologie "Eyefinity". Il s'agit de la solution idéale pour tous ceux qui souhaitent gérer 3 écrans ou plus (jusqu'à 6 ou 12 écrans selon les cartes compatibles Eyefinity). A ce jour, c'est également la seule solution valable pour conserver l'accélération 3D (Compiz) sur un bureau étendu sur 3 écrans ou plus.
Prérequis :
Configuration :
Informations supplémentaires :
Cette configuration vous permet de promener une application d'un écran a l'autre, bien que chaque écran soit sur une carte graphique différente.
Pour utiliser le mode multi-cartes graphiques, il va falloir mettre la main dans le fichier /etc/X11/xorg.conf
Avant de faire quoi que ce soit une bonne chose est de sauvegarder votre fichier de configuration xorg.conf actuel.
Commencez par sauvegarder votre fichier de configuration xorg.conf. Dans un terminal, entrez :
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.ok
En cas d'échec de vos tentatives de configuration, vous pourrez rétablir la configuration précédente avec :
sudo cp /etc/X11/xorg.conf.ok /etc/X11/xorg.conf
Après identification des cartes graphiques ( commande lspci ) il faut renseigner chaque carte avec son BusID
Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BusID "PCI:1:0:0" EndSection Section "Device" Identifier "Device1" Driver "nvidia" VendorName "NVIDIA Corporation" BusID "PCI:7:0:0" EndSection
Ensuite on relie chaque carte à son écran
Section "Monitor" Identifier "Monitor0" EndSection Section "Monitor" Identifier "Monitor1" EndSection Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 Option "RenderAccel" "true" Option "AllowGLXWithComposite" "true" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen1" Device "Device1" Monitor "Monitor1" DefaultDepth 24 Option "RenderAccel" "true" Option "AllowGLXWithComposite" "true" SubSection "Display" Depth 24 EndSubSection EndSection
Il ne reste plus qu'à placer les écrans comme on a envie
Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" 0 0 Screen 1 "Screen1" RightOf "Screen0" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" Option "Xinerama" "1" EndSection
Disper est un programme qui gagne à être connu tant il est simple d'utilisation. Il gère automatiquement les résolutions, et fonctionne plutôt bien avec les cartes graphiques de type Nvidia
Le site officiel de disper est le suivant : https://willem.engen.nl/projects/disper/
Pour l'installer, il suffit de télécharge le fichier disper_0.3.0.tar.gz ( le dernier en date au moment ou j'écris ces lignes )
wget http://ppa.launchpad.net/disper-dev/ppa/ubuntu/pool/main/d/disper/disper_0.3.0.tar.gz tar -xvzf disper_0.3.0.tar.gz rm disper_0.3.0.tar.gz cd dispercur/ sudo make install
Maintenant que disper est installé, passons aux commandes de base :
disper -c
disper -e -t right
disper -s
disper -S
La page de man de ce programme est également disponible, et vous donnera des informations plus précises
On peut faciliter l'utilisation de ces commandes en utilisant l'interface graphique zenity avec un petit script (lancé par exemple par une combinaison de touche) :
#!/bin/bash ret=$(zenity --title="Sélectionner un affichage" \ --list 1 "écran ordinateur" 2 "écran extérieur" 3 "copier sur un écran extérieur" 4 "étendre à l'écran extérieur" --column="id" \ --column="Sélectionner un affichage" --hide-column=1 --print-column=1) [ -z "$ret" ] && exit case "$ret" in "1") echo "1" disper -s;; "2") echo "2" disper -S;; "3") echo "3" disper -c;; "4") echo "4" disper -e;; esac
Sur les ordinateurs portables l'écran par défaut n'est pas forcement celui que l'on croit.
Cas du vidéoprojecteur : vous êtes en conférence et le vidéoprojecteur refuse de transmettre l'image à votre écran. Allez sur cette page. Vous y trouverez peut-être comment remédier à la honte qui s'abat sur vous en 5 minutes…
Avant de faire quoi que ce soit une bonne chose est de sauvegarder votre fichier de configuration xorg.conf actuel.
Commencez par sauvegarder votre fichier de configuration xorg.conf. Dans un terminal, entrez :
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.ok
En cas d'échec de vos tentatives de configuration, vous pourrez rétablir la configuration précédente avec :
sudo cp /etc/X11/xorg.conf.ok /etc/X11/xorg.conf
Cette méthode est indépendante du type de pilote utilisé, et vous permet d'obtenir un double affichage, quelle que soit votre (ou vos) carte graphique et le type d'écran (CRT-CRT, LCD-CRT, CRT-TV, LCD-TV etc…), à condition bien sûr que la carte graphique possède 2 sorties (VGA, DVI, ou S-video).
Si vous possédez plusieurs cartes la méthode simple consiste à les insérer une à la fois et sauvegarder le xorg.conf généré, puis fusionner ces différents fichiers.
Remarque pour les détenteurs de cartes à chipset ATI :
Pour le double bureau sous Ubuntu 7.04 (et supérieur) une fois les pilotes propriétaires installés à l'aide du "Gestionnaire de pilotes propriétaires" (pour KDE : Menu K → Paramètres du système → onglet Avancé → Pilotes propriétaires), exécutez la commande :
sudo aticonfig --initial=dual-head
permet une configuration automatique du Double bureau. Il n'y a plus qu'à rajouter l'option Xinerama au xorg.conf ainsi créé (voir plus bas).
Ceci dit, il vous sera préférable, quelque soit le constructeur de votre carte, de mettre le pilote propriétaire, généralement fourni avec la distribution, ou sinon facilement téléchargeable. Ce pilote propriétaire permet dans certains cas d'obtenir des fonctions (un peu) plus pointues que celles fournies par des pilotes libres (voir pour nvidia).
Cette configuration vous permet de promener une application d'un écran a l'autre, contrairement à la méthode précédente.
"Xinerama est une extension du X Window System" d'après Xinerama sur wikipedia
Le début de ce paragraphe est très fortement inspiré du Dual Monitor Support With Xinerama HowTo:
Le HOWTO Xinerama en français est bien sûr utile…
Pour activer Xinerama il suffit de faire comme pour le double écran (voir plus haut puis de modifier la Section ServerLayout, afin d'y ajouter la ligne :
Option "Xinerama" "true"
ce qui donne quelque chose comme ça :
Screen 0 "Default Screen" Screen 1 "Ecran 2" <position> "Default Screen" Option "Xinerama" "true"
<position> peut prendre les valeurs RightOf (à droite de), Below (en-dessous de), Above (au-dessus de), LeftOf (à gauche de), Absolute X Y, Relative.
Pour activer ou désactiver le double écran il suffit de commenter la partie décrivant l'écran 2 ainsi que xinerama si vous l'aviez activé
Screen 0 "Default Screen" #Screen 1 "Ecran 2" <position> "Default Screen" #Option "Xinerama" "true"
Pour activer ou désactiver Xinerama et ainsi passer en dual-Desktop il suffit de commenter la ligne activant Xinerama
Screen 0 "Default Screen" Screen 1 "Ecran 2" <position> "Default Screen" #Option "Xinerama" "true"
J'ai résolu le problème en désactivant Xinerama avant de passer en simple écran … une autre solution existe, plutôt complexe et documentée en anglais : https://ubuntuforums.org/showthread.php?t=361124
Il faut donc un arrière plan assez large… Ou le mettre en mosaïque…
Twinview est une fonction présente dans les cartes Nvidia (d'après 2002 environ) (Geforce 2MX et plus) une liste qui semblerait être compatible, en tout cas avec les pilotes propriétaires de Nvidia est disponible sur le site web de Nvidia (indisponible).
L'installation des pilotes propriétaires de Nvidia est nécessaire pour activer cette fonction.
2 possibilités s'offrent à vous :
La première consiste à utiliser un petit outil fourni avec le pilote propriétaire. Cet outil s'apparente à NView sous Windows.
Avant toute chose, il vaut mieux s'assurer que c'est bien le pilote nvidia qui travaille. Après installation du pilote, dans un terminal tapez :
sudo nvidia-xconfig --twinview
Ceci aura pour conséquence de réécrire un fichier de configuration X en intégrant le fait que vous voulez twinview (en fait ça rajoute juste twinview "true") et en en faisant une sauvegarde (/etc/X11/xorg.conf.backup normalement).
Ceci fait, on s'assure que c'est bien paramétré et que ça marche (on redémarre X, soit en déconnectant, soit par Ctrl+Alt+⌫).
Une fois reconnecté, tapez dans votre terminal préféré :
sudo nvidia-settings
Si l'outils de configuration nvidia-settings n'est pas installé tapez dans votre terminal :
sudo apt-get install nvidia-settings
Une interface graphique va s'ouvrir, modifiez alors à votre guise.
Il suffit d'aller dans le onglet "X Server Display Configuration" et activer le 2ème écran en appuyant sur "Configure", puis sélectionner TwinView. Ensuite choisir les résolutions souhaitées, etc. Finalement, appuyer sur Apply pour appliquer la configuration. La barre des menus sera étendue sur les 2 écrans. Pas de panique .. Il suffira de sauvegarder en cliquant sur "Save to X Configuration file", puis relancer le X avec CTRL+ALT+BACKSPACE.
La deuxième possibilité consiste à faire soi-même le paramétrage de X.
N'oubliez en aucun cas de faire une copie de sauvegarde du fichier /etc/X11/xorg.conf (voir plus haut).
Éditez le fichier /etc/X11/xorg.conf.
Trouvez la section Device. Exemple :
Section "Device" Identifier "NVIDIA Corporation NV25 [GeForce4 Ti 4200]" Driver "nvidia" BusID "PCI:1:0:0" Option "NoLogo" EndSection
Et ajoutez-y les lignes suivantes :
Option "TwinView" "true" Option "MetaModes" "1280x1024, 1280x1024; 1024x768, 1024x768" Option "SecondMonitorHorizSync" "65-85" Option "SecondMonitorVertRefresh" "50-160" Option "TwinViewOrientation" "RightOf"
Modifiez les valeurs suivant votre configuration :
Toutefois, si votre 2e écran est une TV, pas la peine de vous acharner avec SecondMonitor… C'est l'encoder de la carte qui définit elle-même ce qu'il faut. Et toujours dans le cas d'une TV, les options « TVOutFormat » et « TVStandard » doivent être indiquées (en cas de « noir et blanc » par exemple).
Cela peut s'avérer utile quand on veut lancer une application plein-écran qui divise son affichage entre les deux écrans. Le moyen le plus rapide est de faire deux fichiers modèles de votre xorg.conf (un avec les options twinview et un autre sans) que nous appellerons xorg_mono.conf et xorg_dual.conf :
sudo cp /etc/X11/xorg.conf /etc/X11/xorg_mono.conf sudo cp /etc/X11/xorg.conf /etc/X11/xorg_dual.conf
Editez l'un ou l'autre de ces deux fichiers suivant que vous ayez le multi-écran activé ou pas. Pour remplacer rapidement le fichier « xorg.conf » avec un des deux modèles, nous allons créer deux petits scripts cachés dans votre dossier personnel : « .monoscreen » et « .dualscreen ».
Créez ou éditez le dossier ~/.monoscreen et ajoutez-y ceci :
sudo cp /etc/X11/xorg_mono.conf /etc/X11/xorg.conf
Créez ou éditez à présent le dossier ~/.dualscreen et ajoutez-y ceci :
sudo cp /etc/X11/xorg_dual.conf /etc/X11/xorg.conf
Pour permettre l'exécution, allez dans les propriétés des fichiers, onglet Permissions :
Cochez au moins la première case de la colonne Exécution.
Ensuite pour lancer les scripts avec les privilèges administrateurs, créez deux lanceurs sur le bureau ou dans le panel avec la commande « gksudo $HOME/.monoscreen
» et « gksudo $HOME/.dualscreen
».
Pour les utilisateurs de KDE, remplacez « gksudo » par « kdesu ».
Une fois le script exécuté, il ne reste plus qu'à redémarrer le serveur X (Ctrl+Alt+⌫).
Il se peut qu'en utilisant les outils ci-dessus, notamment "nvidia-settings", votre bureau se retrouve avec le clavier en qwerty. Pour remédier à ça, il faut que vous éditiez votre fichier /etc/X11/xorg.conf, puis trouvez la section :
Section "InputDevice" # generated from default Identifier "Keyboard0" Driver "kbd" EndSection
Ajoutez y les options :
Option "XkbModel" "pc105" Option "XkbLayout" "fr-latin9"
Ce qui doit donner :
Section "InputDevice" # generated from default Identifier "Keyboard0" Driver "kbd" Option "XkbModel" "pc105" Option "XkbLayout" "fr-latin9" EndSection
Si vous rencontrez des problèmes de lenteurs avec les menus contextuels et une saccade des animations sur un des écrans, utilisez ce petit script au démarrage de votre session et tout rentrera dans l'ordre.
Tout d'abord
#!/bin/bash DISPLAY=":0.0" compiz --replace --only-current-screen & DISPLAY=":0.1" compiz --replace --only-current-screen & DISPLAY=":0.0" emerald --replace & DISPLAY=":0.1" emerald --replace &
Une fois sauvegardé, autorisez le script a être exécuté
Et on coche "Autoriser l'exécution du fichier comme un programme"
Maintenant direction l'utilitaire de session d'Ubuntu:
On créer un nouvel élément dont la commande a exécuter pointera vers notre script.
Si le script ne fonctionne pas correctement au démarrage de la machine, rajoutez-y au début : sleep 20 (ou moins si votre machine est rapide), histoire de décaler un peu le moment de lancement du script.
Et voila, c'est le retour de la fluidité!
Note: Si vous utilisez des options supplémentaire (loose binding, etc..) de compiz, n'oubliez pas de les rajouter dans le script.
Après de multiples tentatives avec une télé qu'on arrivait pas à faire détecter par la méthode twinview, on a trouvé une façon de configurer un xorg.conf qui permet de forcer la détection de cette (vieille) télé par le pilote nvidia. L'astuce consiste à rajouter dans l'option ConnectedMonitor l'argument TV-0 et non TV tout court…
Voici le xorg.conf en entier
Section "ServerLayout" Identifier "Default Layout" Screen 0 "Screen0" 0 0 InputDevice "Generic Keyboard" "CoreKeyboard" InputDevice "Configured Mouse" EndSection Section "Module" Load "glx" EndSection Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "fr" Option "XkbVariant" "oss" EndSection Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" EndSection Section "Monitor" Identifier "Television" #TV HorizSync 30-50 VertRefresh 60 EndSection Section "Monitor" Identifier "Monitor0" VendorName "Unknown" ModelName "ViewSonic E651-3" HorizSync 30.0 - 56.0 VertRefresh 50.0 - 120.0 EndSection Section "Device" Identifier "Videocard0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce 7600 GS" Option "NoLogo" "True" Option "TVOutFormat" "SVIDEO" Option "TVStandard" "PAL-B" #Option "UseDisplayDevice" "CRT-1, TV" Option "ConnectedMonitor" "CRT-1, TV-0" EndSection Section "Screen" Identifier "Screen0" Device "Videocard0" Monitor "Monitor0" DefaultDepth 24 Option "NoLogo" "True" Option "TwinView" "true" Option "TwinViewOrientation" "RightOf" Option "MetaModes" "1024x768,800x600;800x600,800x600;640x480,640x480;512x384,512x384" EndSection
Contributeurs : traaf, adam0509 et bruno-Kaledonie (Xinerama), Fabien26 (actualisation et simplification des parties Xinerama et dual desktop), azerttyu (xrandr), changfu (Compiz), jeyk, cannard (script simplifiant l'utilisation de disper), Roschan (réorganisation de la page et mise à jour de certaines méthodes)