An einem Computer oder Notebook angeschlossene Bildschirme kann man sehr einfach mit dem Tool xrandr verwalten und steuern. Dabei kann man z. B. den Bildausschnitt oder die Auflösung festlegen. Dieser Artikel gilt für Bildschirme wie auch für Beamer.
Bildschirme erkennen
Mit folgendem Befehl kann man feststellen, welche Bildschirme einem zur Verfügung stehen und wie die aktuelle Konfiguration aussieht:
Wenn an meinem Notebook kein externer Bildschirm angeschlossen ist, sieht das so aus:
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192
LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 261mm x 163mm
1280x800 60.2*+ 50.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
Am Status disconnected ist gut ersichtlich, dass am VGA-Port (VGA1) noch kein Gerät angeschlossen ist. Nach dem Einstecken von einem Bildschirm am VGA Port sieht die Ausgabe folgendermassen aus:
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192
LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 261mm x 163mm
1280x800 60.2*+ 50.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 connected (normal left inverted right x axis y axis)
1024x768 60.0 + 85.0 75.1 70.1
1280x1024 60.0
1152x864 75.0
832x624 74.6
800x600 85.1 72.2 75.0 60.3
640x480 85.0 72.8 75.0 60.0
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
Das Pluszeichen (+) zeigt, welche Auflösung für die Autokonfiguration (–auto) verwendet wird. Der Stern (*) zeigt, welche Auflösung aktiv ist. In diesem Fall ist nur der interne Monitor (LVDS1) aktiviert. Der externe Bildschirm (VGA1) ist nicht aktiv.
Alle angeschlossenen Bildschirme automatisch aktivieren
Um alle angeschlossenen Bildschirme zu aktivieren, genügt dieser einfache Befehl:
Somit werden alle angeschlossenen Geräte automatisch mit der passendsten Auflösung (erkennbar am +) konfiguriert und eingeschaltet. Dabei liegen die zwei Bilder übereinander. Ist ein Bildschirm kleiner, wird dort das Bild abgeschnitten und ist nicht komplett sichtbar.
Nach dem Ausstecken von einem Monitor kann man diesen Befehl auch zum Deaktivieren vom nicht mehr mehr angeschlosenen Monitor verwenden.
Nur externen Bildschirm verwenden
Der externe Bildschirm (VGA1) kann mit diesem Befehl aktiviert und der interne Bildschirm (LVDS1) deaktiviert werden:
Jetzt ist nur noch der externe Bildschirm aktiv.
Nur internen Bildschirm verwenden
Wenn man den externen Monitor (VGA1) deaktivieren und nur noch den internen Monitor (LVDS1) verwenden will, kann man folgenden Befehl nutzen:
Jetzt ist nur noch der interne Bildschirm aktiv.
Internen Bildschirm mit externem Bildschirm erweitern
Manchmal möchte man den internen Bildschirm um den externen Bildschirm erweitern. Mit dem Schalter –right-of, –left-of, –above oder –below kann man dabei die Position festlegen.
Nach dem Ausführen von diesem Befehl, ist der externe Bildschirm (VGA1) auf der rechten Seite vom internen Bildschirm (LVDS1) aktiv.
Internen Bildschirm auf externen Bildschirm clonen
Um genau dasselbe Bild auf beiden Bildschirmen auszugeben, muss man zuerst die grösste gemeinsame Auflösung herausfinden. Diese Information kann man mit xrandr –query herausfinden. Folgender Befehl macht das automatisch:
Dass der externe Bildschirm (VGA1) dasselbe wie der interne Bildschirm (LVDS1) anzeigt, wird mit dem Schalter –same-as LVDS1 gesagt. Die gemeinsame Auflösung muss man für beide Bildschirme mit dem Schalter –mode definieren. So sieht der Befehl aus:
Jetzt nutzen beide Bildschirme die selbe Auflösung und zeigen den selben Inhalt an.
Automatisierung mit einem Script
Ich habe mir ein Wrapper-Script geschrieben, welches diese Aufgaben für mich übernimmt:
######################################################################
#
# bildschirm
# Bildschirme/Beamer steuern und verwalten
#
# Copyright 2011 Emanuel Duss
# Licensed under GNU General Public License
#
# 2011-07-26; Emanuel Duss; Erste Version
# 2012-08-26; Emanuel Duss; $CLONERES automatisch bestimmen
#
######################################################################
######################################################################
# Variabeln
INTERN="LVDS1"
EXTERN="VGA1"
######################################################################
# Funktionen
PrintUsage(){
cat << EOI
Usage:
bildschirm < modes | intern | extern | clone | extend >
Optionen:
modes Moegliche Modes ausgeben
intern Nur internen Bildschirm verwenden
extern Nur externer Bildschirm verwenden
clone Gleiche Ausgabe auf beiden Bildschirmen
extend Bild auf externem Bildschirm erweitern
EOI
}
######################################################################
# Main
case $1 in
modes)
xrandr -q
;;
intern)
xrandr --output $INTERN --auto --output $EXTERN --off
;;
extern)
xrandr --output $INTERN --off --output $EXTERN --auto
;;
clone)
CLONERES=`xrandr --query | awk '/^ *[0-9]*x[0-9]*/{ print $1 }' | sort -n | uniq -d | tail -1`
xrandr --output $INTERN --mode $CLONERES --output $EXTERN --same-as $INTERN --mode $CLONERES
;;
extend)
xrandr --output $INTERN --auto --output $EXTERN --auto --right-of $INTERN
# xrandr --output $EXTERN --mode $EXTRES --pos 1280x0 --output $INTERN --mode $INTRES --pos 0x400
;;
*)
PrintUsage
;;
esac
# EOF
Dem Skript gibt man als ersten Parameter entweder modes, intern, extern, clone oder extend mit und schon wird der richtige xrandr-Befehl aufgerufen. Das sind die möglichen Optionen:
- modes: Moegliche Modes ausgeben
- intern: Nur internen Bildschirm verwenden
- extern: Nur externer Bildschirm verwenden
- clone: Gleiche Ausgabe auf beiden Bildschirmen
- extend: Bild auf externem Bildschirm erweitern
Wenn ich z.B. jetzt auf beiden Bildschirmen das gleiche Bild anzeigen will, mache ich das so:
Vorausgesetzt das Script ist ausführbar im $PATH zu finden.
Links und weitere Informationen
- XRandR Projektseite: http://www.x.org/wiki/Projects/XRandR
Viel Spass.
Hi!
Thank you for publishing this useful script.
I encountered a problem in the automatic clone resolution selection: due to the sort algorithm the maximum value is not necessarily taken; the alphabetically first one is selected:
I.e. from {1024×768 1280×800 640×480 800×600 } your command selects 1024×768, because it is sorted first.
Howevery by replacing the CLONRES definition with
CLONERES=`xrandr –query | awk ‘/^ *[0-9]*x[0-9]*/{ print $1 }’ | sort -n | uniq -d | tail -1`
the maximum resolution availible is selected.
Greetings
Nils Stöckmann
Hello Nils
Thanks.
I’ve never had this situation, but it seems plausible.
I changed the Script, also on GitHub.
Thanks for your feedback!!
Greetings
Emanuel