it-swarm.com.de

Ausführen von xrandr-Befehlen beim Start in Ubuntu

Wie kann ich den folgenden Befehl xrandr beim Start ausführen?

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

Komplizierte Befehle zu Startup Applications hinzufügen

Im Allgemeinen können Sie Befehle hinzufügen, die beim Starten (Anmelden) ausgeführt werden sollen, indem Sie Folgendes auswählen: Dash> Startanwendungen> Hinzufügen. In diesem Fall müssen Sie einen komplizierten Befehl ausführen.

Dafür gibt es zwei Möglichkeiten:

  1. schreiben Sie ein separates Skript:

    #!/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
    

    Kopieren Sie das Skript in eine leere Datei, speichern Sie es als set_monitor.sh und fügen Sie den Startanwendungen den folgenden Befehl wie oben beschrieben hinzu.

    /bin/bash /path/to/set_monitor.sh
    
  2. Verketten Sie die Befehle zu einem (sehr langen) Befehl:

     /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"
    

    In diesem Fall führt die Verwendung von && zwischen den Befehlen dazu, dass jeder Befehl ausgeführt wird, sobald (und wenn) der vorherige erfolgreich ausgeführt wird, genau wie in separaten Zeilen.

    Fügen Sie dann den Befehl wie oben beschrieben zu Startup Applications hinzu.

Wichtiger Hinweis: Hinzufügen von xrandr-Befehlen zu Startup Applications

Das Hinzufügen von xrandr -Befehlen zum Start kann schwierig sein. Manchmal brechen sie ab, wenn sie zu früh ausgeführt werden, bevor der Desktop vollständig geladen ist. Aus diesem Grund müssen Sie möglicherweise (wahrscheinlich) eine kleine Unterbrechung in den Befehl einfügen, um das Skript oder den Befehl (entweder) auszuführen, beispielsweise (im letzten Fall):

/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"

Möglicherweise müssen Sie ein wenig mit dem sleep 15 spielen, um die optimale Zeit zu finden.

Hinweis

Ich habe die erste Zeile weggelassen:

xrandr

da es nichts anderes tut, als ein paar Informationen auf deinem Bildschirm anzuzeigen :)

19
Jacob Vlijm

Laut this im Abschnitt Jetzt automatisiere ich es bei der Anmeldung , habe ich mein eigenes Skript 45custom_xrandr-settings erstellt und platziert es in /etc/X11/Xsession.d/. Es funktioniert gut für mich unter Ubuntu 14.04 LTS. Sie können den folgenden Code nach dem in diesem Abschnitt beschriebenen Befehl case einfügen.

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;

Ich glaube, dass das oben Genannte das ist, wonach Sie suchen. Sie können die verfügbaren Ausgaben anzeigen, indem Sie einfach den Befehl xrandr ausführen. Die Ausgaben können VGA, VGA-0, DVI-0, TMDS-1 oder DisplayPort-0 sein.

Hier ist das vollständige Skript, das ich erstellt habe.

# 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
7
ioaniatr

Erstellen Sie die Datei ~/.xprofile und fügen Sie Ihre Zeilen ein. Es wird zu Beginn der X-Benutzersitzung ausgeführt.

2
golopot