Affichage étendu; solution (un peu long)

j-pierre.jip j-pierre.jip at wanadoo.fr
Ven 28 Mai 10:25:45 UTC 2010


bonjour,

Il y a quelques jours j'ai demandé de l'aide pour configurer mes 2 écrans
sous kubuntu 10.04.
Merci à ceux qui m'ont aidé.

J'essaie de prendre des notes quand je rencontre ce genre de problème et
peut être seront-elles utiles à d'autres:
-------------- mes notes --------------
Sous la précédente version LTS de Kubuntu (Hardy Heron) la configuration des 2 écrans
se faisait (parfois difficilement) dans le ficher /etc/X11/xorg.conf

Depuis le passage sous Lucid (pour moi en mai 2010), le fichier /etc/X11/xorg.conf
n'existe plus d'origine. On m'a conseillé d'en créer un comme sous Hardy.
Les résultats n'ont pas été probants.

Mon but était d'avoir un affichage étendu sur 2 écrans ou sur un seul si j'utilisais
mon portable seul, de manière automatique.

Après recherches, voilà comment j'ai pratiqué (donc sans fichier xorg.conf):

- matériel:
  1 pc portable PackardBell EasyNote (carte vidéo Intel)
  1 écran plat LG Flatron L1915S branché sur la sortie VGA du portable

- remarque:
l'écran branché sur la prise VGA est 'vu' par les utilitaires de configuration 
(voir plus loin) même si l'écran est éteint (bouton en facade et diode inactive);
c'est important de s'en souvenir en cas de problème ou au cours des tests...
Pour être certain que l'écran ne sera pas vu, rien de mieux que de débrancher
la prise VGA...

- outils:
les dépôts permettent d'installer divers outils (s'ils ne le sont pas déjà):
xrandr, grandr, arandr, krandrtray, lxrandr

Je les ai essayé avec plus ou moins de succès.

Ma méthode:
========
1- vérifier que xrandr et arandr sont présents;
  - en cas de besoin, on trouve assez facilement le man français de xrandr sur le web
  - arandr est une interface graphique en anglais mais intuitive
2- xrandr est en version 1.3.2 (ce qui semble entraîner des subtilités de réglages;
voir plus bas);
3- au départ, en console, lancer xrandr: les 2 écrans sont reconnus comme suit:
-------------------------------------------------------------------------------------
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 4096 x 4096
VGA1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024      60.0 +   75.0  
   1152x864       75.0  
   1024x768       75.1     75.0     60.0* 
   832x624        74.6  
   800x600        75.0     60.3  
   640x480        75.0     60.0  
   720x400        70.1  
LVDS1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 289mm x 21mm
   1280x800       60.1 +
   1024x768       60.0* 
   800x600        60.3  
   640x480        59.9  
TV1 disconnected (normal left inverted right x axis y axis)
-------------------------------------------------------------------------------------
4- les 2 écrans affichent la même chose et en 1024x768  (lignes marquées d'un *)
5- les lignes marquées d'un + sont les résolutions conseillées
6- garder ces résultats dans un fichier texte pour comparaison pour plus tard
7- VGA1 est l'écran ajouté et LVDS1 est l'écran du portable
8- lancer arandr et travailler la configuration voulue
  chez moi, ça donne: écran ajouté en 1280x1024 à gauche du portable qui lui est en
  1280x800
9- arandr permet de sauvegarder la configuration et 'fabrique' un script bash de 2 lignes
qu'il stocke d'office dans /home/[user]/.screenlayout/ sous le nom qu'on souhaite lui donner;
on peut donc avoir plusieurs scripts en fonction des besoins...
par exemple j'ai obtenu:

#!/bin/sh
xrandr --output LVDS1 --mode 1280x800 --pos 1280x0 --rotate normal --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal

11- après avoir utilisé arandr mon affichage m'allait parfaitement
12- mais au démarrage suivant du pc, le lancement du script 'plantait' le serveur graphique et me ramenait
à l'écran de démarrage... 
13- il semblerait (j'insiste sur 'semblerait') que xrandr dans sa version la + récente (1.3.2) doive utiliser 
l'option supplémentaire:
--fb
qui donne ici:
--fb 2560x1024
	taille maxi du 'rectangle d'affichage' contenant les 2 écrans; ici:
	1280+1280 (largeurs cumulées de chaque écran) soit 2560
    et
	1024	  (hauteur maxi) car on a 1024 pour l'écran LG et 800 pour l'écran du portable
		  on retiens donc la taille maxi donnée à la hauteur du 'rectangle d'affichage'
j'ai modifié dans un premier temps le script comme suit (toujours en 2 lignes):

#!/bin/sh
xrandr --fb 2560x1024 --output LVDS1 --mode 1280x800 --pos 1280x0 --rotate normal --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal

14- j'ai copié ce script dans /home/[user]/.kde/Autostart pour que la configuration se fasse automatiquement 
à chaque démarrage du pc sous mon nom d'user; ça fonctionne: un simple:
xrandr 
le confirme:
comparer les résultats avec ceux obtenus au point 3:
--------------------------------------------------------------------------------------------
Screen 0: minimum 320 x 200, current 2560 x 1024, maximum 4096 x 4096
VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024      60.0*+   75.0  
   1152x864       75.0  
   1024x768       75.1     75.0     60.0  
   832x624        74.6  
   800x600        75.0     60.3  
   640x480        75.0     60.0  
   720x400        70.1  
LVDS1 connected 1280x800+1280+0 (normal left inverted right x axis y axis) 289mm x 21mm
   1280x800       60.1*+
   1024x768       60.0  
   800x600        60.3  
   640x480        59.9  
TV1 disconnected (normal left inverted right x axis y axis)
--------------------------------------------------------------------------------------------
Les * et les + concordent maintenant.

En complément:
15- au fil de mes recherches pour régler ces problèmes d'affichage, j'ai trouvé un script qui permet de gérer 
les 2 cas évoqués en introduction (parfois un écran, parfois deux);
je l'ai légèrement modifié et commenté, ce qui donne:

############## début du script ##############
#!/bin/bash
# nom: /home/[user]/.kde/Autostart/double_ou_unique.sh
# mai 2010

# l'écran de mon portable Packard Bell est reconnu comme: LVDS1
# l'écran ajouté est ici un LG Flatron L1915S reconnu comme: VGA1

# teste si deux écrans présents ou pas (attention: bien respecter l'espace devant le mot 'connected' pour éviter
# le mot 'disconnected')
if [ `xrandr --current | grep " connected" | wc -l` -eq 2 ];

# si il y a deux écrans connectés, configure tout en une seule ligne de commande
then 
xrandr --fb 2560x1024 --output LVDS1 --mode 1280x800 --pos 1280x0 --rotate normal --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal

# si un seul écran (donc celui du portable)    
else 
xrandr --output LVDS1 --pos 0x0
fi
############ fin du script ###############

Finalement mon problème est traité par un seul script bash de quelques lignes lancé automatiquement à chaque reboot.

----------- fin de mes notes ---------------

J'espère avoir été assez compréhensible ;-)

bon courage
jip








Plus d'informations sur la liste de diffusion ubuntu-fr