-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 ➢ 4. Toolkits ➢ 5. X-Display Manager ➢ 6. X- ➢ 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 #include #include 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 , 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 - , tvtwm - Tab Window Manager ➢ Olwm - Open Look Window Manager ➢ - 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 (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