Architecture
X is based on a client-server model.
A display server program runs on a computer with a graphical display and communicates with various client programs, accepting requests for graphical output (windows) and sending back user input (keyboard, mouse).
The communication protocol between server and client runs network-transparently: the client programs can run on the same machine as the server or equally well on other machines, possibly with different architectures and operating systems.
The client-server terminology often confuses new X users, because the terms appear differently from their usage in other common contexts.
In a typical X scenario, a user sits at an X terminal or workstation where he interacts with the keyboard and display, while the executing program may run on a more powerful computer located somewhere else.
Common terminology would refer to the workstation or terminal as a "client" and the other machine in the computer room as a "server". However, in X terminology it's reversed.
The X perspective takes the view of the program, not the end-user or the hardware. The remote programs connect to the X server display running on the local machine, and thus become X clients. Conversely, because the local X display accepts incoming traffic, it acts as a server.
Several different widget toolkits, window managers and desktop environments have developed to provide consistency and improved services for X applications. Early GUI toolkits for X included:
- Xaw (the Athena Widget Set)
- OLIT (OPEN LOOK Intrinsics Toolkit)
- XView
- Motif
- Tk
OLIT and XView function as the base toolkits for