web-dev-qa-db-fra.com

Comment exécuter les commandes xrandr au démarrage sous Ubuntu

Comment puis-je exécuter la commande xrandr au démarrage?

xrandr

cvt 1368 768 
xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync
xrandr --addmode VGA1 1368x768_60.00
xrandr --output VGA1 --mode 1368x768_60.00 
13
Udhaya Kumar

Ajout de commandes compliquées aux applications de démarrage

En général, vous pouvez ajouter des commandes à exécuter au démarrage (connexion) en choisissant: Dash> Applications de démarrage> Ajouter. Dans ce cas, vous devez exécuter une commande compliquée.

Il y a deux options pour le faire:

  1. écrire un script séparé:

    #!/bin/bash
    
    cvt 1368 768 
    # xrandr only works in X11 sessions, not Wayland
    [ "$XDG_SESSION_TYPE" = x11 ] || exit 0
    xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync
    xrandr --addmode VGA1 1368x768_60.00
    xrandr --output VGA1 --mode 1368x768_60.00
    

    Copiez le script dans un fichier vide, enregistrez-le sous set_monitor.sh et ajoutez la commande suivante au démarrage des applications, comme décrit ci-dessus.

    /bin/bash /path/to/set_monitor.sh
    
  2. Chaîne les commandes à une (très longue) commande:

     /bin/bash -c "cvt 1368 768&&xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync&&xrandr --addmode VGA1 1368x768_60.00&&xrandr --output VGA1 --mode 1368x768_60.00"
    

    Dans ce cas, utiliser && entre les commandes fera en sorte que chaque commande soit exécutée dès que (et si) la précédente est exécutée avec succès, comme si elles se trouvaient sur des lignes séparées.

    Ajoutez ensuite la commande aux applications de démarrage, comme décrit ci-dessus.

Remarque importante: ajout de commandes xrandr aux applications de démarrage

L'ajout de commandes xrandr au démarrage peut s'avérer délicat. parfois, ils cassent s’ils sont exécutés trop tôt, avant que le bureau ne soit complètement chargé. Par conséquent, vous pourriez (probablement) avoir besoin d'ajouter une petite coupure dans la commande pour (exécuter) le script ou la commande, comme (dans le dernier cas):

/bin/bash -c "sleep 15&&cvt 1368 768&&xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync&&xrandr --addmode VGA1 1368x768_60.00&&xrandr --output VGA1 --mode 1368x768_60.00"

Vous devrez peut-être jouer un peu avec le sleep 15pour trouver le temps optimal.

Remarque

J'ai oublié la première ligne:

xrandr

car cela ne donne rien mais affiche quelques informations sur la configuration de votre écran :)

19
Jacob Vlijm

Selon this à la section , automatisez-le à la connexion , j'ai créé mon propre script 45custom_xrandr-settings et l'ai placé dans /etc/X11/Xsession.d/. Cela fonctionne très bien pour moi sous Ubuntu 14.04 LTS. Vous pouvez placer le code ci-dessous après la commande case décrite dans cette section.

PRI_OUTPUT="DVI-0";
# Make and force resolution
myNewMode=$(cvt 1366 768 60 | grep -oP 'Modeline\K.*') &&                           #grep evrything after 'Modline'
myNewModeName=\"$(echo $myNewMode | grep -oP '"\K[^"\047]+(?=["\047])' )\" &&       #grep everything inside quotes
xrandr --newmode $myNewMode;
sleep 15;       
xrandr --addmode $PRI_OUTPUT $myNewModeName;

Je crois que ce qui précède est ce que vous recherchez. Vous pouvez voir les sorties disponibles simplement en exécutant la commande xrandr. Les sorties peuvent être VGA, VGA-0, DVI-0, TMDS-1 ou DisplayPort-0.

Voici le script complet que j'ai fait.

# To configure xrandr automatically during the first login, 
# save this script to your computer as /etc/X11/Xsession.d/45custom_xrandr-settings: 

# If an external monitor is connected, place it with xrandr
# External output may be "VGA" or "VGA-0" or "DVI-0" or "TMDS-1"

# More info at http://www.thinkwiki.org/wiki/Xorg_RandR_1.2


PRI_OUTPUT="DVI-0";
SEC_OUTPUT="DisplayPort-0";
SEC_LOCATION="left";    # SEC_LOCATION may be one of: left, right, above, or below

case "$SEC_LOCATION" in
       left|LEFT)
               SEC_LOCATION="--left-of $PRI_OUTPUT"
               ;;
       right|RIGHT)
               SEC_LOCATION="--right-of $PRI_OUTPUT"
               ;;
       top|TOP|above|ABOVE)
               SEC_LOCATION="--above $PRI_OUTPUT"
               ;;
       bottom|BOTTOM|below|BELOW)
               SEC_LOCATION="--below $PRI_OUTPUT"
               ;;
       *)
               SEC_LOCATION="--left-of $PRI_OUTPUT"
               ;;
esac

# Make and force resolution
myNewMode=$(cvt 1366 768 60 | grep -oP 'Modeline\K.*') &&                           #grep evrything after 'Modline'
myNewModeName=\"$(echo $myNewMode | grep -oP '"\K[^"\047]+(?=["\047])' )\" &&       #grep everything inside quotes
xrandr --newmode $myNewMode;
sleep 15;       
xrandr --addmode $PRI_OUTPUT $myNewModeName;


# Activate secondary out (display port)
xrandr | grep $SEC_OUTPUT | grep " connected "
if [ $? -eq 0 ]; then
#   xrandr --output $SEC_OUTPUT --auto $SEC_LOCATION
    xrandr --output $PRI_OUTPUT --mode $myNewModeName --output $SEC_OUTPUT --auto $SEC_LOCATION
else
    xrandr --output $PRI_OUTPUT --mode $myNewModeName --output $SEC_OUTPUT --off
fi
6
ioaniatr

Créez le fichier ~/.xprofile et mettez-y vos lignes. Il est exécuté au début de la session utilisateur X.

2
golopot