X-Window-System
Total Page:16
File Type:pdf, Size:1020Kb
-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 <stdio.h> #include <unistd.h> #include <X11/Xlib.h> int main(int argc, char *argv[]){ Display *dpy; Window win; 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.