ABSTRACT: die grundlagen des X-window systems werden erklaert AUDIENCE: beginners SYSTEM: any unix SECTION: basic unix commands AUTHOR: mond COPYRIGHT: GNU Free Documentation Licence http://www.gnu.org/licenses/fdl.txt jetzt haben wir schon realtiv lange nur command line befehle gemacht. heute wollen wir uns mal der grafischen oberflaeche widmen. die grafsiche oberflaeche von unix heisst X11 oder auch "X-Window System" oder auch oft "x-windows" genannt oder blos X genannt. X ist schon etwa 15 bis 20 jahre alt also aelter als microsoft windows oder die apple oberflaeche. X hat dennoch gegenueber diesen systemen einige vorteile: * X ist und war vollkommen und von anfang an netzwerktransparent. netzwerktransparent heisst dass ein programm auf computer A laufen kann und seine anzeige aber auf computer B ausgiebt. oder umgekehrt. der teil der die X anzeigeoberflaeche zur verfuegung gestellt wird 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 laueft ueblicherweise der X server und X clients am selben computer was auch geht. aber wie gesagt: nicht notwendig ist. du kannst sowohl auf deinem laptop programme anzeigen die auf anderen computern laufen als auch umgekehrt programme laufen lassen die ihre anzeige woanders haben. (bei text orientierten programmen die in einem einfachten telnet oder ssh laufen geht das natuerlich ohnehin immer ohne probleme.. aber mit X11 gilt das auch fuer grafische programme.. also z.b. xdvi, xterm, gimp, netscape, ... ) der X server der ueblicheweise im linux verwendet wird ist der freie "XFree86" X-server. es gibt aber auch komerzielle X server. es gibt sogar X server fuer m$-windows damit kann man unix programme via netz auf windows anzeigen. (z.b.: eXceed - ist aber sehr teuer.. MI/X ist gratis aber nicht frei aber nicht besonders gut. auf win2000 laeuft angeblich aber schon eine version des XFree86) neben eigenen workstations gibt es auch noch reine "x-terminals" die parktisch keine eigenen programme laufen haben sondern nur als anzeigeflaeche fuer einen zentralen applikationsserver dienen. damit solche terminals direkt via X einloggen koennen laeuft auf den servern ein programm namens "xdm" (fuer "x display manager"). die netzwerktransparenz des X11 erlaubt es daher dass man in groesseren firmen netzen programme nur einmal auf zentralen servern installieren muss und die stehen allen usern zur verfuegung. das spart wesentlich wartungskosten. * X bietet trennung von anzeigeoberflaeche und windowmanager. 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 programm das dir 4 virtuelle bildschirme zur verfuegungstellt..etc..etc.. die gebraeuchlichsten windowmanager sind: icem - ein sehr guter und vorallem auch fuer angaenger praktischer window manager. andere sind: afterstep - dem look & feel von nextstep nachempfunden. das ist der window manager den ich am oeftersten verwende. recht huebsch. gut mit der tastatur zu bedienen und hat einen guten "pager" (ein kleines mini fenster in dem man seinene ganzen desktop sieht..) windowmaker - aehnlich wie afterstep enlightenment - faellt eher unter "eye candy". extrem gut gestylt aber funktion ist noch nicht ganz da.. wird aber schoen langsam. sawmill - ein neuere moderner relativ leistungsfaehger windowmanager. fvwm, fvwm2 sehr einfache speicherschonende window manager.. fvwm95 so wie fvwm2 nur im windows95 look. twm, olwm sehr spartanische aeltere unix window manager dafuer aber speichersparend und schnell.... kde bringt einen eigenen windowmanager (kwm) mit. etc..etc..etc.. bei den meisten distributionen kannst du verschiedene windowmanager wechseln. bis jetzt hatten wir eher vorteile. jetzt zu einem kleinen nachteil von X gegenueber anderen grafischen oberflaechen: * das X11 selbst stellt nicht nur keinen window manager zur verfuegung sondern auch keine moeglichkeiten fuer dialog fenster, file auswahl, etc, etc.. d.h. jedes X11 faehige programm muss all diese faehigkeiten aufs neue selbst implementieren. damit sehen diese sachen natuerlich bei jedem X programm anders aus und funktionieren etwas anders etc.. das traegt leider nicht gerade dazu bei dem anwender ein gefuehl einer konsistenten benutzeroberflaeche zu geben... ausserdem ist es fuer den programmierer zeitaufwendig diese sachen jedes mal selbst programmieren zu muessen. 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" 2 dimensionale schlaftflaechen zur verfugung. beispiele dafuer waeren: xman oder xcalc - xview/openlook: z.b. der CD player "workman" - motif. motif ist leider noch immer nicht wirklich frei und war lange zeit nur hochkomerziell. war urspruenglich als gegenschlag komerzieller unix firmen gegen windows gedacht. weil es nicht frei ist und auch extrem haesslich wie ich finde wird es kaum noch fuer open source projekte eingesetzt: beispiel: netscape - Tk (fuer toolkit) beispiele: tkman, tkrat, tkxplanet, tkdiff, .. alle die obigen "took kits" stellen aber leider viel zuwenig funktionen zur verfuegung.. um microsoft wirklich im bezug auf eine konsistente desktop oberflaeche paroli bieten zu koennen und das nach moeglichkeit mit freier software wurde zuerst das KDE (fuer K desktop environment) und kurz daruf GTK/GNOME gegruendet. beide projekte haben sich das ziel gesetzt eine konsistente dekstopumgebung 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 duerfe dass nicht wirklich frei ist.. man macht sicht damit sehr abhaengig.. KDE hat auch einen eigenen window manager den "kwm" aber KDE programme laufen natuerlich 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 resourcenhungrig 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 theorie noch ein paar praktische uebungen: zuerst: wenn du xterm & machst startest du ein neues xterm. (der & ist sinnvoll weil du das programm ja eh ueber die grafische oberflaeche bedinest damit hast du dann das terminal wieder frei..) analog kannst du: xclock & oder xcalc & oder gimp & etc..etc..etc. starten. 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 andere computer machen kann man z.b. schreiben: export DISPLAY=mond.at:10.0 das wuerde 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 oeber flaeche laeuft geht das natuerlich nicht. aber umgekehrt gehts. wenn du z.b: ssh -X irgendwo.at machst (-X schaltet X11 weiterleitung ein) und dann dort: xterm & oder xbiff & machst startest du direkt programme auf einem anderen rechner die ihre anzeige zu dir umleiten (das ssh setzt dir die DISPLAY variable freundlicherweise gleich richtung und ausserdem stopft es all die X netzwerk uebertragungen in einen verschluesselten tunnel..) X programme ueber langsame netzerwerke wie telekabel geht natuerlich nicht besonders schnell. X ist eher fuer lokale netzwerke gedacht. es gibt aber proxys die den X datenverkehr etwas komprimieren. zum herumspielen mit X servern ist auch das programm Xnest oft sehr praktisch. wenn du z.b.: Xnest :1.0 & startetst so bekommst du einen Xserver der in einem eigenen fenster in deinem jetztigen X laueft und auf addresse :1.0 erreichbar ist. du koennstest dorthin z.b. ein xterm hinlegen: xterm -display :1.0 & und dort drinnen dann einen eigenen windowmanager starten... Xnest :1.0 -query irgend.ein.server.auf.dem.xdm.laeuft.at wuerde einen Xserver starten der versucht ein login fenster von einem anderen computer zu bekommen. EXERCISES: * erklaere den uneterschied: X-client. X-server. windowmanager. * 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 "A strategic comparison of Windows vs. Unix": http://www.linuxworld.com/site-stories/2001/1018.tco.html