The X Window System is a portable, multi-user graphical window system originally developed at MIT. "Portable" means that it can run on many types of host computers (including OpenVMS and a variety of Linux and UNIX hosts). "Multi-user" means that many users can have simultaneous access to X applications by connecting to the host over a network. As a window system, X allows users to run several applications at one time, each in its own window (similar to Microsoft Windows).
X applications (clients) provide the graphical user interface for many host-based environments — a few well-known environments are the GNOME Desktop Environment (GDE), the K Desktop Environment (KDE), and the Common Desktop Environment (CDE). X applications are also commonly developed for engineering, scientific, and manufacturing purposes.
The X Window System is based on a client/server model:
The X "client" is an application program that runs on a host computer.
The X display "server" is the intermediary software between the client application programs and the local display hardware and input devices (mouse and keyboard). The server tracks all input from these devices and conveys it to the relevant client applications.
The server also responds to client requests for output, and updates the display to reflect the output. In Reflection X Advantage the display and the X server have been decoupled.
This division in the X Window System architecture allows the clients and the display server to reside on different types of computers. The client applications reside on UNIX hosts while the server runs on the local computer. With Reflection X Advantage this can be a Windows or UNIX computer.
Because the X display server runs on a local computer, client/server terminology often seems reversed to people new to the X Window System. As a display server, the local computer provides the services of the local display, keyboard, and mouse to applications (clients) running on other computers.
Requests, Replies, Events, and Errors
The X server and X client applications communicate by the following means:
Requests from clients to the server.
Replies from the server to clients, in response to client requests.
Events to be delivered to any clients that have registered to receive events.
An event occurs when there is user input (the mouse is moved, or a key is pressed), or other information sent from the display server to the client application. After a client application receives a meaningful event, it may respond with more requests to the server for some sort of action affecting the display.
Errors to be delivered to clients when a request fails, or is invalid.