X Windows Vortrag

aktueller Entwurf

* im odp Format

ehemaliger Entwurf

Vorschlag von Bernd vom 30.9.2010


GESCHICHTLICHE GRUNDLAGE und ENTWICKLUNG


GESCHICHTLICHE GRUNDLAGE

Idee

img0.jpg

/!\ X11 Standard spezifiziert nur das Protokoll keine API

Anwendungsfall (Beispiel)

img1.jpg

Kommunikation Client - Server

/!\ X11 Architektur sieht nur Kommunikation Client - Server vor
Kommunikation Client - Client nur über den Server

img2.jpg

X11 Protokoll

img3.jpg

-> RESOURCENVERWALTUNG - SERVERSEITIG


KOMMUNIKATION: WINDOWMANAGER-CLIENT / CLIENT-CLIENT



TECHNISCHE UMSETZUNG UNTER GNU/LINUX



Quellen

Bücher

X Window System

Toolkit Anbindung

Zum selbst Experimentieren dürfte es auch interessant sein, wie sich X11 unter Verwendung gängiger Toolkits nutzen lässt.

   1 #include <gtk/gtk.h>
   2 
   3 #include <gdk/gdkx.h>
   4 #include <X11/X.h>
   5 
   6 
   7 Display *dpy;
   8   
   9 gboolean expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
  10 {
  11   GdkWindow *gdk_window;
  12   Window xid;
  13 
  14   Window root;
  15   int x, y;
  16   unsigned int width, height, border_width, depth;
  17   
  18   g_object_get (widget, "window", &gdk_window, NULL);
  19   xid = GDK_WINDOW_XID (gdk_window);
  20 
  21   XGetGeometry (dpy, xid, &root, &x, &y, &width, &height, &border_width, &depth);
  22   XClearArea (dpy, xid, 0, 0, width, height, False);
  23 
  24   XRectangle rectangles[] = {
  25     width/4, height/4,
  26     width/2, height/2
  27   };
  28   
  29   XDrawRectangles (dpy, xid, DefaultGC (dpy, 0), rectangles, 1);
  30   
  31   return TRUE;
  32 }
  33 
  34 int main (int argc, char *argv[])
  35 {
  36   GtkWidget *window;
  37 
  38   dpy = XOpenDisplay (NULL);
  39   
  40   gtk_init (&argc, &argv);
  41 
  42   window = g_object_new (GTK_TYPE_WINDOW,
  43                          "title", "Titel",
  44                          "double-buffered", FALSE,
  45                          NULL);
  46   g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
  47   g_signal_connect (window, "expose-event", G_CALLBACK (expose), NULL);
  48   
  49   gtk_widget_show_all (window);
  50   gtk_main ();
  51   return 0;
  52 }

lugfrankfurt: Projekte/XWindowsVortrag (zuletzt geändert am 2011-05-28 17:30:36 durch Bernd)