Für die Bildschirmeinstellungen gibt es sowohl in Gnome wie auch in KDE recht bequeme Konfigurationsmöglichkeiten. Was diese allerdings nicht bieten sind Profile: In aller Regel möchte ich die Ausgabe einfach auf den Fernseher haben und später wieder auf den Monitor umschalten. Und das am besten mit ein und der selben Taste. Mit Xrandr hat wohl jedes Linux mit grafischer Oberfläche das nötige Tool dabei…
Monitore/Fernseher/Beamer identifizieren
Zunächst sollte man die entsprechenden Geräte anschließen. Nun brauchen wir die interne Bezeichnung, die das System für die entsprechenden Ausgänge nutzt:
xrandr | grep connected
Dies liefert bei mir zum Beispiel folgendes:
VGA-0 connected (normal left inverted right x axis y axis) DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 474mm x 296mm
Die drei Buchstaben mit Bindestrich und Nummer am Anfang sind die Namen die wir suchen. Welches Ausgabegerät zu welchem Namen gehört sollte man entweder am Anschlussnamen (bei mir nutzt der Fernseher VGA, der Monitor DVI) oder der Auflösung erkennen können. Falls nicht, kann ein Gerät noch mal abgezogen und der Befehl erneut ausgeführt werden: Es sollte dann verschwunden sein.
Auf einzelne Geräte umschalten
Mit Xrandr kann man recht einfach auf ein Ausgabegerät wechseln, wenn man denn den Namen kennt:
xrandr --output VGA-0 --auto --output DVI-0 --off
Dies schaltet das VGA-Gerät ein, das DVI-Gerät aus. Andersrum geht es genauso:
xrandr --output VGA-0 --off --output DVI-0 --auto
VGA aus, DVI an. Xrandr findet bei mir die passenden Einstellungen immer automatisch. Ggf. muss man hier noch manuell nachhelfen.
Hin- und herschalten
Nun will ich dynamisch zwischen beiden Geräten hin- und herschalten. Hierfür nutze ich ein Shellskript, z. B. toogle.sh
:
#!/bin/bash EXTERNAL_OUTPUT="VGA-0" INTERNAL_OUTPUT="DVI-0" X_USER=$(w -h -s | grep ":[0-9]\W" | head -1 | awk '{print $1}') export DISPLAY=$(w -h -s | grep ":[0-9]\W" | head -1 | awk '{print $3}') # Switch to X user if necessary if [ "$X_USER" != "$USER" ]; then SU="su $X_USER -c" else SU="sh -c" fi INTERNAL_STATE=$($SU xrandr | grep ^$INTERNAL_OUTPUT | grep " con" | sed "s/.*connected//" | sed "s/ //" | sed "s/ .*//g"| sed "s/(normal//g" ) EXTERNAL_STATE=$($SU xrandr | grep ^$EXTERNAL_OUTPUT | grep " con" | sed "s/.*connected//" | sed "s/ //" | sed "s/ .*//g"| sed "s/(normal//g" ) #echo $INTERNAL_STATE if [ -z "$INTERNAL_STATE" ]; then echo "Switch to DVI" xrandr --output $EXTERNAL_OUTPUT --off --output $INTERNAL_OUTPUT --auto elif [ -z "$EXTERNAL_STATE" ]; then echo "Switch to VGA" xrandr --output $EXTERNAL_OUTPUT --auto --output $INTERNAL_OUTPUT --off fi
Im Skript ganz oben einfach die entsprechenden Gerätenamen einsetzen, die das System verwendet. Nun das Shellskript ausführbar machen…
chmod u+x toggle.sh
und testen…
./toggle.sh
Wenn alles klappt, kann man das Skript nun einfach auf eine Tastenkombination legen oder sich eine Verknüpfung im Systemmenü erstellen.