1 Introduction

X was designed to support “graphical user interfaces” (GUIs) and there are two properties of X that make an X window fundamentally different from a traditional graphics device. Firstly, windows “belong” to applications programs and are deleted when the application exits unlike the picture on an image display which remains there until replaced by something else.

Secondly, applications programs are expected respond to “events” occurring in their windows; things like key presses, mouse movements, etc. One event type that all applications must handle is the “window expose” event which occurs whenever part of a window that was invisible—because another application’s window was obscuring it for example—becomes visible. The application is responsible for restoring the contents of the newly exposed part of the window but only an application designed as an X application can do this; an application that is using X via a graphics package such as GKS (SUN/83) or IDI (SUN/65) but is otherwise a conventional application that knows nothing of X, cannot.

The X graphics window manager (not to be confused with the Window Manager which allows you to move windows around the screen, iconize them etc.) makes a window on an X windows display behave like a traditional graphics device by making the lifetime of the window independent of any applications program and by handling window expose events. Applications still send plotting commands directly to the window; they don’t have to go via a “server” process, so there is no adverse impact on performance. All communication between the window manager and the application is via the X server and the graphics window manager does not have to run on the same machine as the application. Indeed the manager and applications can even be running on different operating systems.