Rolinh

Rolinh' release

Comment Appliquer Une Configuration D'écran Spécifique Automatiquement Lorsqu'un écran Externe Est Détecté

Un petit article pour une petite astuce.

Le problème est on ne peut plus simple: comment appliquer une certaine configuration d’écran de manière automatique lorsqu’un autre écran est détecté.

Dans mon cas, j’utilise un portable et dispose d’une station d’accueil à laquelle est relié un moniteur. Lorsque je suis en déplacement,  le seul écran disponible est celui du portable lui-même (logique…) mais lorsque je suis chez moi, je dispose d’un deuxième moniteur relié en VGA à ma station d’accueil. Lors du démarrage de ma session Awesome wm, les deux écrans sont par défaut en configuration clone, ce qui m’est relativement inutile. Avant mon astuce, je lançais un petit script utilisant xrandr manuellement afin que mes deux écrans soient configurés correctement. Voilà une astuce afin d’automatiser cela.

La commande xrandr, passée sans argument, permet de connaître les écrans connecté à la machine. Exemple de sortie:

Screen 0: minimum 320 x 200, current 2880 x 1024, maximum 8192 x 8192
LVDS1 connected 1600x900+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
   1600x900       60.0*+   40.0
   1024x768       60.0
   800x600        60.3     56.2
   640x480        59.9
VGA1 connected 1280x1024+1600+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024      60.0*+   76.0     75.0
   1152x864       75.0
   1024x768       75.1     70.1     60.0
   832x624        74.6
   800x600        72.2     75.0     60.3
   640x480        72.8     75.0     66.7     60.0
   720x400        70.1

On voit donc dans mon cas que j’ai deux écrans connectés: LVDS1, qui correspond à l’écran de mon portable, et VGA1 qui correspond à l’écran externe branché en VGA. Lorsque ce dernier est connecté à mon portable, je souhaite configurer mon affichage en conséquence. Rien de plus simple: il suffit d’éditer le fichier $HOME/.xinitrc et de lui ajouter ces quelques lignes:

1
2
3
4
5
# apply dual-screen configuration when VGA is connected
xrandr | grep "VGA1 connected"
if [ $? -eq 0 ]; then
        xrandr --output LVDS1 --mode 1600x900 --pos 0x0 --rotate normal --output VGA1 --mode 1280x1024 --pos 1600x0 --rotate normal
fi

Évidemment, ceci est à adapter en fonction de votre configuration mais une fois ceci fait, la configuration spécifique lorsque les deux écrans sont connectés est automatiquement chargée lors du lancement de la session.