X.Org Server is the
free and open-source
Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
implementation of the
X Window System
The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems.
X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting ...
display server stewarded by the
X.Org Foundation.
Implementations of the client-side
X Window System
The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems.
X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting ...
protocol exist in the form of ''X11 libraries'', which serve as helpful APIs for communicating with the X server. Two such major X libraries exist for X11. The first of these libraries was
Xlib, the original C language X11 API, but another C language X library,
XCB, was created later in 2001. Other smaller X libraries exist, both as interfaces for
Xlib and
XCB in other languages, and as smaller standalone X libraries.
The services with which the X.Org Foundation supports X Server include the packaging of the releases; certification (for a fee); evaluation of improvements to the code; developing the web site, and handling the distribution of monetary donations. The releases are coded, documented, and packaged by global
developers.
Software architecture

The X.Org Server implements the server side of the
X Window System core protocol version 11 (X11) and extensions to it, e.g. RandR.
Version 1.16.0 integrates support for
systemd-based launching and management which improved boot performance and reliability.
Device Independent X (DIX)
The Device Independent X (DIX) is the part of the X.Org Server that interacts with clients and implements software rendering. The main loop and the event delivery are part of the DIX.
An X server has a tremendous amount of functionality that must be implemented to support the X core protocol. This includes code tables, glyph rasterization and caching,
XLFDs, and the core rendering API which draws graphics primitives.
Device Dependent X (DDX)
The Device Dependent X (DDX) is the part of the x-server that interacts with the hardware. In the X.Org Server source code, each directory under "hw" corresponds to one DDX. Hardware comprises graphics cards as well as mouse and keyboards. Each driver is hardware specific and implemented as a separate loadable module.
2D graphics driver
For historical reasons the X.Org Server still contains graphics device drivers supporting some form of 2D rendering acceleration. In the past,
mode-setting was done by an X-server graphics device driver specific to some
video controller hardware (''e.g.'', a
GPU). To this mode-setting functionality, additional support for 2D acceleration was added when such became available with various GPUs. The mode-setting functionality was moved into the
DRM and is being exposed through a DRM mode-setting interface, the new approach being called "kernel mode-setting" (KMS). But the 2D rendering acceleration remained.
In
Debian
Debian (), also known as Debian GNU/Linux, is a Linux distribution composed of free and open-source software, developed by the community-supported Debian Project, which was established by Ian Murdock on August 16, 1993. The first version of De ...
the 2D graphics drivers for the X.Org Server are packaged individually and called ''xserver-xorg-video-*''. After installation the 2D graphics driver-file is found under
/usr/lib/xorg/modules/drivers/
. The package xserver-xorg-video-nouveau installs
nouveau_drv.so
with a size of 215 KiB, the proprietary
Nvidia GeForce driver installs an 8 MiB-sized file called
nvidia_drv.so
and
Radeon Software installs
fglrx_drv.so
with a size of about 25MiB.
The available
free and open-source graphics device driver
A free and open-source graphics device driver is a software stack which controls computer-graphics hardware and supports graphics-rendering application programming interfaces (APIs) and is released under a free and open-source software licen ...
s are being developed inside of the
Mesa 3D-project. While these can be recompiled as required, the development of the proprietary DDX 2D graphics drivers is greatly eased when the X.Org Server keeps a stable API/ABI across multiple of its versions.
With version 1.17 a generic method for mode-setting was mainlined. The
xf86-video-modesetting
package, the Debian-package being called
xserver-xorg-video-modesetting
, was retired, and the generic modesetting DDX it contained was moved into the server package to become the KMS-enabled default DDX, supporting the vast majority of AMD, Intel and NVidia GPUs.
On April 7, 2016 AMD employee Michel Dänzer released
xf86-video-ati
version 7.7.0 and
xf86-video-amdgpu
version 1.1.0, the latter including support for their
Polaris
Polaris is a star in the northern circumpolar constellation of Ursa Minor. It is designated α Ursae Minoris ( Latinized to ''Alpha Ursae Minoris'') and is commonly called the North Star or Pole Star. With an apparent magnitude that ...
microarchitecture.
= Acceleration architectures
=
There are (at least) XAA (XFree86 Acceleration Architecture),
EXA,
UXA
In computing, UMA Acceleration Architecture (UXA) is the reimplementation of the EXA graphics acceleration architecture of the X.Org Server developed by Intel. Its major difference with EXA is the use of GEM, replacing Translation Table Maps. In F ...
and
SNA
SNA or Sna may refer to:
Organizations
* Novinite.com (Sofia News Agency), Bulgaria's largest English-language news provider
* Shanni Nationalities Army
* Singapore National Academy, a school in Surabaya, Indonesia
* Sky News Australia, an Austra ...
.

In the
X Window System
The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems.
X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting ...
, XFree86 Acceleration Architecture (XAA) is a driver architecture to make a video card's 2D
hardware acceleration
Hardware acceleration is the use of computer hardware designed to perform specific functions more efficiently when compared to software running on a general-purpose central processing unit (CPU). Any transformation of data that can be calc ...
available to the X server.
It was written by
Harm Hanemaayer in 1996 and first released in
XFree86
XFree86 is an implementation of the X Window System. It was originally written for Unix-like operating systems on IBM PC compatibles and was available for many other operating systems and platforms. It is free and open source software under the XF ...
version 3.3. It was completely rewritten for XFree86 4.0. It was removed again from X.Org Server 1.13.
Most drivers implement acceleration using the XAA module. XAA is on by default, though acceleration of individual functions can be switched off as needed in the server configuration file (
XF86Config
or
xorg.conf
).
The driver for the
ARK chipset was the original development platform for XAA.
In X.Org Server release 6.9/7.0,
EXA was released as a replacement for XAA, as XAA supplies almost no speed advantage for current video cards. EXA is regarded as an intermediate step to converting the entire X server to using
OpenGL
OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve ha ...
.
= Glamor
=
Glamor is a generic, hardware independent, 2D acceleration driver for the X server that translates the X render primitives into
OpenGL
OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve ha ...
operations, taking advantage of any existing 3D OpenGL drivers. In this way, it is functionally similar to Quartz Extreme and QuartzGL (2D performance acceleration) for Apple
Quartz Compositor
Quartz Compositor is the display server (and at the same time the compositing window manager) in macOS. It is responsible for presenting and maintaining rasterized, rendered graphics from the rest of the Core Graphics framework and other re ...
.
The ultimate goal of GLAMOR is to obsolete and replace all the DDX 2D graphics device drivers and acceleration architectures, thereby avoiding the need to write X 2D specific drivers for every supported graphic chipset. Glamor requires a 3D driver with support for
shader
In computer graphics, a shader is a computer program that calculates the appropriate levels of light, darkness, and color during the rendering of a 3D scene - a process known as '' shading''. Shaders have evolved to perform a variety of spec ...
s.
Glamor performance tuning was accepted for
Google Summer of Code 2014. Glamor supports
Xephyr and
DRI3, and can boost some operations by 700–800%. Since its mainlining into version 1.16 of the X.Org Server, development on Glamor was continued and patches for the 1.17 release were published.
= Virtualization
=
There is a distinct and special DDX for instances of the X.Org Server which run on a guest system inside of a
virtualized environment: xf86-video-qxl, a driver for the "QXL video device".
SPICE
A spice is a seed, fruit, root, bark, or other plant substance primarily used for flavoring or coloring food. Spices are distinguished from herbs, which are the leaves, flowers, or stems of plants used for flavoring or as a garnish. Spices a ...
makes use of this driver though it works without it as well.
In the Debian repositories it is called xserver-xorg-video-qxl, cf. https://packages.debian.org/buster/xserver-xorg-video-qxl
Input stack
Under Debian, drivers related to input are found under
/usr/lib/xorg/modules/input/
. Such drivers are named e.g.
evdev_drv.so
,
mouse_drv.so
,
synaptics_drv.so
or
wacom_drv.so
.
With version 1.16, the X.Org Server obtained support for the
libinput library in form of a wrapper called
xf86-input-libinput
. At the XDC 2015 in Toronto, libratbag was introduced as a generic library to support configurable mice.
xserver-xorg-input-joystick
is the input module for the X.Org server to handle classic joysticks and gamepads, which is not meant for playing games under X, but to control the cursor with a joystick or gamepad.
Other DDX components
; XWayland
: XWayland is a series of patches over the X.Org server codebase that implement an X server running upon the
Wayland protocol. The patches are developed and maintained by the Wayland developers for compatibility with X11 applications during the transition to Wayland, and was mainlined in version 1.16 of the X.Org Server in 2014.
When a user runs an X application from within
Weston, it calls upon XWayland to service the request.
; XQuartz
: XQuartz is a series of patches from
Apple Inc. to integrate support for the X11 protocol into their
Quartz Compositor
Quartz Compositor is the display server (and at the same time the compositing window manager) in macOS. It is responsible for presenting and maintaining rasterized, rendered graphics from the rest of the Core Graphics framework and other re ...
, in a similar way to how XWayland integrates X11 into
Wayland compositor
Wayland is a communication protocol that specifies the communication between a display server and its clients, as well as a C library implementation of that protocol. A display server using the Wayland protocol is called a '' Wayland composit ...
s.
; Xspice
: Xspice is a device driver for the X.Org Server. It supports the QXL framebuffer device and includes a wrapper script which makes it possible to launch an X.Org Server whose display is exported via the
SPICE
A spice is a seed, fruit, root, bark, or other plant substance primarily used for flavoring or coloring food. Spices are distinguished from herbs, which are the leaves, flowers, or stems of plants used for flavoring or as a garnish. Spices a ...
protocol. This enables use of SPICE in a remote desktop environment, without requiring
KVM virtualization.
; Xephyr
:
Xephyr is an X-on-X implementation. Since version 1.16.0, Xephyr serves as the primary development environment for the new 2D acceleration subsystem (Glamor), permitting rapid development and testing on a single machine.
; RandR
: RandR (''resize and rotate'') is a
communications protocol
A communication protocol is a system of rules that allows two or more entities of a communications system to transmit information via any kind of variation of a physical quantity. The protocol defines the rules, syntax, semantics and synchro ...
written as an extension to the
X11 protocol. XRandR provides the ability to resize, rotate and reflect the
root window of a screen. RandR is responsible for setting the screen refresh rate.
It allows for the control of multiple monitors.
IPC
The X.Org Server, and any x-client, each run as distinct processes. On Unix/Linux, a process knows nothing about any other processes. For it to communicate with another process, it is completely and utterly reliant on the kernel to moderate the communication via available
inter-process communication (IPC) mechanisms.
Unix domain sockets are used to communicate with processes running on the same machine. Special socket function calls are part of the System Call Interface. Although
Internet domain sockets can be used locally, Unix domain sockets are more efficient, since they do not have the
protocol overhead (
checksum
A checksum is a small-sized block of data derived from another block of digital data for the purpose of detecting errors that may have been introduced during its transmission or storage. By themselves, checksums are often used to verify dat ...
s, byte orders, etc.).
X.Org Server does not use
D-Bus
In computing, D-Bus (short for "Desktop Bus")
is a message-oriented middleware mechanism that allows communication between multiple processes running concurrently on the same machine. D-Bus was developed as part of the freedesktop.org project, ...
.
Sockets are the most common interprocess communication (IPC) method between the processes of the X server and its various X clients. It provides the Application Programming Interface (API) for communication in the TCP/IP domain and also locally only in the UNIX domain. There are several other APIs described in the X Transport Interface, for instance TLI (Transport Layer Interface). Other options for IPC between for the X client-server, require X Window system extensions, for instance the
MIT Shared Memory Extension (MIT-SHM).
Multiseat configuration
Multi-seat refers to an assembly of a single computer with multiple "seats", allowing multiple users to sit down at the computer, log in, and use the computer at the same time independently. The computer has multiple keyboards, mice, and monitors attached to it, each "seat" having one keyboard, one mouse and one monitor assigned to it. A "seat" consists of all hardware devices assigned to a specific workplace. It consists of at least one graphics device (graphics card or just an output and the attached monitor) and a keyboard and a mouse. It can also include video cameras, sound cards and more.
Due to limitation of the VT system in the Linux kernel and of the X core protocol (in particular, how X defines the relation between the root window and an output of the graphics card), multi-seat does not work out-of-the-box for the usual Linux distribution but necessitates a special configuration.
There are these methods to configure a multi-seat assembly:
* multiple
Xephyr servers over a host xorg-server
* multiple instances of an xorg-server
** one graphics card per seat
** a single graphics card for all seats
The utilized command-line options of the xorg-server are:
*
-isolateDevice bus-id
Restrict device resets (output) to the device at bus-id. The bus-id string has the form bustype:bus:device:function (e.g., ‘PCI:1:0:0’). At present, only isolation of PCI devices is supported; i.e., this option is ignored if bustype is anything other than ‘PCI’.
*
vtXX
the default for e.g. Debian 9 Stretch is 7, i.e. by pressing ++ the user can switch to the VT running the xorg-server.
Only the user on the first monitor has the use of vt consoles and can use ++x to select them. The other users have a
GDM login screen and can use xorg-server normally, but have no vt's.
Even though a single user can utilize multiple monitors connected to the different ports of a single graphics card (cf. RandR), the method which is based on multiple instances of the xorg-server seems to require multiple
PCI
PCI may refer to:
Business and economics
* Payment card industry, businesses associated with debit, credit, and other payment cards
** Payment Card Industry Data Security Standard, a set of security requirements for credit card processors
* Prov ...
graphics cards.
It is possible to configure multi-seat employing only one graphics card, but due to limitations of the X protocol this necessitates the usage of
X Display Manager Control Protocol XDMCP.
There is also
Xdmx (Distributed Multihead X).
Adoption
; Unix and Linux
: The X.Org Server runs on many free-software
Unix-like
A Unix-like (sometimes referred to as UN*X or *nix) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-li ...
operating systems, including being adopted for use by most
Linux distribution
A Linux distribution (often abbreviated as distro) is an operating system made from a software collection that includes the Linux kernel and, often, a package management system. Linux users usually obtain their operating system by downloading on ...
s and
BSD variants. It is also the X server for the
Solaris operating system. X.Org is also available in the repositories of
Minix 3
Minix 3 is a small, Unix-like operating system. It is published under a BSD-3-Clause license and is a successor project to the earlier versions, Minix 1 and 2.
The project's main goal is for the system to be fault-tolerant by detecting and rep ...
.
; Windows
:
Cygwin/X,
Cygwin
Cygwin ( ) is a POSIX-compatible programming and runtime environment that runs natively on Microsoft Windows. Under Cygwin, source code designed for Unix-like operating systems may be compiled with minimal modification and executed.
The Cygwin i ...
's implementation of the X server for
Microsoft Windows, uses the X.Org Server, as do VcXsrv (
Visual C++ X-server) and
Xming. SSH clients such as
PuTTY
Putty is a material with high plasticity, similar in texture to clay or dough, typically used in domestic construction and repair as a sealant or filler. Although some types of putty (typically those using linseed oil) slowly polymerise and be ...
allow launching of X applications through X11 forwarding on the condition that it is enabled on both the server and client.
; OS X / macOS
:
OS X
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and la ...
versions prior to
Mac OS X Leopard
Mac OS X Leopard (version 10.5) is the sixth major release of macOS, Apple's desktop and server operating system for Macintosh computers. Leopard was released on October 26, 2007 as the successor of Mac OS X 10.4 Tiger, and is available in two ...
(10.5) shipped with an XFree86-based server, but 10.5's X server adopted the X.Org codebase. Starting with
OS X Mountain Lion, (10.8) X11 is not bundled in OS X; instead, it has to be installed from, for example, the open source
XQuartz project. As of version 2.7.4, X11.app/XQuartz does not expose support for high-resolution
Retina displays to X11 apps, which run in pixel-doubled mode on high-resolution displays.
; OpenVMS
: Current versions of the DECwindows X11 server for
OpenVMS
OpenVMS, often referred to as just VMS, is a multi-user, multiprocessing and virtual memory-based operating system. It is designed to support time-sharing, batch processing, transaction processing and workstation applications. Customers using Ope ...
are based on X.org Server.
History

The modern
X.Org Foundation came into being in 2004 when the body that oversaw X standards and published the official reference implementation joined forces with former
XFree86
XFree86 is an implementation of the X Window System. It was originally written for Unix-like operating systems on IBM PC compatibles and was available for many other operating systems and platforms. It is free and open source software under the XF ...
developers. X11R6.7.0, the first version of the X.Org Server, was
fork
In cutlery or kitchenware, a fork (from la, furca ' pitchfork') is a utensil, now usually made of metal, whose long handle terminates in a head that branches into several narrow and often slightly curved tines with which one can spear foods ...
ed from XFree86 4.4 RC2.
The immediate reason for the fork was a disagreement with the new license for the final release version of XFree86 4.4, but several disagreements among the contributors surfaced prior to the split. Many of the previous XFree86 developers have joined the X.Org Server project.
In 2005, a great effort was put in the modularization of the X.Org server source code, resulting in a dual release by the end of the year. The X11R7.0.0 release added a new modular build system based on the
GNU Autotools, while X11R6.9.0 kept the old
imake build system, both releases sharing the same codebase. Since then the X11R6.9 branch is maintained frozen and all the ongoing development is done to the modular branch. The new build system also brought the use of dlloader standard
dynamic linker
In computing, a dynamic linker is the part of an operating system that loads and links the shared libraries needed by an executable when it is executed (at " run time"), by copying the content of libraries from persistent storage to RAM, filli ...
to load plugins and drivers, deprecating the old own method. As a consequence of the modularization, the X11 binaries were moving out of their own
/usr/X11R6
subdirectory tree and into the global
/usr
tree on many
Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
systems.
In June 2006, another effort was done to move the X.Org server source codebase from
CVS
CVS may refer to:
Organizations
* CVS Health, a US pharmacy chain
** CVS Pharmacy
** CVS Caremark, a prescription benefit management subsidiary
* Council for Voluntary Service, England
* Cable Video Store, former US pay-per-view service
* CVS F ...
to
git. Both efforts had the long-term goal of bringing new developers to the project. In the words of Alan Coopersmith:
In the 7.1 release, the KDrive framework (a small implementation of X written by
Keith Packard
Keith Packard (born April 16, 1963) is a software developer, best known for his work on the X Window System.
Packard is responsible for many X extensions and technical papers on X. He has been heavily involved in the development of X since the l ...
, which was not based on
XFree86
XFree86 is an implementation of the X Window System. It was originally written for Unix-like operating systems on IBM PC compatibles and was available for many other operating systems and platforms. It is free and open source software under the XF ...
that X.Org developers used as a testing ground for new ideas, such as
EXA) was integrated into the main codebase of X.Org server.
In 2008, the new DRI2, based on the
kernel mode-setting
Mode setting is a software operation that activates a display mode (screen resolution, color depth, and refresh rate) for a computer's display controller by using VESA BIOS Extensions or UEFI Graphics extensions (on more modern computers).
The d ...
(KMS) driver, replaced DRI. This change also set a major milestone in the X.Org server architecture, as the drivers were moved out from the server and
user space
A modern computer operating system usually segregates virtual memory into user space and kernel space. Primarily, this separation serves to provide memory protection and hardware protection from malicious or errant software behaviour.
Kerne ...
(UMS) to the
kernel space
A modern computer operating system usually segregates virtual memory into user space and kernel space. Primarily, this separation serves to provide memory protection and hardware protection from malicious or errant software behaviour.
Kerne ...
.
In 2013, the initial versions of DRI3 and Present extensions were written and coded by Keith Packard to provide a faster and
tearing
Tearing is the act of breaking apart a material by force, without the aid of a cutting tool. A tear in a piece of paper, fabric, or some other similar object may be the result of the intentional effort with one's bare hands, or be accidental. ...
-free 2D rendering. By the end of the year the implementation of
GLX was rewritten by Adam Jackson at
Red Hat.
Releases
See also
*
Reference implementation
In the software development process, a reference implementation (or, less frequently, sample implementation or model implementation) is a program that implements all requirements from a corresponding specification. The reference implementation ...
part of a standard release package
*
X window manager
An X window manager is a window manager that runs on top of the X Window System, a windowing system mainly used on Unix-like systems.
Unlike MacOS Classic, macOS, and Microsoft Windows platforms (excepting Microsoft Windows explorer.exe sh ...
a package that is deliberately kept separate from the X server package
*
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. It is mainly us ...
*
evdev
*
xorg.conf
*
XQuartz - An X server for macOS
*
Xming - An X server for Windows
*
Xenocara
References
External links
*
- A fully updated X server for Windows
{{Display Servers
X servers
Freedesktop.org
Software forks
Software that uses Meson