Table des matières

, , , ,

Configurer le multi-écran

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.

Visualisation des écrans connectés

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)

Modifier la disposition des écrans

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.

Pour Gnome Shell

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.

Si l'on désire que cette disposition soit effective dès le gestionnaire de connexion, il vous faudra copier le fichier ~/.config/monitors.xml dans /var/lib/gdm3/.config/
sudo cp ~/.config/monitors.xml /var/lib/gdm3/.config/

Pour KDE Plasma

Dans Menu → Paramètres Système → Affichage et Écran (dans la section Matériel).

Pour Mate

Dans Menu → Système → Préférences → Matériel → Écran.

Pour Xfce

Depuis le menu de démarrage: Paramètres → Affichage.

Multi-écran avec un autre appareil écran (tablette, ordinateur, téléphone, ...)

Une solution qui semble l'une des plus "faciles" est :

  1. Configurer Linux pour que VNC soit vu comme un écran supplémentaire
  2. Utiliser VNC pour prendre le contrôle de la tablette

Les étapes sont donc :

  1. Installer VNC server sur Linux
  2. Configurer xrandr pour avoir un écran virtuel
  3. Lancer VNC serveur
  4. Installer VNC client sur l'appareil écran

Cette page en Anglais donne plus de détails

Si l'environnement de bureau a du mal à gérer le multi-écran

Nous allons voir ici plusieurs méthodes avancées pour utiliser le multi-écran :

Il est probable que certaines de ces méthodes soient obsolètes, tentez-les à vos risques et périls !
Afin de connaître le driver de sa carte graphique la commande suivante peut aider
lspci | grep VGA

Xrandr : double écrans

Il est à noter que cette solution semble la plus rapide et la plus efficace car :

Voir la page dédiée XRandR

ATI/AMD Eyefinity : 3 écrans ou plus

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 :

XineRama avec deux cartes graphiques NVidia

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.

Les drivers NVidia ont un bug qui ne permet pas d'utiliser deux cartes graphiques d'un modèle différent. Pour que l'initialisation se passe correctement, il faut utiliser deux cartes graphiques identiques. Ce problème sera peut-être résolu à l'avenir. Cependant (non testé) il est probable que deux cartes de la même série, mais pas d'un même modèle puissent s'initialiser.

Pour utiliser le mode multi-cartes graphiques, il va falloir mettre la main dans le fichier /etc/X11/xorg.conf

Préparatifs : Sauvegardez

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

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

Seuls 2 tests ont été effectués, sur des cartes graphiques différentes, merci de compléter si vous rencontrez des problèmes

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 :

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

Anciennes méthodes

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…

Préparatifs : Sauvegardez

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

Xinerama et Dual-Desktop : double écran indépendant du pilote

Remarque : L'extension Xinerama est maintenant directement gérée par Xrandr.

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).

XineRama

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…

Activation

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.

Complément d'information

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"
Les petits soucis

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 (Nvidia): un bureau étendu

Introduction

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).

Attention, certaines cartes graphiques de cette liste ne sont PAS compatibles avec Twinview. Ceci concerne toutes les cartes utilisant deux cœurs, comme la 9800 GX2 par exemple qui ne gère pas le Twinview. De plus TwinView est limité à 2 écrans maximum simultanément (impossible de gérer 3 écrans ou plus).

L'installation des pilotes propriétaires de Nvidia est nécessaire pour activer cette fonction.

Attention, si vous utilisez deux écrans de haute résolution (Full-HD et plus), vous devez vous assurer que votre carte graphique dispose bien de deux DVI/HDMI Dual-port. Si votre carte ne prend en compte qu'un seul DVI en dual, les données des deux écrans vont se chevaucher. La seule solution est d'opter pour une carte plus récente ou plus puissante, qui possèdent deux DVI/HDMI dual-port afin de conserver le Twinview.

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).

Xorg

Éditez le fichier /etc/X11/xorg.conf.

Configuration manuelle

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).

Activer ou désactiver rapidement le 2e écran

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+⌫).

Problème clavier en qwerty

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

Problème avec Compiz

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.

Problème twinview avec TV cathodique non détectée

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)

1)
testé avec deux et trois écrans