, wissen:linux_dualhead

Linux und Dualhead

Viele Studenten installieren Linux auf ihren Notebooks und wenn dann für eine Präsentation ein Beamer angesteckt werden soll, funktioniert es nicht richtig oder man muss erst mal peinlich lange suchen.

Zwei Bildschirme an einem Notebook

Grundsätzlich gibt es zwei Arten, mehrere Bildschirme zu betreiben:

  1. Clone-Modus
  2. Erweiterter Desktop

Ersteres ist mit jedem Grafikchip problemlos möglich. Zweiteres erzeugt auf Intel-Grafikchips Probleme, weil der externe Bildschirm im Intel-Treiber als primärer Bildschirm geführt wird und Gnome dann sämtliche Menüleisten auf den externen Bildschirm verschiebt. Für dieses Problem hat bisher niemand eine Lösung programmiert. Man kann die Leisten von Hand verschieben, aber das mach auf Dauer keinen Spaß, wenn man ständig den externen Bildschirm an- und absteckt.

Menü für die Bildschirmkonfiguration

Folgendes Script erzeugt ein Auswahlmenü für verschiedene Konfigurationen ähnlich dem uralten Presentation Manager von IBM:

#!/bin/bash
# Shell script to change screen layout and resolution on my Thinkpad.
#
# Parameters for command line usage:
# $1: Screen mode (1..5)
#
 
guiEnabled=0;
mode=0;
 
if [ -z $1 ]; then
	guiEnabled=1;
	mode=`zenity --width=500 --height=200 --list --radiolist \
	--title "Monitoreinstellungen ändern" \
	--text "Bitte wählen Sie eine der folgenden Einstellungen." \
	--column="" --column="" --column="Optionen" \
	"" "1" "Nur Notebook-Bildschirm" \
	"" "2" "Beamer angesteckt, erweiterter Desktop" \
	"" "3" "Beamer angesteckt, gespiegelter Desktop" \
	"" "4" "TEL-Gebäude, 1650x1050" \
	"" "5" "Zu Hause, 1920x1080"`
else
	guiEnabled=0;
	mode=$1;
fi
 
if [ -z $mode ]; then
	exit 1;
fi
 
 
# Show a message to the user via GUI or command line
# $1: message
print()
{
	text=$1;
	if [ $guiEnabled -eq 1 ]; then
		zenity --error --text="$text";
	else
		echo $text;
	fi
}
 
 
# Choose screen mode
# Modes and adapter names have to be edited manually.
case "$mode" in
	1)
		xrandr --output LVDS1 --mode 1024x768 --output VGA1 --off
		;;
	2) 
		if xrandr -q | grep -q "VGA1 connected"; then
			xrandr --output LVDS1 --mode $res_internal --output VGA1 --mode 1024x768 --$pos_external LVDS1
		else
			print "Kein Beamer gefunden. Ist der Beamer angeschaltet und mit dem Notebook verbunden?";
			exit 1;
		fi
		;;
	3)
		if xrandr -q | grep -q "VGA1 connected"; then
			xrandr --output LVDS1 --mode $res_beamer --output VGA1 --mode 1024x768 --same-as LVDS1
		else 
			print "Kein Beamer gefunden. Ist der Beamer angeschaltet und mit dem Notebook verbunden?";
			exit 1;
		fi
		;;
	4)
		if xrandr -q | grep -q "VGA1 connected"; then
			xrandr --output VGA1 --mode 1650x1050 --output LVDS1 --off
		else 
			print "Kein Monitor gefunden. Ist einer angeschaltet und mit dem Notebook verbunden?";
			exit 1;
		fi
		;;
	5)
		if xrandr -q | grep -q "VGA1 connected"; then
			xrandr --output VGA1 --mode 1920x1080 --output LVDS1 --off
		else
			print "Kein Monitor gefunden. Ist einer angeschaltet und mit dem Notebook verbunden?";
			exit 1;
		fi
		;;
	*)
		print "Modus \"$mode\" nicht bekannt";
		exit 1;
		;;
esac

Das Script benötigt das Paket Zenity und libxrandr2 um die GUI darzustellen respektive die Auflösung zu ändern. Dies ist bei Ubuntu aber schon standardmäßig dabei. Außerdem muss man bei vielen alten Grafikchips noch die xorg.conf editieren um den Grafikchip zu überreden eine höhere Gesamtauflösung als 2048x204 Pixel zu akzeptieren. Allerdings verliert man dann meistens die 3D-Effekte, die aber sowieso oft nur stören und Rechenleistung kosten.

In der Datei /etc/X11/xorg.conf ist in der Subsection Display in der Section Screen eine Zeile hinzuzufügen: Virtual 3000 1200 Die Auflösung gibt an, wie groß die maximale Arbeitsfläche mit beiden Monitoren werden kann. In meinem Fall sind das 1600x1200 für den externen Bildschirm + 1400x1050 für den internen. Da die beiden Bildschirme nebeneinander angezeigt werden sollen, ergibt sich eine maximale virtuelle Auflösung von 3000x1200.

Am besten, man packt das Script in irgendeinen Ordner innerhalb des Home-Verzeichnis (zum Beispiel bin) und legt sich auf dem Desktop einen Starter dafür an. Dem Starter kann man dann noch ein hübsches Symbol zuweisen. Außerdem kann man dem Script auch ein Tastenkürzel spendieren. Dann funktioniert es wirklich wie der Presentation Manager von IBM.

Und fertig ist die Lösung, die eigentlich immer funktioniert und einigermaßen idiotensicher ist.

DVDs und Dualhead

Es ist immer peinlich, wenn man beim DVD zeigen seinen eigenen unaufgeräumten Desktop präsentieren muss. Darum bietet sich auch dafür der erweiterte Modus an.

VLC ist das Programm der ersten Wahl. VLC kann nämlich so eingestellt werden, dass DVDs im Vollbildmodus auf dem Screen1 wiedergegeben werden (Einstellungen→Video→Ausgabemodule).

Präsentationen

Leider gibt es bisher keine Lösung, wie ein Vollbild einer PDF_Datei automatisch auf dem externen Monitor darstellen kann. Ebensowenig gibt es keinen wirklich guten Ersatz für MS Powerpoint (ab 2007 benutzbar) unter Linux. OpenOffice beherrscht in der Version 3.1 immer noch nicht den Umgang mit einem erweiterten Desktop. Aber es gibt ein Plugin, den Presenter Screen

wissen/linux_dualhead.txt · Zuletzt geändert: 23.10.2012 21:25 von btu_weickric