web-dev-qa-db-fra.com

script de démarrage xrandr

J'utilise un serveur Ubuntu avec xmonad. Je configure ma configuration à double moniteur avec xrandr mais je ne parviens pas à l'exécuter au démarrage. Mon .xinitrc ressemble à ceci:

# WM
xmonad

# dual monitor
xrandr --output HDMI1 --auto
xrandr --output VGA1 --auto --left-of HDMI1

Les paramètres ne sont pas appliqués. Comment dois-je m'y prendre?

3
ilia choly

Essayez-le avec une esperluette (&) derrière xmonad. Donc, il sera exécuté en arrière-plan. Et les deux commandes xrandr peuvent être exécutées.

# dual monitor
xrandr --output HDMI1 --auto
xrandr --output VGA1 --auto --left-of HDMI1

# WM
xmonad
1
chaos

ilia choly, voyez si cette solution vous convient mieux: Comment forcer la résolution correcte de plusieurs moniteurs pour LightDM?

Il faut éditer le fichier /etc/lightdm/lightdm.conf pour que l’écran de connexion (testé sur Ubuntu 12.04) appelle un script. Le fichier à l'origine ressemble à ceci:

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu

L'ajout de la ligne ci-dessous fait qu'il appelle encore le script donné avant de se connecter:

display-setup-script=/usr/share/lightdmxrandr.sh

Et cette autre ligne fait appeler le script donné après la connexion:

session-setup-script=/usr/share/lightdmxrandr.sh

Dans cet exemple, le script lightdmxrandr.sh sert à reconnaître automatiquement la résolution de l'écran et du moniteur externe, le cas échéant. Voici le contenu du script dans mon cas (je me suis adapté un peu de celui sur le lien ):

#!/bin/bash

# connected external output
XCOM0=`xrandr -q | egrep '(HDMI1|VGA1|DP1) connected' | egrep -o '(HDMI1|VGA1|DP1)'`
# command to set external desktop
XCOM1=`xrandr --output LVDS1 --primary --auto --output $XCOM0 --auto --right-of LVDS1`
# command to set normal desktop
XCOM2=`xrandr --output LVDS1 --primary --auto`
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ]; then echo $XCOM1
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
else echo $XCOM2
fi

exit 0;

Enregistrez ce fichier sous lightdmxrand.sh. Définissez-le comme un fichier exécutable comme ceci:

$ Sudo chmod +x lightdmxrand.sh

Déplacez-le dans le répertoire/usr/share/comme ceci:

$ Sudo mv lightdmxrand.sh /usr/share/lightdmxrandr.sh

Éditez /etc/lightdm/lightdm.conf en y ajoutant la ligne donnée:

display-setup-script=/usr/share/lightdmxrandr.sh

Si vous souhaitez que ce script s'exécute également après la connexion, ajoutez:

session-setup-script=/usr/share/lightdmxrandr.sh

J'espère que ça marche pour toi!

4
samuelcersosimo