structure & meta
This commit is contained in:
parent
da6d838193
commit
b25ce65735
284 changed files with 461 additions and 1000 deletions
89
posts/2015/2015-09-03-xfce-double-ecran.md
Executable file
89
posts/2015/2015-09-03-xfce-double-ecran.md
Executable file
|
|
@ -0,0 +1,89 @@
|
|||
<!-- title: Configuration de XFCE avec deux écrans -->
|
||||
<!-- category: GNU/Linux -->
|
||||
<!-- tag: planet -->
|
||||
|
||||
J'ai un portable fraîchement installé sous Debian Jessie avec l'environnement
|
||||
de bureau XFCE<!-- more --> que j'utilise soit en itinérance, soit en poste fixe avec un
|
||||
moniteur externe en configuration *double écran*. La configuration brute des
|
||||
écrans sous GNU/Linux passe par l'utilisation de la commande **xrandr** pour
|
||||
définir leur nombre, la résolution de chacun et leur position respective. Pour
|
||||
se faciliter la vie, on peut installer **arand** qui fournit une interface
|
||||
pour définir ces réglages et les sauvegarder sous forme de shell script dans
|
||||
un fichier.
|
||||
|
||||
Voici une capture d'écran de arandr :
|
||||
|
||||

|
||||
|
||||
Et un exemple de script généré pour une configuration en double écran avec le
|
||||
moniteur externe à droite de l'écran LCD du portable :
|
||||
|
||||
xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 0x0 --rotate normal
|
||||
--output DP1 --off --output VGA1 --mode 1920x1080 --pos 1366x0 --rotate normal
|
||||
|
||||
En utilisant arand je vais facilement générer les deux scripts dont j'ai besoin :
|
||||
|
||||
- une configuration simple avec l'écran du portable
|
||||
- une configuration en double écran
|
||||
|
||||
Pour savoir lequel appliquer, on va tester si le moniteur externe est connecté
|
||||
en analysant le résultat de la commande xrandr. Au démarrage du portable, le
|
||||
gestionnaire de connexions **lightdm** clone l'affichage des deux moniteurs
|
||||
connectés. On peut corriger cela en appliquant notre joli script qui teste si
|
||||
le moniteur externe est connecté et applique la bonne commande xrandr. Pour
|
||||
cela, on édite le fichier de configuration **/etc/lightdm/lightdm.conf** et on
|
||||
ajoute la directive *display-setup-script* dans la section SeatDefaults :
|
||||
|
||||
[SeatDefaults]
|
||||
...
|
||||
display-setup-script=/usr/local/bin/lightdm-monitor.sh
|
||||
|
||||
et voici le script **lightdm-monitor.sh** :
|
||||
|
||||
``` shell
|
||||
if (xrandr | grep "VGA1 disconnected"); then
|
||||
xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 0x0 \
|
||||
--rotate normal --output DP1 --off --output VGA1 --off
|
||||
else
|
||||
xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 0x0 \
|
||||
--rotate normal --output DP1 --off --output VGA1 \
|
||||
--mode 1920x1080 --pos 1366x0 --rotate normal
|
||||
fi
|
||||
```
|
||||
|
||||
Le réglage est valable pour lightdm mais quand on ouvre une session XFCE, il
|
||||
est perdu et on revient à la configuration par défaut à savoir l'affichage
|
||||
cloné sur les deux écrans. On pourrait appliquer le même script pour la
|
||||
session, en utilisant la directive *session-setup-script* prévu par ligthdm ou
|
||||
en mettant le script en démarrage automatique dans la configuration **Session
|
||||
et démarrage** de XFCE. Dans mon cas, je souhaite ajouter quelque chose au
|
||||
script de session : déplacer le tableau de bord XFCE sur le moniteur externe,
|
||||
quand il connecté. C'est possible grâce à la commande **xfconf-query** (le
|
||||
programme en ligne de commande de configurationde XFCE) adéquate.
|
||||
|
||||
Finalement, cela donne le script **xfce-monitor.sh** au démarrage de la session:
|
||||
|
||||
``` shell
|
||||
sleep 3
|
||||
if (xrandr | grep "VGA1 disconnected"); then
|
||||
xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 0x0 \
|
||||
--rotate normal --output DP1 --off --output VGA1 --off
|
||||
xfconf-query -c xfce4-panel -p /panels/panel-1/output-name -s LVDS1
|
||||
else
|
||||
xrandr --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 0x0 \
|
||||
--rotate normal --output DP1 --off --output VGA1 \
|
||||
--mode 1920x1080 --pos 1366x0 --rotate normal
|
||||
xfconf-query -c xfce4-panel -p /panels/panel-1/output-name -s VGA1
|
||||
fi
|
||||
```
|
||||
|
||||
Le *sleep* en début de script n'est pas élégant. Sans lui, l'exécution du
|
||||
script intervient avant que la session XFCE soit initialisée et les commandes
|
||||
xfconf-query ne sont pas appliquées. Si quelqu'un a une solution plus
|
||||
élégante, je suis intéressé.
|
||||
|
||||
Si la connexion / déconnection des écrans a lieu pendant qu'une session est
|
||||
ouverte, il suffit de relancer le script depuis un terminal pour reconfigurer
|
||||
l'affichage.
|
||||
|
||||

|
||||
Loading…
Add table
Add a link
Reference in a new issue