| |
|
|
| |

Grundlagen des X-Window Systems
Die grafische Oberfläche von Unix heisst "X11" oder auch "X-Window System". Manchmal wird es "X-windows" genannt oder einfach nur "X".
X ist schon etwa 15 bis 20 Jahre alt, also älter als Microsoft Windows oder die Apple-Oberfläche.
X hat gegenüber diesen Systemen einige Vorteile:
* X ist und war vollkommen und von Anfang an netzwerktransparent. Netzwerktransparent heisst, dass ein Programm auf Computer A laufen kann, seine Anzeige aber auf Computer B ausgibt oder umgekehrt.
Der Teil der die X Anzeigeoberfläche zur Verfügung stellt, wird als "X server" bezeichnet. Die Programme, die diesen "X server" benutzen um sich selbst darzustellen, werden als "X clients" bezeichnet.
Auf den meisten Workstations laüft üblicherweise der X server und X clients am selben Computer. Das ist allerdings nicht notwendig. Du kannst sowohl auf deinem Laptop Programme anzeigen, die auf anderen Computern laufen, als auch umgekehrt Programme laufen lassen, die ihre Anzeige auf einem anderen Gerät haben. (Bei Text-orientierten Programmen die in einem einfachen "telnet" oder "ssh" laufen, geht das natürlich ohnehin immer ohne Probleme.. Aber mit X11 gilt das auch für grafische Programme.. also z.B. xdvi, xterm, gimp, netscape, ... )
Der X-Server, der üblicheweise unter Linux verwendet wird, ist der freie "XFree86" X-Server. Es gibt aber auch kommerzielle X Server. Es gibt sogar X server für M$-Windows, damit kann man Unix Programme via Netz auf Windows Anzeigen. (z.B.: eXceed - ist aber sehr teuer.. MI/X ist gratis, nicht frei und auch nicht besonders gut.)
Neben eigenen Workstations gibt es auch noch reine "x-terminals", die parktisch keine eigenen Programme laufen haben, sondern nur als Anzeigefläche für einen zentralen Applikationsserver dienen. Damit solche Terminals direkt via X einloggen können, läuft auf den Servern ein Programm namens "xdm" (für "x display manager").
Die Netzwerktransparenz des X11 erlaubt es, dass man in grösseren Firmennetzen Programme nur einmal auf einem zentralen Server installieren muss, die dann Allen zur Verfügung stehen. Das spart wesentliche Wartungskosten.
* X bietet eine Trennung von Anzeigeoberfläche und Window-Manager. Der Window-Manager ist im Prinzip auch nur ein ganz normales Client-Programm. Der Window-Manager ist das Programm, das dir erlaubt, - die Fenster am Bildschirm herumzuschieben, - das den Fenstern oben einen Balken zeichnet - das dir 4 virtülle Bildschirme zur verfügungstellt,..etc..etc..
Die gebräuchlichsten Window-Manager sind:
icem - ein sehr guter und vorallem auch für Anfänger praktischer Window-Manager.
andere sind:
afterstep - dem look & feel von "nextstep" nachempfunden. Das ist der Window-Manager, den ich am Häufigsten verwende. Er ist - meiner Ansicht nach - recht hübsch, gut mit der Tastatur zu bedienen und hat einen guten "pager" (ein kleines Mini-Fenster in dem man seinen ganzen Desktop sieht..)
windowmaker - ähnlich wie afterstep
enlightenment - fällt eher unter "eye candy". Extrem gut gestylt, aber Funktion kommt meinen Erwartungen nicht entgegen
sawmill - ein neuer, moderner, relativ leistungsfähger Window-Manager.
fvwm, fvwm2 - sehr einfache speicherschonende Window-Manager..
fvwm95 - so wie fvwm2 nur im Windows95-Look.
twm, olwm - sehr spartanische, ältere Unix Window-Manager, dafür aber speichersparend und schnell....
kde - bringt einen eigenen Window-Manager (kwm) mit.
etc..etc..etc..
Bei den meisten Distributionen kannst du verschiedene Window-Manager wählen.
Bis jetzt haben wir eher von Vorteile gesprochen. Jetzt zu einem kleinen Nachteil von X gegenüber anderen grafischen Oberflächen:
* Das Programm X11 selbst, stellt nicht nur keinen Window-Manager zur Verfügung sondern auch keine Möglichkeiten für Dialog-Fenster, File Auswahl, etc, etc.. D.h. jedes X11 fähige Programm muss all diese Fähigkeiten aufs Neue selbst implementieren. Damit sehen diese Sachen natürlich bei jedem X-Programm anders aus und funktionieren auch etwas anders etc.. Das trägt
leider nicht gerade dazu bei, dem Anwender ein Gefühl einer konsistenten Benutzeroberfläche zu geben... ausserdem ist es für den Programmierer zeitaufwendig diese Sachen jedesmal selbst programmieren zu müssen.
Daher haben sich im Laufe der Zeit doch einige sogenannte "toolkits" herausgebildet. Hier die wichtigsten:
- athena widgets. Eine ziemlich alte und eher primitive Bibliothek. Stellt "flache" zweidimensionale Schaltflächen zur Verfügung. Beispiele dafür wären:
xman oder xcalc
- xview/openlook: z.B. der CD Player "workman"
- motif. Motif ist seiner Lizenz nach leider noch immer nicht wirklich frei. Es war ursprünglich als Konkurrenzprodukt kommerzieller Unix Firmen gegen Windows gedacht. Weil es nicht frei ist und auch hässlich - wie ich finde - wird es kaum noch für Open Source Projekte eingesetzt: Beispiel: netscape
- Tk (für toolkit) Beispiele: tkman, tkrat, tkxplanet, tkdiff, ..
Alle genannten "tool kits" stellen aber leider zuwenige Funktionen zur Verfügung.. Um Microsoft in Bezug auf eine konsistente Desktop-Oberfläche Konkurrenz bieten zu können (und das nach Möglichkeit mit Freier Software) wurde zuerst das KDE (für K-Desktop-Environment) und kurz daruf GTK/GNOME gegründet. Beide Projekte haben sich das Ziel gesetzt, eine konsistente Desktopumgebung zu schaffen.
- KDE basiert auf dem Qt (sprich: cu-te) Toolkit der norwegischen Firma Trolltech. Da Qt am Anfang nicht ganz frei war, gab es Kritik an dem
Projekt. Viele Leute waren (wie ich finde, zurecht) der Meinung, dass man als Eckstein einer freien Desktop Umgebung nicht ein Programm verwenden dürfe, das nicht wirklich frei ist. Man macht sicht damit sehr abhängig. KDE hat auch einen eigenen Window-Manager, den "kwm", aber KDE Programme laufen natürlich auch mit jedem anderen Window-Manager: siehe: www.kde.org. Inzwischen ist aber KDE auch schon frei und es spricht nichts gegen den Einsatz von KDE am Desktop (ausser dass es eventuell etwas ressourcenhungrig ist..)
Weil Qt am Anfang nicht frei war, wurde das GTK/GNOME Projet ins Leben gerufen.
- GTK ist das Toolkit und GNOME heisst die Desktop-Umgebung. Beispiele: abiword, gnumeric, dia, gimp, etc..etc..etc..
Ok. Nach soviel Hintergrundinformation noch ein paar praktische Übungen:
Wenn du
xterm &
eingibst, startest du ein neues "xterm". ("&" ist sinnvoll, weil du das Programm ja über die grafische Oberfläche bedienst und somit das Terminal wieder frei hast..)
Analog kannst du: xclock & oder xcalc & oder gimp & etc..etc..etc. starten.
Wenn du
echo $DISPLAY
eintippst, siehst du auf welchen Bildschirm die Anzeige gerade ausgegeben wird. Der erste X-Server auf deinem lokalen Computer hat den Namen :0.0 (DISPLAY ist eine Environmentvariable die von allen X-Programmen benutzt wird.)
Will man Anzeigen auf anderen Computern ausgeben, kann man z.B. schreiben:
export DISPLAY=mond.at:10.0
Das würde versuchen die Anzeige auf das Display Nummer 10, auf der mondbasis zu legen. Da du dazu vermutlich kein Recht hast und auf der "mondbasis" gar keine grafisch Oberfläche läuft, geht das natürlich nicht. Aber umgekehrt gehts. Wenn du z.b:
ssh -X irgendwo.at
machst, (-X schaltet X11 Weiterleitung ein) und dann dort:
xterm &
oder xbiff &
eingibst, startest du direkt Programme auf einem anderen Rechner, die ihre Anzeige zu dir umleiten (das ssh setzt dir die DISPLAY Variable freundlicherweise gleich richtig und ausserdem stopft es all die X-Netzwerk Übertragungen in einen verschlüsselten Tunnel..)
X-Programme über langsame Netzwerke, wie z.B ein städtisches Kabelnetz, funktionieren natürlich nicht besonders schnell. X ist eher für lokale Netzwerke gedacht. Es gibt aber Proxys die den X-Datenverkehr etwas komprimieren.
Zum Herumspielen mit X-Servern ist auch das Programm "Xnest" sehr praktisch. Wenn du z.B.:
Xnest :1.0 &
startetst, so bekommst du einen X-Server der in einem eigenen Fenster in deinem jetztigen X läuft und auf Addresse :1.0 erreichbar ist.
Du könnstest dorthin z.B. ein "xterm" hinlegen:
xterm -display :1.0 &
und dort drinnen dann einen eigenen Window-Manager starten...
Xnest :1.0 -query irgend.ein.server.auf.dem.xdm.läuft.at
würde einen X-Server starten der versucht ein Login-Fenster von einem anderen Computer zu bekommen.
EXERCISES:
* erkläre den Unterschied: X-client. X-server. Window-Manager.
* was versteht man unter einem "x-terminal" ?
* was sind die Vorteile der Netzwerktransparenz?
* versuche auf deinem X11-Desktop grafische X-Programme von anderen Computern anzuzeigen.
REFERENCES:
man X
|
|
| |
|
|
|