X Window System protocols and architecture
Encyclopedia
In computing
, the X Window System
(commonly: X11, or X) is a network-transparent
windowing system
for bitmap
displays. This article details the protocols and technical structure of X11.
In X, the server runs on the user's computer, while the clients may run on different machines. This reverses the common configuration of client–server systems, where the client runs on the user's computer and the server runs on a remote computer. This reversal often confuses new X users. The X Window terminology takes the perspective of the program, rather than of the end-user or of 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 system
s. A client and server can communicate secure
ly over the Internet
by tunneling
the connection over an encrypted connection.
and Jim Gettys
set out the early principles of X as follows (as listed in Scheifler/Gettys 1996):
The first principle was modified during the design of X11 to: Do not add new functionality unless you know of some real application that will require it.
X has largely kept to these principles since. The X.Org Foundation
develops the reference implementation
with a view to extension and improvement of the implementation, whilst keeping it almost entirely compatible with the original 1987 protocol.
. The client establishes the connection, sending the first packet. The server answers by sending back a packet stating the acceptance or refusal of the connection, or with a request for a further authentication. If the connection is accepted, the acceptance packet contains data for the client to use in the subsequent interaction with the server.
After connection is established, the client and the server exchange four different types of packets over the channel:
The X server provides a set of basic services. The client programs realize more complex functionalities by interacting with the server.
s usually call a window is a top-level window in the X Window System. The term window is also used for windows that lie within another window, that is, the subwindows of a parent window. Graphical elements such as buttons, menus, icons, etc. are all realized using windows.
A window can only be created as a subwindow of a parent window. This causes the windows to be arranged hierarchically
in a tree
. The X server automatically creates the root of the tree, called the root window
. The top-level windows are exactly the direct subwindows of the root window. Visibly, the root window is as large as the screen, and lies behind all other windows.
Identifiers are unique to the server, not only to the client; for example, no two windows have the same identifier, even if created by two different clients. A client can access any object given its identifier, even if another client created the object.
A property is characterized by a name, a type, and a value. Properties resemble variables
in imperative programming languages, in that the application can create a new property with a given name and of a given type and store a value in it. Properties are associated to windows: two properties with the same name can exist on two different windows while having different types and values.
Properties are mostly used for inter-client communication. For example, the property named
The
(parameters of programs).
The content of a window may be "destroyed" in some conditions (for example, if the window is covered). Whenever an area of destroyed content is made visible, the server generates an
Other events can serve to notify clients of keyboard or mouse input, of the creation of new windows, etc.
Some kinds of events are always sent to a client, but most kinds of event are sent only if the client previously stated an interest in them, because clients may only be interested in some kind of events. For example, a client may be interested in keyboard-related event but not in mouse-related events.
The X11 protocol actually uses a single 32-bit unsigned integer - called a pixelvalue - for representing a single color in most graphic operations. When transferring the intensity of primary color
s, a 16 bit integer is used for each colour component. The following representations of colors exist; not all of them may be supported on a specific device.
client library. Beside Xlib, the XCB
library operates more closely to X protocol. In particular, most clients use libraries such as Xaw
, Motif
, GTK+
, or Qt
which in turn use Xlib
for interacting with the server.
The Inter-Client Communication Conventions Manual
specifies the protocol for the exchange of data via selections and the interaction of applications with the window manager. Some have considered this specification difficult and confusing; consistency of application look and feel
and communication is typically addressed by programming to a given desktop environment.
The Inter-Client Exchange protocol (ICE) specifies a framework for building protocols for interaction between clients, so that programmers can build a specific protocol on top of it. In particular, the X Session Management protocol (XSMP) is a protocol based on ICE that governs the interaction between applications with the session manager
, which is the program that takes care of storing the status of the desktop at the end of an interactive session and recovering it when another session with the same user is started again.
The freedesktop specifications include newer conventions, including the drag-and-drop convention Xdnd (used for transferring data by selecting it and dragging in another window) and the embedded application convention Xembed (which details how an application can run in a subwindow of another application).
Since two different applications may handle the two windows, data transfer requires different clients connected with the same X server to interact. The X Window core protocol includes some types of requests and events that are specific to selection exchange, but the transfer is mainly done using the general client-to-client event sending and window properties, which are not specific to selection transfer.
Users can transfer data of different types between clients: it is usually text, but can also be a pixmap, a number, a list of objects, etc.
Selections and drag-and-drop are active mechanisms: after the user selects data in a window, the client handling the window must actively support a protocol for transferring that data to the application requesting it. Cut buffers, by contrast, provide a passive mechanism: when the user selects some text, its content is transferred to a cut buffer, where it remains even if the application handling the window terminates and the window is destroyed.
. Differences in the look of X Window System in different installations stem mainly from the use of different window managers or from different configurations of the window manager.
The window manager takes care of deciding the position of windows, placing the decorative border around them, handling icons, handling mouse clicks outside windows (on the “background”), handling certain keystrokes, etc.
From the point of view of the X server, the window manager operates as a client just like any other client. The initial position and the decorative borders around windows are handled by the window manager using the following requests:
The window manager uses the first request to intercept any request for mapping top-level windows (children of the root window). Whenever another application requests the mapping of a top-level window, the server does not do it but sends an event to the window manager instead. Most window managers reparent
the window: they create a larger top-level window (called the frame window) and reparent the original window as a child of it. Graphically, this corresponds to placing the original window inside the frame window. The space of the frame window that is not taken by the original window is used for the decorative frame around the window (the “border” and the “title bar”).
The window manager manages mouse clicks in the frame window. This allows, for example, a user to move or resize the window by clicking and dragging on the border or on the title bar.
The window manager also handles icons and related visual elements of the graphical user interface. Icons do not exist at the level of the X Window core protocol. They are implemented by the window manager. For example, whenever a window has to be “iconified”, the FVWM
window manager unmaps the window, and creates a window for the icon name and possibly another window for the icon image. The meaning and handling of icons is therefore completely decided by the window manager: some window managers such as wm2
do not implement icons at all.
is the “state of the desktop” at a given time: a set of windows with their current content. More precisely, it is the set of applications managing these windows and the information that allow these applications to restore the condition of their managed windows if required. A program known as the X session manager saves and restores the state of sessions.
Most recognizably, using a session manager permits a user to log out from an interactive session but to find exactly the same windows in the same state when logging in again. For this to work, the session manager program stores the names of the running applications at logout and starts them again at login. In order for the state of the applications to be restored as well (which is needed to restore the content of windows), the applications must be able to save their state of execution upon request from the session manager and load it back when they start again.
The X Window System includes a default session manager called
.
server: an X server can connect to the display manager, which starts a session; the programs of this session run on the same computer of the display manager but have input and output on the computer where the X server runs (which may be the computer in front of the user or a remote one).
The X Window System ships with XDM as the basic supplied display manager. Other display managers include GDM
(GNOME
), KDM (KDE
), WDM
(using the WINGs widget set used in Window Maker
) and entrance
(using the architecture used in Enlightenment
v.17).
s for X included Xaw
(the Athena
Widget Set, 1983), OLIT
(OPEN LOOK
Intrinsics Toolkit, 1988), XView
(1988), Motif
(1980s) and Tk. OLIT and XView function as the base toolkits for Sun
's legacy OpenWindows
desktop environment.
Motif provides the base toolkit for the Common Desktop Environment
(CDE), the desktop environment used on commercial Unix
systems such as Solaris, AIX and HP-UX
. (Solaris 10 includes both CDE and GNOME
, with the latter the preferred desktop environment .)
Toolkits developed more recently include Qt
(1991- , used by KDE
), GTK+
(1997- , used by GNOME), wxWidgets
(1992- ), FLTK
(1998- ), FOX
(1997- ) and fpGUI
(2005-current).
At the protocol level, every extension can be assigned new request/event/error packet types. Extension features are accessed by client applications through extension libraries. Adding extensions to current X server implementations is reportedly difficult due to a lack of modularity in the server design. It is a long term goal of the XCB
project to automate generating both the client and server sides of extensions from XML protocol descriptions.
The following table provides a partial catalog of extensions that have been developed, sorted roughly by recency of introduction:
Computing
Computing is usually defined as the activity of using and improving computer hardware and software. It is the computer-specific part of information technology...
, the X Window System
X Window System
The X window system is a computer software system and network protocol that provides a basis for graphical user interfaces and rich input device capability for networked computers...
(commonly: X11, or X) is a network-transparent
Network transparency
Network transparency in its most general sense refers to the ability of a protocol to transmit data over the network in a manner which is transparent to those using the applications that are using the protocol....
windowing system
Windowing system
A windowing system is a component of a graphical user interface , and more specifically of a desktop environment, which supports the implementation of window managers, and provides basic support for graphics hardware, pointing devices such as mice, and keyboards...
for bitmap
Raster graphics
In computer graphics, a raster graphics image, or bitmap, is a data structure representing a generally rectangular grid of pixels, or points of color, viewable via a monitor, paper, or other display medium...
displays. This article details the protocols and technical structure of X11.
Client–server model and network transparency
X uses a client–server model. An X server program runs on a computer with a graphical display and communicates with various client programs. The X server acts as a go-between for the user and the client programs, accepting requests for graphical output (windows) from the client programs and displaying them to the user, and receiving user input (keyboard, mouse) and transmitting it to the client programs.In X, the server runs on the user's computer, while the clients may run on different machines. This reverses the common configuration of client–server systems, where the client runs on the user's computer and the server runs on a remote computer. This reversal often confuses new X users. The X Window terminology takes the perspective of the program, rather than of the end-user or of 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
Network transparency
Network transparency in its most general sense refers to the ability of a protocol to transmit data over the network in a manner which is transparent to those using the applications that are using the protocol....
: the client and server may run on the same machine or on different ones, possibly with different architectures
Computer architecture
In computer science and engineering, computer architecture is the practical art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals and the formal modelling of those systems....
and operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
s. A client and server can communicate secure
Computer security
Computer security is a branch of computer technology known as information security as applied to computers and networks. The objective of computer security includes protection of information and property from theft, corruption, or natural disaster, while allowing the information and property to...
ly over the Internet
Internet
The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...
by tunneling
Tunneling protocol
Computer networks use a tunneling protocol when one network protocol encapsulates a different payload protocol...
the connection over an encrypted connection.
Design principles
Bob ScheiflerBob Scheifler
Robert William Scheifler is an American computer scientist. He is most notable for leading the development of the X Window System from the project's inception in 1984 until the closure of the MIT X Consortium in 1996...
and Jim Gettys
Jim Gettys
Jim Gettys is an American computer programmer at Alcatel-Lucent Bell Labs, USA. Until January 2009, he was the Vice President of Software at the One Laptop per Child project, working on the software for the OLPC XO-1. He is one of the original developers of the X Window System at MIT and worked on...
set out the early principles of X as follows (as listed in Scheifler/Gettys 1996):
- Do not add new functionality unless an implementor cannot complete a real application without it.
- It is as important to decide what a system is not as to decide what it is. Do not serve all the world's needs; rather, make the system extensible so that additional needs can be met in an upwardly compatible fashion.
- The only thing worse than generalizing from one example is generalizing from no examples at all.
- If a problem is not completely understood, it is probably best to provide no solution at all.
- If you can get 90 percent of the desired effect for 10 percent of the work, use the simpler solution. (See also Worse is betterWorse is betterWorse is better, also called the New Jersey style, was conceived by Richard P. Gabriel to describe the dynamics of software acceptance, but it has broader application. The idea is that quality does not necessarily increase with functionality. There is a point where less functionality is a...
.) - Isolate complexity as much as possible.
- Provide mechanism rather than policy. In particular, place user interface policy in the clients' hands.
The first principle was modified during the design of X11 to: Do not add new functionality unless you know of some real application that will require it.
X has largely kept to these principles since. The X.Org Foundation
X.Org Foundation
The X.Org Foundation is the organization holding the stewardship for the development of the X Window System. It was founded on 22 January 2004....
develops the reference implementation
X.Org Server
X.Org Server refers to the X server release packages stewarded by the X.Org Foundation,which is hosted by freedesktop.org, and grants...
with a view to extension and improvement of the implementation, whilst keeping it almost entirely compatible with the original 1987 protocol.
Core protocol
Communication between server and clients is done by exchanging packets over a network channelChannel (communications)
In telecommunications and computer networking, a communication channel, or channel, refers either to a physical transmission medium such as a wire, or to a logical connection over a multiplexed medium such as a radio channel...
. The client establishes the connection, sending the first packet. The server answers by sending back a packet stating the acceptance or refusal of the connection, or with a request for a further authentication. If the connection is accepted, the acceptance packet contains data for the client to use in the subsequent interaction with the server.
After connection is established, the client and the server exchange four different types of packets over the channel:
- Request: the client requests information from the server or requests it to perform an action.
- Reply: the server responds to a request. 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. Since requests are queued, error packets generated by a request may not be sent immediately.
The X server provides a set of basic services. The client programs realize more complex functionalities by interacting with the server.
Windows
What other graphical user interfaceGraphical user interface
In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...
s usually call a window is a top-level window in the X Window System. The term window is also used for windows that lie within another window, that is, the subwindows of a parent window. Graphical elements such as buttons, menus, icons, etc. are all realized using windows.
A window can only be created as a subwindow of a parent window. This causes the windows to be arranged hierarchically
Hierarchy
A hierarchy is an arrangement of items in which the items are represented as being "above," "below," or "at the same level as" one another...
in a tree
Tree (graph theory)
In mathematics, more specifically graph theory, a tree is an undirected graph in which any two vertices are connected by exactly one simple path. In other words, any connected graph without cycles is a tree...
. The X server automatically creates the root of the tree, called the root window
Root window
In the X Window System, every window is contained within another window, called its parent. This makes the windows form a hierarchy. The root window is the root of this hierarchy...
. The top-level windows are exactly the direct subwindows of the root window. Visibly, the root window is as large as the screen, and lies behind all other windows.
Identifiers
The X server stores all data about windows, fonts, etc. The client knows identifiers of these objects—integers it can use as names for them when interacting with the server. For example, if a client wishes a window to be created, it requests the server to create a window with a given identifier. The server creates a window and associates it with the identifier. The identifier can be later used by the client to request, for example, a string to be drawn in the window.Identifiers are unique to the server, not only to the client; for example, no two windows have the same identifier, even if created by two different clients. A client can access any object given its identifier, even if another client created the object.
Attributes and properties
Every window has a predefined set of attributes and a set of properties, all stored in the X server and accessible to the clients via appropriate requests. Attributes are data about the window, such as its size, position, background color, etc. Properties are pieces of data that are attached to a window. Unlike attributes, properties have no meaning at the level of the X Window core protocol. A client can store arbitrary data in a property of a window.A property is characterized by a name, a type, and a value. Properties resemble variables
Variable (programming)
In computer programming, a variable is a symbolic name given to some known or unknown quantity or information, for the purpose of allowing the name to be used independently of the information it represents...
in imperative programming languages, in that the application can create a new property with a given name and of a given type and store a value in it. Properties are associated to windows: two properties with the same name can exist on two different windows while having different types and values.
Properties are mostly used for inter-client communication. For example, the property named
WM_NAME
stores the name for the window; window managers typically read this property and display the name of the window at the top of it.The
xprop
program can display the properties of a window. In particular, xprop -root
shows the properties of the root window, which include the X resourcesX resources
In the X Window System, the X resources are parameters of computer programs such as the name of the font used in the buttons, the background color of menus, etc. They are used in conjunction with or as an alternative to command line parameters and configuration files.- Format :At the X protocol...
(parameters of programs).
Events
Events are packets sent by the server to the client to communicate that something has happened which may interest the client. A client can request the server to send an event to another client; this is used for communication between clients. For example, when a client requests the text that is currently selected, an event is sent to the client that is currently handling the window that holds the selection.The content of a window may be "destroyed" in some conditions (for example, if the window is covered). Whenever an area of destroyed content is made visible, the server generates an
Expose
event to notify the client that a part of the window has to be drawn.Other events can serve to notify clients of keyboard or mouse input, of the creation of new windows, etc.
Some kinds of events are always sent to a client, but most kinds of event are sent only if the client previously stated an interest in them, because clients may only be interested in some kind of events. For example, a client may be interested in keyboard-related event but not in mouse-related events.
Color modes
The way the X Window System handles colors can sometimes confuse users, and historically several different modes have been supported. Most modern applications use TrueColor (24-bit color, 8 bits for each of red, green and blue), but old or specialist applications may require a different color mode. Many commercial specialist applications use PseudoColor.The X11 protocol actually uses a single 32-bit unsigned integer - called a pixelvalue - for representing a single color in most graphic operations. When transferring the intensity of primary color
Primary color
Primary colors are sets of colors that can be combined to make a useful range of colors. For human applications, three primary colors are usually used, since human color vision is trichromatic....
s, a 16 bit integer is used for each colour component. The following representations of colors exist; not all of them may be supported on a specific device.
- DirectColor: A pixel value is decomposed into separate red, green, and blue subfields. Each subfield indexes a separate colormap. Entries in all colormaps can be changed.
- TrueColor: Same as DirectColor, except that the colormap entries are predefined by the hardware and cannot be changed. Typically, each of the red, green, and blue colormaps provides a (near) linear ramp of intensity.
- GrayScale: A pixel value indexes a single colormap that contains monochrome intensities. Colormap entries can be changed.
- StaticGray: Same as GrayScale, except that the colormap entries are predefined by the hardware and cannot be changed.
- PseudoColor (Chunky): A pixel value indexes a single colormap that contains color intensities. Colormap entries can be changed.
- StaticColor: Same as PseudoColor, except that the colormap entries are predefined by the hardware and cannot be changed.
Xlib and other client libraries
Most client programs communicate with the server via the XlibXlib
Xlib is an X Window System protocol client library written in the C programming language. It contains functions for interacting with an X server. These functions allow programmers to write programs without knowing the details of the protocol...
client library. Beside Xlib, the XCB
XCB
In computing, XCB is a C language binding for the X Window System. It is implemented as free software and aims to replace Xlib. The project was started in 2001 by Bart Massey....
library operates more closely to X protocol. In particular, most clients use libraries such as Xaw
Xaw
Xaw is short for the X Window System Athena widget set, which is a set of widgets to implement simple user interfaces based upon the X Toolkit Intrinsics...
, Motif
Motif (widget toolkit)
In computing, Motif refers to both a graphical user interface specification and the widget toolkit for building applications that follow that specification under the X Window System on Unix and other POSIX-compliant systems. It emerged in the 1980s as Unix workstations were on the rise, as a...
, GTK+
GTK+
GTK+ is a cross-platform widget toolkit for creating graphical user interfaces. It is licensed under the terms of the GNU LGPL, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the X Window System, along with Qt.The name GTK+ originates from GTK;...
, or Qt
Qt (toolkit)
Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface , and also used for developing non-GUI programs such as command-line tools and consoles for servers...
which in turn use Xlib
Xlib
Xlib is an X Window System protocol client library written in the C programming language. It contains functions for interacting with an X server. These functions allow programmers to write programs without knowing the details of the protocol...
for interacting with the server.
Inter-client communication
The X Window core protocol provides mechanisms for communication between clients: window properties and events, in particular the client-to-client message events. However, it does not specify any protocol for such interactions. Instead, a separate set of inter-client communication conventions governs these protocols.The Inter-Client Communication Conventions Manual
Inter-Client Communication Conventions Manual
In computing, the Inter-Client Communication Conventions Manual is a standard for interoperability between X Window System clients of the same X server. It is primarily used for communication between normal clients and the window manager. It was designed by David S. H. Rosenthal of the MIT X...
specifies the protocol for the exchange of data via selections and the interaction of applications with the window manager. Some have considered this specification difficult and confusing; consistency of application look and feel
Look and feel
In software design, look and feel is a term used in respect of a graphical user interface and comprises aspects of its design, including elements such as colors, shapes, layout, and typefaces , as well as the behavior of dynamic elements such as buttons, boxes, and menus...
and communication is typically addressed by programming to a given desktop environment.
The Inter-Client Exchange protocol (ICE) specifies a framework for building protocols for interaction between clients, so that programmers can build a specific protocol on top of it. In particular, the X Session Management protocol (XSMP) is a protocol based on ICE that governs the interaction between applications with the session manager
Session management
In human-computer interaction, session management is the process of keeping track of a user's activity across sessions of interaction with the computer system....
, which is the program that takes care of storing the status of the desktop at the end of an interactive session and recovering it when another session with the same user is started again.
The freedesktop specifications include newer conventions, including the drag-and-drop convention Xdnd (used for transferring data by selecting it and dragging in another window) and the embedded application convention Xembed (which details how an application can run in a subwindow of another application).
Selections, cut buffers, and drag-and-drop
The mechanisms of selections, cut buffers, and drag-and-drop in the X Window System allow a user to transfer data from one window to another. Selections and cut buffer are used (typically) when a user selects text or some other data in a window and pastes in a different window. Drag-and-drop is used when a user selects something in a window, then clicks on the selection and drags it into another window.Since two different applications may handle the two windows, data transfer requires different clients connected with the same X server to interact. The X Window core protocol includes some types of requests and events that are specific to selection exchange, but the transfer is mainly done using the general client-to-client event sending and window properties, which are not specific to selection transfer.
Users can transfer data of different types between clients: it is usually text, but can also be a pixmap, a number, a list of objects, etc.
Selections and drag-and-drop are active mechanisms: after the user selects data in a window, the client handling the window must actively support a protocol for transferring that data to the application requesting it. Cut buffers, by contrast, provide a passive mechanism: when the user selects some text, its content is transferred to a cut buffer, where it remains even if the application handling the window terminates and the window is destroyed.
Window manager
A window manager is a program that controls the general appearance of windows and other graphical elements of the graphical user interfaceGraphical user interface
In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...
. Differences in the look of X Window System in different installations stem mainly from the use of different window managers or from different configurations of the window manager.
The window manager takes care of deciding the position of windows, placing the decorative border around them, handling icons, handling mouse clicks outside windows (on the “background”), handling certain keystrokes, etc.
From the point of view of the X server, the window manager operates as a client just like any other client. The initial position and the decorative borders around windows are handled by the window manager using the following requests:
- an application can request the server not to satisfy requests of mapping (showing) subwindows of a given window, and to be sent an event instead;
- an application can request changing the parent of a window.
The window manager uses the first request to intercept any request for mapping top-level windows (children of the root window). Whenever another application requests the mapping of a top-level window, the server does not do it but sends an event to the window manager instead. Most window managers reparent
Re-parenting window manager
A stacking window manager is a window manager that draws all windows in a specific order, allowing them to overlap, using a technique called painter's algorithm...
the window: they create a larger top-level window (called the frame window) and reparent the original window as a child of it. Graphically, this corresponds to placing the original window inside the frame window. The space of the frame window that is not taken by the original window is used for the decorative frame around the window (the “border” and the “title bar”).
The window manager manages mouse clicks in the frame window. This allows, for example, a user to move or resize the window by clicking and dragging on the border or on the title bar.
The window manager also handles icons and related visual elements of the graphical user interface. Icons do not exist at the level of the X Window core protocol. They are implemented by the window manager. For example, whenever a window has to be “iconified”, the FVWM
FVWM
The F Virtual Window Manager is a virtual window manager for the X Window System. Originally a twm derivative, FVWM has evolved into a powerful and highly configurable environment for Unix-like systems.- History:...
window manager unmaps the window, and creates a window for the icon name and possibly another window for the icon image. The meaning and handling of icons is therefore completely decided by the window manager: some window managers such as wm2
Wm2
wm2 is a minimalistic reparenting window manager for the X Window System written by Chris Cannam. It provides support for moving, resizing, and deleting windows, but does not support icons. In place of icons, wm2 allows for temporary hiding of windows from the desktop; hidden windows can be...
do not implement icons at all.
Session manager
Roughly, the state of a sessionSession management
In human-computer interaction, session management is the process of keeping track of a user's activity across sessions of interaction with the computer system....
is the “state of the desktop” at a given time: a set of windows with their current content. More precisely, it is the set of applications managing these windows and the information that allow these applications to restore the condition of their managed windows if required. A program known as the X session manager saves and restores the state of sessions.
Most recognizably, using a session manager permits a user to log out from an interactive session but to find exactly the same windows in the same state when logging in again. For this to work, the session manager program stores the names of the running applications at logout and starts them again at login. In order for the state of the applications to be restored as well (which is needed to restore the content of windows), the applications must be able to save their state of execution upon request from the session manager and load it back when they start again.
The X Window System includes a default session manager called
xdm
. Developers have written other session managers for specific desktop systems: for example, kdmserver
is the default session manager of KDEKDE
KDE is an international free software community producing an integrated set of cross-platform applications designed to run on Linux, FreeBSD, Microsoft Windows, Solaris and Mac OS X systems...
.
X display manager
The program known as the X display manager shows the graphical login prompt in the X Window System. More generally, a display manager runs one or more X servers on the local computer and accepts incoming connections from X servers running on remote computers. The local servers are started by the display manager, which then connects to them to present the user the login screen. The remote servers are started independently from the display manager and connect to it. In this situation, the display manager works like a graphical telnetTELNET
Telnet is a network protocol used on the Internet or local area networks to provide a bidirectional interactive text-oriented communications facility using a virtual terminal connection...
server: an X server can connect to the display manager, which starts a session; the programs of this session run on the same computer of the display manager but have input and output on the computer where the X server runs (which may be the computer in front of the user or a remote one).
The X Window System ships with XDM as the basic supplied display manager. Other display managers include GDM
GNOME Display Manager
GDM provides a simpler to use alternative display manager for the X Window System's XDM.The X Window System by default uses the XDM display manager. However, resolving XDM configuration issues typically involves editing a configuration file. GDM allows users to customize or troubleshoot settings...
(GNOME
GNOME
GNOME is a desktop environment and graphical user interface that runs on top of a computer operating system. It is composed entirely of free and open source software...
), KDM (KDE
KDE
KDE is an international free software community producing an integrated set of cross-platform applications designed to run on Linux, FreeBSD, Microsoft Windows, Solaris and Mac OS X systems...
), WDM
WINGs Display Manager
In computing, the WINGs Display Manager is a display manager for the X window system, mainly used for graphically logging in, on a Unix-based system.WINGs is a modification of xdm, XFree86's original display manager....
(using the WINGs widget set used in Window Maker
Window Maker
Window Maker is a free and open source window manager for the X Window System, allowing graphical applications to be run on Unix-like operating-systems...
) and entrance
Entrance (display manager)
In computing, Entrance , usually started with the Entranced display manager, is a display manager for the X Window System designed with the Enlightenment window manager in mind. In other words, it's a program that lets you log in to a computer.It is written using the Enlightenment Foundation...
(using the architecture used in Enlightenment
Enlightenment (window manager)
Enlightenment, also known simply as E, is a stacking window manager for the X Window System which can be used alone or in conjunction with a desktop environment such as GNOME or KDE...
v.17).
User interface elements
Early widget toolkitWidget toolkit
In computing, a widget toolkit, widget library, or GUI toolkit is a set of widgets for use in designing applications with graphical user interfaces...
s for X included Xaw
Xaw
Xaw is short for the X Window System Athena widget set, which is a set of widgets to implement simple user interfaces based upon the X Toolkit Intrinsics...
(the Athena
Project Athena
Project Athena was a joint project of MIT, Digital Equipment Corporation, and IBM to produce a campus-wide distributed computing environment for educational use. It was launched in 1983, and research and development ran until June 30, 1991, eight years after it began...
Widget Set, 1983), OLIT
OLIT
OLIT is a widget toolkit from Sun Microsystems introduced in 1988, providing an OPEN LOOK user interface for X Window System applications...
(OPEN LOOK
OPEN LOOK
OPEN LOOK is a graphical user interface specification for UNIX workstations. It was originally defined in the late 1980s by Sun Microsystems and AT&T.-History:...
Intrinsics Toolkit, 1988), XView
XView
XView is a widget toolkit from Sun Microsystems introduced in 1988. It provides an OPEN LOOK user interface for X Window System applications, with an object-oriented application programming interface for the C programming language...
(1988), Motif
Motif (widget toolkit)
In computing, Motif refers to both a graphical user interface specification and the widget toolkit for building applications that follow that specification under the X Window System on Unix and other POSIX-compliant systems. It emerged in the 1980s as Unix workstations were on the rise, as a...
(1980s) and Tk. OLIT and XView function as the base toolkits for Sun
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
's legacy OpenWindows
OpenWindows
OpenWindows was a desktop environment for Sun Microsystems workstations which handled SunView, NeWS, and X Window System protocols. OpenWindows was included in later releases of the operating systems SunOS 4 and Solaris, until its removal in Solaris 9 in favor of Common Desktop Environment and...
desktop environment.
Motif provides the base toolkit for the Common Desktop Environment
Common Desktop Environment
The Common Desktop Environment is a desktop environment for Unix and OpenVMS, based on the Motif widget toolkit.- Corporate history :...
(CDE), the desktop environment used on commercial Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
systems such as Solaris, AIX and HP-UX
HP-UX
HP-UX is Hewlett-Packard's proprietary implementation of the Unix operating system, based on UNIX System V and first released in 1984...
. (Solaris 10 includes both CDE and GNOME
GNOME
GNOME is a desktop environment and graphical user interface that runs on top of a computer operating system. It is composed entirely of free and open source software...
, with the latter the preferred desktop environment .)
Toolkits developed more recently include Qt
Qt (toolkit)
Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface , and also used for developing non-GUI programs such as command-line tools and consoles for servers...
(1991- , used by KDE
KDE
KDE is an international free software community producing an integrated set of cross-platform applications designed to run on Linux, FreeBSD, Microsoft Windows, Solaris and Mac OS X systems...
), GTK+
GTK+
GTK+ is a cross-platform widget toolkit for creating graphical user interfaces. It is licensed under the terms of the GNU LGPL, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the X Window System, along with Qt.The name GTK+ originates from GTK;...
(1997- , used by GNOME), wxWidgets
WxWidgets
wxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes...
(1992- ), FLTK
FLTK
FLTK is a cross-platform GUI library developed by Bill Spitzak and others. Made with 3D graphics programming in mind, it has an interface to OpenGL, but it is also suitable for general GUI programming....
(1998- ), FOX
FOX toolkit
The FOX toolkit is an open source, cross-platform widget toolkit, that is, a library of basic elements for building a graphical user interface...
(1997- ) and fpGUI
FpGUI
fpGUI, the Free Pascal GUI toolkit, is a cross-platform graphical user interface toolkit developed by Graeme Geldenhuys. fpGUI is open source and free software, licensed under a Modified LGPL license...
(2005-current).
Extensions
Scheifler and Gettys designed the X server to be simple but extensible. As such, much functionality now resides in extensions to the protocol.At the protocol level, every extension can be assigned new request/event/error packet types. Extension features are accessed by client applications through extension libraries. Adding extensions to current X server implementations is reportedly difficult due to a lack of modularity in the server design. It is a long term goal of the XCB
XCB
In computing, XCB is a C language binding for the X Window System. It is implemented as free software and aims to replace Xlib. The project was started in 2001 by Bart Massey....
project to automate generating both the client and server sides of extensions from XML protocol descriptions.
The following table provides a partial catalog of extensions that have been developed, sorted roughly by recency of introduction:
Extension | Description and notes |
---|---|
Composite | Off-screen rendering of entire window hierarchies, allowing applications and composition managers to do effects anywhere along the way. Required for things like alpha transparency for windows and drop shadows. |
Damage | Tracks modified regions of windows, and minimizes bandwidth use required to keep the display up to date. |
XFixes XFixes In computing, XFixes is an X Window System extension which makes useful additions to the X11 protocol. It was started in 2003 by Keith Packard. It first appeared in the KDrive X server and later in X.Org Server version 6.8.0.... |
Several protocol changes. |
Extended-Visual-Information (EVIE) | Allows client to determine information about core X visuals beyond what the core protocol provides. |
Distributed Multihead (DMX) | Communicates with DMX X server. |
X-Video Motion Compensation (XvMC) | Offloading video motion compensation to a GPU that supports it. |
GLX GLX GLX provides the interface connecting OpenGL and the X Window System: it enables programs wishing to use OpenGL to do so within a window provided by the X Window System.-History:... |
Support for rendering OpenGL OpenGL OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL... within windows. |
XRender XRender The X Rendering Extension is an X Window System extension to implement Porter-Duff image compositing in the X server, to allow efficient display of transparent images.- History :... |
Hardware accelerated image compositing with alpha blending. |
Resize and Rotate (RANDR) | Dynamically change the size, reflection, rotation and refresh rate of an X screen. |
Xinerama Xinerama Xinerama is an extension to the X Window System which enables multi-headed X applications and window managers to use two or more physical displays as one large virtual display.It was originally developed by Madeline T... |
Splitting the desktop across multiple monitors. |
Display Power Management Signaling (DPMS VESA Display Power Management Signaling VESA Display Power Management Signaling is a standard from the VESA consortium for managing the power supply of video monitors for computers through the graphics card e.g.; shut off the monitor after the computer has been unused for some time , to save power.- History :DPMS 1.0 was issued by VESA... ) |
Allows controlling monitor power saving modes. |
X keyboard extension X keyboard extension In human-computer interfaces, the X keyboard extension or XKB is a part of the X Window System that extends the ability to control the keyboard over what is offered by the X Window System core protocol... |
Enhanced keyboard layout handling. |
DOUBLE-BUFFER | Gives flicker-free animation. |
RECORD | Used in server testing |
MIT-SHM MIT-SHM The MIT Shared Memory Extension or MIT-SHM is a X Window System extension for exchange of image data between client and server using shared memory.The basic capability provided is that of shared memory XImages... |
Use of shared memory to improve performance. |
SYNC | Provides timers and synchronizes clients (e.g. running on different hosts and operating systems) from within the X server. Created because of errors introduced by the network. |
XTEST | For generating fake input. Use i.e. the xte application from the XAutomation package. |
XInputExtension | Support for input devices such as graphic tablets; implementable as libXi |
BIG-REQUESTS | Enables requests exceeding 262140 bytes in length. |
XC-MISC | Fixes resource ID range overrun |
X video extension X video extension The X video extension, often abbreviated as XVideo or Xv, is a video output mechanism for the X Window System. The protocol was designed by David Carver; the specification for version 2 of the protocol was written in July 1991. Its main use today is to rescale video playback in the video controller... |
Support for hardware video overlays and hardware-based video scaling on playback. Also called Xv (not to be confused with the xv Xv xv is a shareware program written by John Bradley to display and modify digital images under the X Window System.While popular in the early 1990s , no official releases have been made since December 1994... program). |
Shape Shape extension In the X Window System, the X Nonrectangular Window Shape Extension allows windows to be given arbitrary, non-rectangular shapes.Two well-known applets that use the shape extension are oclock, which is a simple round analog clock, and xeyes, which shows two googly eyes that follow the cursor on the... |
Support for non-rectangular and partially transparent (binary, no alpha opacity) windows. |
MIT-SCREEN-SAVER | Launches a program when the X server turns on the built-in screen saver |
SECURITY | Provides enhanced server security |
X-Resource | Allows querying the X server about its resource usage |
XFree86-Bigfont | |
XFree86-DGA | Provides direct linear framebuffer access (direct graphics access). To be mostly removed in X.Org 7.6 |
XFree86-VidModeExtension | Dynamically configures modelines and gamma. |
Obsolete extensions
Extension | Description and notes |
---|---|
Low Bandwidth X Low Bandwidth X In computing, LBX, or Low Bandwidth X, was a protocol to use the X Window System over network links with low bandwidth and high latency. It was introduced in X11R6.3 in 1996, but never achieved wide use... (LBX) |
Replaced by X tunneled Tunneling protocol Computer networks use a tunneling protocol when one network protocol encapsulates a different payload protocol... over a secure shell connection, proved faster than LBX. |
PEX PHIGS PHIGS is an API standard for rendering 3D computer graphics, at one time considered to be the 3D graphics standard for the 1990s. Instead a combination of features and power led to the rise of OpenGL, which became the most popular professional 3D API of the 1990s... |
"PHIGS Extension to X"; support for PHIGS 3D scene graph API. GLX with OpenGL is frequently used instead. |
XImage Extension | MIT-SHM is used instead. |
XEvIE | X Event Interception Extension. Designed for users who need to intercept all keyboard and mouse events. Removed in X.Org 7.5. |
XFree86-Misc | Superseded by input properties. Removed in X.Org 7.5. |
DEC-XTRAP | Removed in X.Org 7.5. |
TOG-CUP | Provides colormap utilization policy. Removed in X.Org 7.5. |
MIT-SUNDRY-NONSTANDARD | Support for various backwards compatibility features for clients which used early implementations of X11. For compatibility with Pre-X11R4 clients. Disabled since 2006. Removed in X.Org 7.5. |
XC-APPGROUP | Removed in X.Org 7.5. |
XPRINT Xprint Xprint is a deprecated printing extension for the X Window System. It allows an application to render output to a printer just as it would to any other display device. The server portion, Xprt, uses an extension to handle paged output devices... |
Deprecated. Allows an application to render output to a printer just as it would to any other display device. Removed in May 2008. |
See also
- XlibXlibXlib is an X Window System protocol client library written in the C programming language. It contains functions for interacting with an X server. These functions allow programmers to write programs without knowing the details of the protocol...
- IntrinsicsIntrinsicsX Toolkit Intrinsics is a library used in the X Window System. More precisely, it is a library that uses the low-level Xlib library and provides a friendly API to develop X11 software with graphical widgets...
(Xt) - X Window System core protocol
- X logical font descriptionX logical font descriptionX logical font description is a font standard used by the X Window System. It is intended to support:* unique, descriptive font names that support simple pattern matching* multiple font vendors, arbitrary character sets, and encodings...
Further reading
- Robert W. Scheifler and James Gettys: X Window System: Core and extension protocols, X version 11, releases 6 and 6.1, Digital Press 1996, ISBN 1-55558-148-X
- An Introduction to X11 User Interfaces
- Introduction to X Windows[sic]
- Open Source Desktop Technology Road Map (Jim Gettys, 09 Dec 2003)