X Window System
The X Window System (commonly X11 or X) is a windowing system for computers with bitmap displays. It is standard on Unix, Linux and other Unix-like operating systems and is available for most other modern operating systems including those that have integrated windowing systems like Microsoft Windows or MacOS.
X provides basic underpinnings for a graphical user interface (GUI): drawing and moving windows on a screen and interacting with a mouse and a keyboard. As per its maxim of "mechanism, not policy," X does not specify or provide the user interface itself — this is handled by user software. As such, the visual interface of X-based environments is highly variable; several different interface styles may coexist on one computer.
X features network transparency: the machine where an application program runs (the application client) need not be the user's local machine (the display server). X's usage of the terms "client" and "server" is the reverse of what people often expect, in that the "server" is the user's local display rather than the remote machine.
X originated at MIT in 1984. The current version, X11, was released in 1987. The project is now led by the X.Org Foundation. The current release is version 11 release 6.6 (X11R6.6).
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).
This client-server terminology — your terminal is the "server", the remote application is the "client" — often confuses new X users, because the terms appear reversed. But X takes the perspective of the program, rather than the end-user or the hardware: the remote programs connect to the X server display running on the local machine, and thus act as clients; the local X display accepts incoming traffic, and thus acts as a server.
The communication protocol between server and client runs network-transparently: the client and server may run on the same machine or on different ones, possibly with different architectures and operating systems. For example, one could run a large computational simulation on a far-away Unix supercomputer (the "client") while displaying the user interface and results on the local desktop machine (the "server", which could be running Windows or any other operating system). Other possibilities include administering a remote machine using graphical software on that machine, using remote application software from thin client machines with little or no processing power or storage, and running graphical software on several machines at once via a single display.
X Display Managers
The X Display Manager keeps the X server process alive on the X server machine, connecting it to a physical screen and serving a login prompt on this screen. XDM serves as the default display manager for X, but other projects have developed their own display managers:
- XDM
- GDM (developed by GNOME)
- KDM (developed by KDE)
- wdm (using the WINGs widget set used in Window Maker)
- entrance (using the architecture used in Enlightenment v.17)
Services provided by X
The X server provides only the following. All else is provided by client programs.
- Input handling: Keyboard and mouse input are passed to clients as events via the window manager — which, as far as X is concerned, is just another client.
- Window services: Clients ask the server to create or destroy windows. Windows may be nested hierarchically. Clients can request information about windows.
- Text and fonts: Clients ask for text to be drawn at a given location in a given font. The client can request information on available fonts.
- Graphics: Clients ask the server to draw pixels, lines or shapes or perform bitmap operations.
X protocol interactions
There are four types of communication between X clients and the server:
- Request: The client requests an action or information.
- Reply: The server responds. Note that not all requests generate replies.
- Event: The server sends an event to the client, e.g. keyboard or mouse input, or a window being moved, resized or exposed.
- Error: The server sends an error packet if a request is invalid. Note that requests are queued, so an error packet may not be sent immediately.
Widget toolkits and desktop environments
X provides "mechanism, not policy." As such, it does not specify or provide the user interface features, such as buttons, menus, window title bars and so on. These are provided by user software, such as window managers, GUI widget toolkits and desktop environments.
Early GUI toolkits for X included:
OLIT and XView function as the base toolkits for AT&T and Sun's OPEN LOOK GUI.
Motif provides the base toolkit for the Common Desktop Environment (CDE), which is the standard desktop environment used on commercial Unix systems such as Solaris and HP-UX. (GNOME is offered in Solaris 9 and will be standard in future versions.)
Within the last five years, other toolkits have grabbed developer and user mind share. The modern toolkits include:
The KDE and GNOME desktop environments provide much better application functionality and services than is offered by plain window managers or older desktop environments.
Color modes of the X Window System
The colors used in X Window Systems sometimes confuse users, as old or special-purpose applications may require a certain color mode. Most modern applications use a color mode called "TrueColor", but historically X has supported several different modes:
- DirectColor
- GrayScale
- PseudoColor
- StaticColor
- StaticGray
- TrueColor
Implementations
X.Org distributes the X Window System at no charge, with source code included and no restrictions on modification or redistribution, under the MIT License.
Due to the liberal licensing, a number of implementations (both free and proprietary) have appeared, based on the code from MIT. Originally developed for the UNIX graphical workstations of the 1980s as part of MIT's Project Athena, these enhanced versions mainly added compatibility with specific operating systems and hardware.
Commercial Unix vendors tend to take the X.org reference implementation and adapt it for their hardware, usually customising it heavily and adding proprietary extensions. One implementation not tied to a hardware vendor is Accelerated-X.
The X variant most common on free Unix-like systems is XFree86. This originated from the X386 server included with the reference implementation, hence the name. Other open source X servers include the freedesktop.org Xserver project (led by Keith Packard, recently of XFree86) and the XOrg Foundation Open Source Public Implementation of X11 (a fork of XFree86) as used in Fedora Linux.
While Unix has standardized on X, X servers also exist for platforms with their own graphical environments, like Windows, Mac OS/MacOS X and OS/2. X servers used on Windows include Cygwin/X, Exceed, XVision, X-Win32 and WeirdX. Mac OS X 10.3 (Panther) release includes Apple's version of X11.
X terminals
An X terminal is a a piece of dedicated hardware running an X server as a thin client. This architecture became popular for building inexpensive client parks for many users to simultaneously use the same large server. This use very much aligns with the original intention of the MIT project.
X terminals explore the available hosts using an ad hoc network protocol called XDMCP to connect to a specific server which presents a list of available hosts. This server in turn may gather a list of available hosts using broadcast on the local network.
Dedicated X terminals are no longer common; this functionality is now typically provided either with a user's Microsoft Windows PC running an X server program or a low-end PC running Linux.
History
X derives its name as a successor to a pre-1983 window system called W (the letter X directly following W in the Latin alphabet).
The X Window System concept first emerged in 1984, at the Massachusetts Institute of Technology (MIT), as a joint project between their Laboratory for Computer Science and Digital Equipment Corporation. The initial impetus came from MIT's Project Athena, which sought to provide easy access to computing resources for all students. Because MIT could not buy all the workstations needed, and no single vendor appeared willing to donate them, the Institute needed a platform-independent graphics system to link together its heterogeneous systems.
The first version to achieve wide deployment was Version 10 (X10) in 1986. Version 11 (X11), the current version, was released in 1987.
In 1988, a non-profit group called the (MIT) X Consortium formed to direct future development of X standards in an atmosphere inclusive of commercial and educational interests. The X Consortium produced several significant revisions to X11, the last being Release 6 in 1994 (X11R6). The Consortium dissolved at the end of 1996, producing a final, small revision called X11R6.3.
Stewardship of X then passed to The Open Group, an outgrowth of the Open Software Foundation (OSF), who produced the popular Motif widget toolkit for X. In early 1998, the Open Group released a further revision to X11R6, called X11R6.4. A departure from the traditional licensing terms, however, inhibited many vendors, including the XFree86 Project, Inc., from adopting this version of the X Window System. As a result, the Open Group relicensed X11R6.4 under terms identical with the traditional license in late 1998.
In May 1999, stewardship of the X Window System passed from the Open Group to X.Org, a non-profit organization focused exclusively on maintenance and further development of the X Window System. X.Org supervised the release of versions X11R6.5.1 onward.
Nomenclature
"X Window System" is commonly shortened to "X11" or simply "X." The term "X Windows" (in the manner of "Microsoft Windows") is officially deprecated and generally considered incorrect, though it has been in common use since the inception of X and has been used deliberately for literary effect, e.g. in the UNIX-HATERS Handbook.
See also
External links
- X.Org Foundation (official home page)
- An Introduction to X11 User Interfaces
- Introduction to X Windows