Site hosted by Build your free website today!

Hands-on Projects for the Linux Graphics Subsystem

New book from Christos Karayiannis

Available in Amazon Kindle format at:

What is this site about

The text presented in the links that follow is about the inner mechanisms of the X Window system architecture. By this we mean an analysis of the X client and the X server source code routines and how they are related though a connection. The emphasis is on the server side. This site is not to be a X Window programming tutorial or an administrative tutorial about configuration files etc. However in any given chance we present hyperlinks of tutorials and manual pages that we consider as useful.

Why documenting the X Window source

X Window is the heart of each Unix graphics system. By utilizing the Imake the X code runs to Linux, FreeBSD, Minix, etc. Its popularity and the innovation that through its history presented made this open source program the best piece of code to illustrate how the graphics areimplemented behind the scene.

X Window System in a nutshell

The X Window System follows the client-server paradigm. An X client is the local or remote process that requests from an X server graphics handling at the display that the server controls. The messages that the client and the server exchange are defined by the X Protocol. Common APIs that encapsulate the X Protocol are the X Library (Xlib) or the Intrinsics (Xt), the Qt and the GTK+ that make use of Xlib.

Requirements for the client and the server

The requirements for the X server is the that the program is properly installed and configured. Two mainstream projects the XFree86 and the Xorg provide the X server source and binaries. The configuration file for the first is the XFree86Config and for the latter xorg.conf. For the X client that communicates with the server via Xlib the library should be installed in the system and the necessary Xlib C language header files should be included in the client's source.


There are currently two mainstream X WIndow Distributions, the Xorg and the XFree86. For the examples in this project we will use the X11R6.9 Xorg release at this code base.