CHIP: Grafische Oberfläche für Linux
| |
Bei einem modernen Unix-System darf natürlich eine grafische
Oberfläche nicht fehlen. Besonders wenn der Rechner nicht als Server
in einem Netzwerk dient, sondern als Workstation, ist diese von
immenser Wichtigkeit.
|
|
Für den Unix-Sektor wurde daher vor Jahren das X Consortium gegründet, das Standards und Schnittstellen definiert, um eine allgemein benutzbare Oberfläche, das sogenannte X Window System(tm), zu erhalten. Das X Window System ist eine große und leistungsstarke grafische Umgebung für Unix-Derivate. Kommerzielle Hersteller haben X zum grafischen Standard für Unix-Plattformen gemacht.
| Unterstützte Grafikkarten | |
|
Wenn Sie sich einen neuen Rechner oder eine neue Grafikkarte kaufen und Linux respektive X laufen lassen wollen, sollten Sie vorher sicherstellen, daß die Karten auch von XFree86 unterstützt wird. Bei heutzutage üblichen Grafikkarten stehen Sie auf der sicheren Seite. Sollten Sie jedoch eine andere oder sehr neue Karte kaufen, prüfen Sie unbedingt den Chipsatz und fragen Sie ggf. den Hersteller vor dem Kauf. Die unterstützten Chipsätze finden Sie auf der CD aus dem letzten Heft in der XFree86-HOWTO \WORKSHOP\HOWTO\XFREE86, eine Liste unterstützter Grafikkarten ist in der Hardware-HOWTO \WORKSHOP\HOWTO\HARDWARE enthalten. Die mittlerweile gut verbreitete Matrox Millenium wird noch nicht von XFree86 unterstützt, die nötige Dokumentatation wurde mittlerweile jedoch rausgegeben und wir dürfen in nächster Zeit mit dem Treiber rechnen. Bis dahin kann lediglich der Accellerated-X-Server von X-Inside (erhältlich bei S.u.S.E. oder Delix) verwendet werden. | |
Für PC-Unixe hat sich das XFree86 Projekt gebildet, eine nicht-kommerzielle Organisation, die X-Server für PC-Unixe und Unix-ähnliche Systeme entwickelt und der Allgemeinheit zur Verfügung stellt. Das XFree86 Projekt veröffentlicht die Server unter der GNU Public License (GPL), es ist also frei benutzbare Software. Der jeweilige X-Server stellt dabei die Basis für das X Window System dar; wenn er läuft, hat man einen grafischen Arbeitsplatz.
Das XFree86-Team hat jedoch ein Problem, sie können nur Treiber für Grafikkarten entwickeln, von denen Sie die Hardware-Beschreibung bekommen. Leider geben einige Hersteller von Grafikkarten die Spezifikationen nicht oder nur für viel Geld heraus, sodaß es für solche vorerst keine Treiber geben wird. (siehe Kasten 1)
| Verfügbare Applikationen | |
| |
Bei der Xlinux-Distribution ist das X Window System schon vorkonfiguriert mit einem 16-Farb X-Server für EGA-/VGA-Karten. Dieser liefert bei einer Auflösung von 800x600 Pixel meist akzeptable Resultate. Bevor Sie den jedoch ausprobieren können, müssen Sie die Mausunterstützung konfigurieren, sofern Sie das nicht im Anschluß an die Installation erledigt haben.
Dazu loggen Sie sich als {\tt root} ein und rufen das Programm {\tt mouseconfig} auf. Sie werden dann nach der seriellen Schnittstelle und nach dem Maustypen gefragt. Anschließend loggen Sie sich als {\tt user} ein und können mit {\tt startx} den X-Server testweise hochfahren.
Abb. 1: Emacs, JED und Xman
Normalerweise landet man nach Booten von Unix auf einer Textkonsole. Linux hat virtuelle Konsolen, maximal 64, beim Xlinux sind 6 davon aktiviert (Alt-F1 bis Alt-F6). Wenn X11 gestartet wird, belegt es eine weitere virtuelle Konsole, die nächste freie, hier wäre das dann die siebte, auf die man von den anderen Textkonsolen mit Alt-F7 umschalten kann.
Ist man bereits im Grafikmodus, so kann man jederzeit mit
Ctrl-Alt-F Der X-Server, und damit die grafische Benutzeroberfläche kann auf zwei
Arten gestartet werden. Welche man verwendet, hängt stark von der Art
der Rechnernutzung ab. Zum einen kann X11 mit dem Befehl {\tt startx}
pro User gestartet werden und zum anderen kann das System via {\tt
xdm} in den Grafikmodus und auf ein grafisches Login-Programm
geschaltet werden. Der {\tt xdm} ist bei Xlinux jedoch nicht
enthalten.
Die Basis der persönlichen Konfiguration Ihres Desktops liegt in der
Datei {\tt .xinitrc} in ihrem Verzeichnis. Wenn Sie nicht existiert,
wird die systemweite Voreinstellung, die in {\tt
/usr/X11/lib/X11/xinit/xinitrc} liegt, verwendet. Kopieren Sie diese
Datei in Ihr Heimatverzeichnis und benennen Sie sie in {\tt .xinitrc}
um.
Bei dieser Datei handelt es sich um ein einfaches Shellskript. Hinter
die zu startenden Programme schreiben Sie mit ein kaufmännisches Und:
{\tt &}, damit sie im Hintergrund ablaufen und nicht die Abarbeitung
blockieren. Das letzte Programm ist die sogenannte kritische
Applikation, sie darf nicht im Hintergrund, sondern muß im Vordergrund
ablaufen. Dieses ist üblicherweise der Fenstermanager, hier der fvwm,
oft wird auch eine Uhr, einer Auslastungsanzeige, das X-Logo
etc. verwendet. Wenn diese Applikation beendet wird (z.B. durch den
Menüpunkt "Exit FVWM"), wird X11 ebenfalls beendet.
Wenn Sie weitere Programme starten möchten, werden Sie sehen, daß
diese irgendwo auf dem Desktop plaziert werden bzw. daß mit der Maus
abgelegt werden müssen. Die meisten X11-Programme verstehen einen
Kommandozeilenparameter {\tt -geometry} oder abgekürzt {\tt -g}, mit
dem Sie die genaue Bildschirmposition festlegen können.
Die Geometrie wird dabei im Format
Breite x Höhe +X-Pos+Y-Pos
angegeben. Dabei werden Breite und Höhe je nach Anwendung in Pixel
oder in Spalten bzw. Zeilen (z.B. beim {\tt xterm}) angegeben. Den Positionen
kann ein + oder - vorangestellt werden. Die Werte sind relativ zu
einer der vier Ecken. +X-Pos ist der linker Rand, -X-Pos der rechte,
+Y-Pos der obere und -Y-Pos der untere Rand, +X-Pos+Y-Pos bezeichnet
demnach die linke obere Ecke. Mit {\tt rclock -geometry -0+0} setzen
Sie z.B. die Uhr in die rechte obere Ecke.
Wenn Sie eine schönere Hintergrundfarbe haben möchten, können Sie mit
{\tt xsetroot -solid farbe} eine Farbe aus der Datei {\tt
/usr/X11/lib/X11/rgb.txt} als Hintergrundfarbe setzen. Sie können mit
{\tt xv -root -quit bild} auch ein Bild als Hintergrund laden. Wenn
Sie jedoch etwas ganz Schickes haben möchten, dann nehmen Sie {\tt
xearth}, eine sich drehende Erde aus dem Weltraum fotografiert, als
animierten Hintergrund. Immer wieder nett in der Weihnachtszeit ist
auch {\tt xsnow}, ein beschneiter Wald mit Santa Claus.
Sollte Ihnen der X-Server nicht gefallen, haben Sie zum einen die
Möglichkeit, einen anderen X-Server zu wählen und können bzw. müssen
zum anderen die Konfiguration anpassen. Weitere X-Server finden Sie
auf Ihrer CD aus dem letzten Heft im Verzeichnis {\tt
\WORKSHOP\XSERVER}
Zuvor müssen Sie die CD erst einmal unter Linux mounten (in das
Dateisystem einbinden). Das geschieht mit dem {\tt mount}-Befehl: {\tt
mount -t iso9660 /dev/cdrom /cdrom}, eventuell müssen Sie dem Kernel
vorher noch das ISO-Dateisystem bekanntmachen, und zwar mit dem Befehl
{\tt insmod isofs}.
Jetzt ist die CD unterhalb von {\tt /cdrom} eingebunden. Sie finden im
Verzeichnis {\tt /cdrom/workshop/xserver} X-Server für Grafikkarten
mit IBM8514-, Mach8- und Mach32-, S3-Chips und für SVGA-Karten. Das
gewünschte Archiv packen Sie mit dem Befehl {\tt tar xvfz
/cdrom/workshop/xserver/x_*.tgz} im Hauptverzeichnis {\tt /} aus.
Im Verzeichnis {\tt /usr/X11/bin} müssen Sie den neuen X-Server noch
bekanntmachen. Dazu legen Sie einen symbolischen Link (einen
Dateiverweis) an. Der gestartete X-Server heißt immer {\tt X}, Sie
müssen also einen Link anlegen vom neuen X-Server zur Datei {\tt
X}. Das geschieht z.B. mit dem Befehl {\tt ln -sf XF86_SVGA X}.
Wahrscheinlich können Sie jetzt X11 wieder mit {\tt startx}
hochfahren. Sollte sich der X-Server sofort wieder beenden, müssen Sie
die Konfiguration jedoch selbst in die Hand nehmen. Diese finden Sie
in der Datei {\tt /usr/X11/lib/X11/Xconfig}. Sie sollten zuerst eine
neue Auflösung erstellen, die funktioniert und diese dann kopieren und
tunen.
Im Gegensatz zum Xlinux liegt bei aktuellen Linux-Distributionen wie
S.u.S.E., DLD, Debian etc. ein interaktives Konfigurationsprogramm
bei. Dort finden Sie auch neuere X-Server, die aktuelle Grafikkarten
besser unterstützen.
Die Konfiguration des X-Servers ist kritisch, achten Sie unbedingt
darauf, daß Sie keine Grenzwerte überschreiten und keine
unrealistische Werte verwenden.
Die Einstellungen für Tastatur und Maus sowie Pfade zu den Schriften
sollten bereits stimmen. Von Interesse sind jetzt die Abschnitte
VGA256 (für SVGA-Karten) und ACCEL (für Beschleunigerkarten). Hier ist
hauptsächlich die Zeile {\tt Modes} von Interesse, die die zu
verwendenden Grafikmodi benennt. Diese versucht der X-Server der Reihe
nach darzustellen (nicht darstellbare werden übersprungen). Mit
[Ctrl]-[Alt]-[Grau-Plus] bzw. [Grau-Minus] kann zwischen diesen Modi
gewechselt werden.
Die Zeile {\tt Virtual} beschreibt die virtuelle Auflösung. Wundern
Sie sich nicht, denn wenn Sie einen Grafikmodus mit 640x480 Punkten
wählen, jedoch 1MB RAM auf Ihrer Grafikkarte haben, dann kann X11 den
restlichen Speicher trotzdem ausnutzen. X11 berechnet in diesem Fall
den Grafikbildschirm größer als ihr Monitor tatsächlich ist, Sie sehen
also nur einen kleinen Ausschnitt des eigentlichen Bildschirms. Mit
der Maus können Sie diesen Ausschnitt in alle vier Richtungen
bewegen. Die Zeile {\tt ViewPort} beschreibt die Anfangsposition Ihres
Ausschnittes. Diese virtuellen Bildschirme sind übrigens nicht zu
verwechseln mit den virtuellen Screens, den viele Fenster-Manager
bieten.
Die in der {\tt Modes} referenzierten Grafikmodi werden in einem
eigenen Abschnitt {\tt ModeDB} weiter unten beschrieben. Jede Zeile
entspricht einem Mode, der eindeutig anhand des Namens (erstes Feld)
und der Frequenz (zweites Feld) identifiziert wird. Das dritte Feld
besteht aus vier Zahlen, die das horizontale Timing beschreiben. Das
vierte Feld beschreibt analog das vertikale Timing. An fünfter Stelle
können noch zusätzliche Parameter stehen.
Der Monitor erzeugt aus einer Reihe von Punkten ein Bild. Die Punkte
sind von links nach rechts zu Zeilen angeordnet. Die Zeilen wiederum
sind von oben nach unten angeordnet und stellen das Bild dar. Die
Bildschirmpunkte leuchten, wenn sie vom Elektronenstrahl berührt
werden. Damit der Strahl jeden Punkt eine gleiche Zeitspanne lang
trifft, huscht er in einem konstanten Muster über den Bildschirm.
Der Elektronenstrahl fängt in der linken oberen Ecke an, läuft über
den Bildschirm nach rechts in einer geraden Linie und hält kurzzeitig
am rechten Ende an. Danach kehrt er wieder an die linke Seite zurück,
jedoch um eine Zeile nach unten versetzt - das ist die horizontale
Synchronisation. Dieses Muster wird so oft wiederholt, bis die
unterste Zeile erreicht ist. Anschließend wird der Strahl von der
unteren rechten Ecke in die linke obere bewegt - die vertikale
Synchronisation - und das ganze beginnt von vorne.
Wenn der Elektronenstrahl die ganze Zeit eingeschaltet wäre, würden
alle Punkte auf dem Bildschirm erleuchtet werden. Es wäre kein
schwarzer Rand vorhanden und das Bild wäre am Rand verzerrt, da der
Strahl dort schwer zu kontrollieren ist. Um diesem Problem zu
begegnen, werden die Punkte um den Rand nicht erleuchtet, was die
Größe des benutzbaren Ausschnittes etwas reduziert. Die Zeit, die der
Strahl benötigen würde, um die Ränder zu erleuchten, wird dazu genutzt,
ihn wieder zurückzufahren (nach links bzw. nach oben), um neu
anzusetzen.
Das erste der vier Felder im horizontalen Timing entspricht der
horizontalen Auflösung (z.B. 800 Punkte), also den sichtbaren Punkten.
Das zweite Feld beschreibt den Bildschirmpunkt an dem die horizontale
Synchronisation beginnt. Das dritte Feld entspricht dem
Bildschirmpunkt an dem diese beendet wird und das vierte ist der
letzte Punkt der Zeile. Das vertikale Timing ist analog dazu
aufgebaut. Alle Zahlen des horizontalen Timings müssen durch acht
teilbar sein, gegebenenfalls müssen die Zahlen aufgerundet (nie
abgerundet) werden.
Um die Zahlen berechnen zu können, benötigen Sie einige Daten über
Ihren Monitor: die horizontale und vertikale Synchronisation, die
Auflösung, die er darstellen kann. Außerdem werden noch die Größe des
Speichers auf der Grafikkarte und unterstützte Frequenzen
gebraucht. Diese können Sie vom Quarz auf der Karte ablesen oder durch
den Aufruf von {\tt X -probeonly} herausbekommen, 40MHz wäre z.B. eine
passable Frequenz. Von diesen hängt das gesamte Timing ab. Jeder
Zyklus der Grafikkarte entspricht einem Punkt auf dem Monitor.
Wenn aus dem Handbuch hervorgeht, daß der Monitor 800x600 Punkte
unterstützt, dann akzeptiert er 1.33 mal soviel Punkte (=1064) und 1.1
mal soviel Zeilen (=660). Anhand des Speichers auf der Grafikkarte
können Sie berechnen, welche Auflösung die Grafikkarte schaffen kann,
bei 256 Farben belegt jeder Punkt ein Byte, sie müssen also lediglich
die Anzahl der Zeilen mit der Anzahl Punkte pro Zeile multiplizieren
und vergleichen.
Wenn Sie die Modelines selbst berechnen, bedenken Sie unbedingt, daß
zu progressiv gewählte Werte den Monitor physikalisch zerstören
können. Verwenden Sie nur Werte, die innerhalb der Spezifikation ihres
Monitors liegen - niemals höhere Auflösungen etc. Wenn Sie sich nicht
sicher sind, nehmen Sie lieber geringere Auflösungen in Kauf - ihr
Monitor wird es Ihnen danken.
Wenn der Monitor eine horizontale Synchronisation von 37KHz und die
Grafikkarte eine Frequenz von 40MHz hat, dann kann der Monitor minimal
40MHz/37KHz = 1081 Punkte, aufgerundet 1088, in einer Zeile
darstellen.
Davon ausgehend, daß die horizontale Synchronisation 3.8 Mikrosekunden
dauert, werden die überstrichenen Punkte berechnet. Für einen
Bildschirmpunkt werden 1/40000000 Sekunden, also 0.025 Mikrosekunden
benötigt. In 3.8 Mikrosekunden werden demnach 152 Punkte vom
Elektronenstrahl überstrichen.
Es bleiben also noch 138 Bildschirmpunkte über, diese werden für den
linken und rechten Rand genommen. Geteilt und gerundet sind das 68
Punkte für jeden Rand. Die vier Zahlen werden nun wie folgt berechnet:
800 (800+68) (800+68+152) (800+68+152+68)
Der Block sieht also wie folgt aus:
800 868 1020 1088
Das vertikale Timing wird ganz genauso berechnet. Auf der Basis dieses
Videomodes können Sie an das Feintuning gehen und ein wenig mit den
Zahlen "spielen".
Abb. 2: xfig, spider, InterViews
Konfiguration des X-Servers
Abb. 3: StarWriter von StarOffice 3.1
Abb. 4: Textverarbeitung und Ghostview
Abb. 5: Webbrowser
Hinweis auf Monitor-Zerstörung
# The 8-bit colour SVGA driver
#
VGA256
NoSpeedUp
Virtual 1024 768
Viewport 0 0
Modes "800x600chip" "640x480" "1024x768"
# **********************************************************************
# Database of video modes
# **********************************************************************
ModeDB
# name clock horizontal timing vertical timing flags
"640x480" 28.30 640 664 760 800 480 491 493 525
"800x600" 28.30 800 824 896 1024 600 601 603 625
"800x600chip" 40.00 800 868 1020 1088 600 603 309 630
"1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync
Ausschnitt aus der Datei XF86Config
Literatur
Jan Kleinert/Peter Sieg
CHIP 11/96
Quelle: CHIP 12/96
![[Emacs, JED und Xman]](emacs-small.png)
![[xfig, spider, InterViews]](grafwork-small.png)
![[StarWriter von StarOffice 3.1]](swriter-small.png)
![[Textverarbeitung und Ghostview]](textwork-small.png)
![[Webbrowser]](web-small.png)