X Window System
From GTALUG
X Window System
The X Window System is a graphical system intended to render windows (surprise!) and other graphical things on a computer display. It is the typical graphics system used on Unix systems and thus on Linux. It has also been used on other operating systems including VMS, Microsoft Windows, and IBM's OS/390.
Most graphical applications that run on Linux expect to run atop X.
One of the somewhat unique things about X is that it allows applications to be run remotely, that is, you may have an application running on one host (that may not even have any display connected to it) and displaying graphics via a network connection to another host where an "X server" is running. This is how LTSP works; in that system, applications run on one fairly powerful computer, and display output across the network on another (likely much less powerful) computer that may have little more connected to it than a graphics card and monitor.
The representation of "client" and "server" appears a little bit backwards from most client/server systems. Usually, people expect the "local" programs to be called a "client," and for the "server" to be something off in the back room. Which nicely represents the way database applications usually work, with many "clients" connecting to a central database "server."
X reverses these roles, which, as the locations of the hosts are reversed, is quite appropriate:
- An X server is a program that manages a video system (and possibly other "interactive" I/O devices such as mice, keyboards, and some more unusual devices).
The X server thus typically runs on a user's desktop, typically a relatively non-powerful host that would commonly be termed a "client system." It is, in this context, nonetheless acting as a server as it provides graphics services.
- On the other hand, an X client is typically an application program which must connect to an X Server in order to display things.
The client will often run on another host, often a powerful Unix box that would commonly be known as a "server."
The X client might itself also be a "server process" from some other point of view; there is no contradiction here. (Although calling it such may be unwise as it will naturally result in further confusion.)
X nomenclature treats anything that provides display services as an X server. Which is not particularly different from someone saying that a program that provides database services is a database server. Or that a "transaction processor" is a "transaction server."
One unique and somewhat controversial thing about X is that it does not, a priori, define policies such as how windows are to be decorated. That is left to be shared by other components. The first such component is the window manager, which is a special X client that is given the responsibility of managing everything around the outsides of windows. There are many window managers with widely varying policies and styles. Responsibility for everything inside an X client's window is, not surprisingly, given to that client. An interesting result (which is controversial!) is that if there are multiple applications with multiple UI styles, you may have multiple very different user interfaces active concurrently on the same screen. There is likely to be something confusing about this...
- X.org is the home of the project building the X servers commonly included in Linux distributions.
- XFree86.org is the home of the "X branch" that used to be commonly used.
- XGL - this is a recent approach to X which tries to take advantage of the high speed 3D OpenGL rendering supported by some recent graphics cards/drivers.

