-WINDOW
SystemprogrammierungSystemprogrammierung SS08SS08
Ahlam BEJJATI E- Mail: [email protected] Mustafa KADI E- Mail: [email protected]
03.06.08 -WINDOW GliederungGliederung ➢ 1. Einleitung ➢ 2. Geschichte ➢ 3. Einführung in Xlib ➢ 4. Toolkits ➢ 5. X-Display Manager ➢ 6. X-Window Manager ➢ 7. Client-Server Prinzip ➢ 8. Vor- und Nachteile ➢ 9. Live-Demo mit X-Win32 -WINDOW 1.1. EinleitungEinleitung Was ist das X-Window-System? ➢ System mit dem Grafische Benutzeroberflächen für Unixsysteme entwikelt werden können ➢ Wichtigste Komponenten X-Server X-Client X-Protokoll Xlib-Routinen
03.06.08 -WINDOW
➢ Netzwerktransparenz
➢ Client-Server-System
➢ Portierbarkeit
03.06.08 -WINDOW 2.2. GeschichteGeschichte
➢ Entwicklung begann 1984 am MIT(Projekt Athena) ➢ Die Sponsoren des Projektes waren IBM, MIT und die DEC (Digital EquipmentCorporation)
03.06.08 -WINDOW
➢ 1985 erschien die 10. Version. Diese wurde gegen eine geringe Gebühr vertrieben. ➢ 1987 Entwicklung der 11. Version die dann als Standard eingeführt wurde. Gründung des X- Konsortiums ➢ 1994 hat die Open Group die Entwicklung übernommen
03.06.08 -WINDOW
Programmierung mit der Xlib
➢ Bibliothek die die Routinen beinhaltet, die zur Entwicklung einer Anwendung für X benötigt werden. ➢ C wird in der Regel als Programmiersprache verwendet ➢ Die Xlib besitzt eine niedrige Funktionalität
03.06.08 -WINDOW
Im wesentlichen dient die Xlib: ➢ Der Erzeugung von Fenstern ➢ Dem Zeichnen einfacher Objekte ➢ Dem Übertragen von Maus- und Tastaturereignissen vom server an den Client
03.06.08 -WINDOW Xlib-Xlib- FunktionenFunktionen ➢ XopenDisplay() ➢ XcreateSimpleWindow() ➢ XmapWindow() ➢ Xflush() ➢ XcloseDisplay()
03.06.08 #include
if ((dpy = XOpenDisplay(NULL)) == NULL){ printf("Unable to open display\n"); return 1; } win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, \ 400, 300, BlackPixel(dpy, DefaultScreen(dpy)), 0, WhitePixel(dpy, DefaultScreen(dpy))); XMapWindow(dpy, win); Xflush(dpy); return 0; }
03.06.08 file:///E:/7.Semester/Systemprogrammierung/Projekt/Präsentation/tux.png
file:///E:/7.Semester/Systemprogrammierung/Projekt/Präsentation/180px-X11.svg.png -WINDOW
03.06.08 -WINDOW
Xlib Events
➢ Ein Event ist eine Nachricht vom Server an den Client bei der dieser über ein bestimmtes Ereignis informiert wird ➢ Events können u.a Betätigen der Maus oder Tastatur sein ➢ Eventschleifen spielen hierbei eine wichtige
03.06.08 Rolle -WINDOW
Eventschleife static void eventschleife(void){ XEvent event; int anzahl_event; anzahl_events = XPending (display); while ((anzahl_events > 0){ anzahl_events-- XNextEvent (display, &event); } } 03.06.08 -WINDOW
Xlib Grafik
➢ Die Xlib stellt Zeichenfunktionen zur Verfügung mit denen Objekte wie punkte, Linien oder Kreise gezeichnet werden können
03.06.08 -WINDOW
➢ XdrawPoint() ➢ XdrawLine()
➢ XdrawArc() ➢ XdrawRectangle()
03.06.08 -WINDOW
Über 200 Zeilen Code
03.06.08 -WINDOW
Toolkits
➢ Toolkits sind GUI-Bibliotheken ➢ Entwicklung von Grafischen Oberfläche auf einer höheren Ebene als der Xlib ➢ Die meistverwendetsten Toolkits unter X- Window sind Motif,Qt und GTK
03.06.08 -WINDOW
QT-Bibliothek
➢ C++ wird hauptsächlich als Programmiersprache verwendet ➢ Qt enthält Klassen für alle wichtigen grafischen Eingabeelemente und Klassen für den Zugriff auf angeschlossene Hardware ➢ Qt diente als Grundlage für die Entwicklung von KDE
03.06.08 -WINDOW
KDE-Applikation
KDE-Bibliothek
QT-Bibliothek
Xlib-Bibliothek
X-Server 03.06.08 -WINDOW
GTK
➢ GTK wurde in C geschrieben ➢ Anwendungen können in C entwickelt werden oder auch ➢ GTK diente u.a. als Vorlage für die Entwicklung von GNOME
03.06.08 -WINDOW 5.5. X-DisplayX-Display ManagerManager
➢ optionale Komponente des X-Window Systems ➢ verwaltet Sitzungen
03.06.08 -WINDOW
➢ grafische Anmeldemaske wird zur Verfügung gestellt
03.06.08 -WINDOW
➢ Einstellung des zu verwendenden Desktop- Environments ➢ Alternative zum XDM => KDM , GDM, WDM
03.06.08 -WINDOW 6.6. X-WindowX-Window ManagerManager
➢ ist ein gewöhnlicher Clientprozess ➢ Kontakt zu X-Servern sowie zu allen anderen Clientanwendungen auch
03.06.08 -WINDOW
➢ Funktion von X auch theoretisch ohne Window Manager ➢ der Window-Manager ist für das typische Look & Feel verantwortlich
03.06.08 -WINDOW
➢ optische Konfiguration über Startupfile (z.B. KDE, GNOME ...)
03.06.08 -WINDOW
Zudem gibt es eine Reihe verschiedener Window Manager: ➢ Mwm - Motif Window Manager ➢ Twm, tvtwm - Tab Window Manager ➢ Olwm - Open Look Window Manager ➢ 4Dwm - IRIS Extended mwm ➢ Gwm,vuewm - sonstige
03.06.08 -WINDOW
➢ Window Manager => einzeln in Aktion ➢ Alten Window Manager abschiessen, neuen starten ➢ UNIX-Kommando kill oder Befehl zap z.B. zap mwm
03.06.08 -WINDOW
Ein Fenster zu erstellen, ist im Prinzip recht einfach und lässt sich mit folgenden Schritten realisieren:
1. Eine Verbindung zum X-Server herstellen 2. Die Umgebung überprüfen 3. Das Fenster erzeugen 4. Das Fenster anzeigen 5. Das Fenster schließen und wieder freigeben
03.06.08 -WINDOW 7.7. Client-ServerClient-Server PrinzipPrinzip
➢ das X-Protokoll definiert eine Client-Server- Beziehung zwischen der Anwendung und seiner Darstellung ➢ der Server kümmert sich um die Darstellung ➢ der Client kümmert sich um das Dargestellte
03.06.08 -WINDOW
➢ X-Window System => Unterteilung des X- Servers in geräteabhängigen bzw geräteunabhängigen Teil ➢ Verdeckung des hardwerspezifischen Details und Besonderheiten des Betriebssytems
03.06.08 -WINDOW
➢ physische Kontrolle Bildschirm, Tastatur, Maus => X-Server ➢ Kommunikation Client-Server => X-Protokoll ➢ TCP/IP und DECnet
03.06.08 -WINDOW
Client-Server Beispiel
03.06.08 -WINDOW
Funktionsweise des X-Servers
03.06.08 -WINDOW
Funktionsweise des X-Clients
03.06.08 -WINDOW
Das X-Protokoll unterscheidet drei Arten von Nachrichten, die der Server an einen Client übermitteln kann: ➢ Reply
03.06.08 -WINDOW
➢ Event
03.06.08 -WINDOW
➢ Error
03.06.08 -WINDOW 8.8. Vor-Vor- undund NachteileNachteile
➢ X-System Konzept von Anfang an für den effizienten Netzwerkbetrieb ➢ Kommunikation über standardisiertem Protokoll
03.06.08 -WINDOW
➢ Quellcode ist zwar objektorientiert aber dennoch in C geschrieben ➢ X-System ist im Vergleich zu aktuellen MS- Versionen kein Betriebssystem
03.06.08 -WINDOW
Folgendes ist durch den hierarchischen Aufbau des X-Systems möglich:
➢ Mehrere Bildschirm-Arbeitsplätze an einem X-Server ➢ X-Server kann in einem anderen X-Server laufen gelassen werden ➢ Hard- und Softwareunabhängige Bedienung
03.06.08 -WINDOW
➢ Start von X-Anwendung => langsam ➢ reduzierter Datentransfer ➢ resourceaufwändiger X-Server -WINDOW 9.9. Live-DemoLive-Demo X-Win32X-Win32
➢ Leistungsstarker X-Server für die Windows- Plattform ➢ Zugriff auf unix-basierte Anwendungen sowie für x-server basierte Windows-Programme ➢ 30-tägige Demoversion
03.06.08 -WINDOW
➢ Nach der Installation X-Config aufrufen
03.06.08 -WINDOW
➢ X-Win32-Sitzungassistent starten und XDMCP (X display manager control protocol) wählen
03.06.08 -WINDOW
➢ Broadcast als Verbindungsmethode
03.06.08 -WINDOW
➢ X-WINDOW starten
03.06.08 -WINDOW
➢ Ergebnis aus dem Broadcast-Scan
03.06.08 -WINDOW
➢ Erlaubnis zum Verbindungsaufbau
03.06.08 -WINDOW
➢ Remote-Desktopverbindung X-Server
03.06.08 -WINDOW
Quellen:
http://www.openbsd.org/faq/de/faq11.html http://www.freebsd.org/doc/de/books/handbook/x11.html http://unix-docu.uibk.ac.at/zid/software/unix/x/x11.html http://wwwcip.informatik.uni-erlangen.de/old/tree/CIP/Manuals/xwin/ http://ara.informatik.tu-freiberg.de/vorlesungen/MurX/ http://gd.tuwien.ac.at/opsys/linux/tut/LinuxFibel/xcliserv.htm http://de.wikipedia.org/wiki/X_Window_System http://www.pronix.de www.eggdrop.ch/texts/xlib/ X Window Systemprogramming (Naba Barkalati) Das Benutzerhandbuch zum X Window System (Niall Mansfield) Einführung in das X Window System (Oliver Jones) Linux-Unix-Programmierung (Jürgen Wolf)
03.06.08 -WINDOW
VielenVielen DankDank fürfür diedie Aufmerksamkeit!Aufmerksamkeit!
03.06.08