X Window System
|This article was entered in the Linux project for improvement. Help edit it and take part in the discussion !
The following improvements would be good: The driver problems of the Nouveau driver are not mentioned, as are the restrictions in terms of language switching. That should be added. - A. Abdel-Rahim ( discussion ) 10:57, 20 Mar. 2020 (CET)
|X Window System
|X.Org Foundation , Keith Packard
(June 6, 2012,
therein: X.Org-Server 1.20.7 (Jan. 14, 2020))
|unixoide ( BSD , macOS , Linux, etc.), VMS
|Graphical user interface , network protocol
The X Window System (also X Version 11 , X11 , X ) is a network protocol and software that enables windows on bitmap displays on most Unix-like operating systems and OpenVMS . X11 was implemented on all common operating systems.
It provides a standard construction kit and the protocol for building a graphical user interface . This includes drawing and moving windows around the screen, as well as handling user input with the mouse and keyboard. X does not prescribe a special user interface , but leaves this to its client programs. Therefore, X-based environments can vary a lot in their appearance. This is counteracted with the help of desktop environments - the best known, KDE and Gnome are shown on the right. End users hardly come into contact with the core programs of the X Window System on modern Unix desktops.
Previous display protocols could only manage built-in or directly attached displays. In addition to this, X was specifically designed as a client-server system , which enables not only local but also network-transparent use.
The X.Org Foundation is in charge of the project today and on June 6, 2012 released version 7.7 of the reference implementation as free software under the MIT license . Another implementation widely used in the 1990s is XFree86 .
X was developed in 1984 in the Athena project in cooperation with MIT , DEC and IBM . The first version was presented on June 19, 1984, and in 1986 X 10.4 was distributed to all interested parties with great success for a nominal fee, which was the first time that X was widely used on the Unix computers of the time. However, the X10 was incompatible with the later X11. Finally, in September 1987, the first release of X11 followed.
As the popularity grew in 1988, the non-commercial X consortium was founded to take over further development. It released different versions, the last big one being the X11R6 in 1994. After that, The Open Group took over the development and standardization. At the same time, the free X implementation XFree86 became more and more popular and became the de facto standard for the X implementation. In 2003, however, there were project-internal and licensing problems with XFree86, which ultimately led to the dissolution of the development team. Under the umbrella of the then newly established X.Org Foundation , a spin-off of the old XFree86 was developed, which largely followed in its footsteps under the name X.Org-Server . Since around 2005 it has been considered the most widespread X server and thus the most widespread X implementation.
The X server controls the input and output devices, such as pointing devices (e.g. mouse ), keyboard, monitor and graphics card. To do this, in theory it communicates with the operating system kernel , but in practice the kernel is also bypassed. The underlying concept is an extension of the terminal concept to include graphical user interfaces: A program relies on the services of another specialized program (X server) for graphical input (mouse) and output (window technology); communication always takes place via the Network.
The display at X is that of a raster graphics- based window manager that provides various functions. This includes drawing and moving windows, event-oriented handling of a pointing device, e.g. B. a mouse, the interprocess communication and partly also the management functions for print and audio output. X is therefore a minimal system in which only primitives such as lines, patterns etc. are provided for drawing .
The actual appearance and behavior of the window system is therefore not determined by X, but by the window manager , which, like a normal application, simply runs as a client of the X server. However, he is not responsible for the appearance of the programs themselves. This is usually done by the so-called GUI toolkit , which draws and manages the typical elements of a graphical user interface such as B. Menus and buttons takes over. See also desktop environment .
X is based on a client-server model :
- The X server runs on the computer at the workstation and makes its (graphic) services available to the X clients. It contains the graphics card driver as well as drivers for the keyboard, mouse and other input devices (such as graphics tablets) and communicates with the X client by means of interprocess communication.
- The X client is the application program that uses the graphical input / output services of the X server. It can run on the same or any remote computer (provided there is a network connection between the two). The X client uses the services of the X server to achieve a graphical representation and receives from it the various events ( events ) such as keystrokes, mouse movements, clicks, etc.
The text-based terminal system known in the world of mainframes (mostly proprietary ones such as IBM 5250 and 3270 ; under Digital VMS the well-known serial terminals such as VT100 ) experienced its graphic development to the X-Terminal ; a computer on which nothing other than an X server is running. These X-Terminals are often used to access compute-intensive applications with low-performance computers: The application itself runs on a server, the X-Terminal only displays the graphical user interface.
In the meantime, it has become established to use standard PC hardware instead of special hardware for X terminals . With this, the functions of X terminals can be implemented inexpensively, for example in the form of thin clients .
To enable fast 3D acceleration, the X Window System provides the Direct Rendering Infrastructure (DRI) interface, which programs can use to access the 3D hardware directly. In the case of free drivers, this happens through the OpenGL implementation Mesa 3D , in the case of proprietary drivers through proprietary implementations of OpenGL.
The X-System was designed from the start for efficient network operation. Communication between client and server takes place using a standardized protocol that only requires relatively low transfer rates. Although the source code of the X system is object-oriented, it is still written in C , so that translation is possible on almost any Unix computer. In contrast to current MS Windows versions, the X system is not part of the operating system, which is why a crash of X usually has no influence on its integrity : If the X server crashes or no longer reacts, the clients can react and z. B. wait for a restart of the X server or (which is usually the case) terminate. Furthermore, the window manager (the "user interface") basically has the same status as an X client: One window manager can be replaced by another during operation. Even very small window managers (e.g. twm , around 140 KB ) can be used comfortably.
The well thought-out, hierarchical structure of the system enables, for example, the following:
- Operate several screen workstations on one X server.
- For development and test purposes, run an X server in a window of another X server.
- Execute programs on a computer with completely different hardware and software than the operating computer.
Compared to hardware, the further development of X takes place on a large time scale and with only minor changes. Compatibility problems therefore do not arise if only standard libraries are used. However, a large number of X clients today use extensions such as Xft , XVideo or Xinerama .
The strict separation of the X Window system from the user interface leads to a relatively flexible system but can also appear very mixed: Since the design of the interface elements, unlike Windows or Mac OS is not out of the set design of the main GUI toolkit comes, but there are different toolkits (including Qt and GTK + ) with different properties that use different designs, it may well happen that each of the programs used shows a different appearance and behavior.
xinput test idthe X server acts as a keylogger , whereby even the sudo password can be read out. A prerequisite for this type of attack is that an X server with
rootrights is already running. Many Linux distributions therefore prevent logging in as
root. For several years we have been working on Wayland , which is to replace the X server. Wayland is said to contain significantly fewer security holes than X.
Approaches to improvement
Several approaches have been developed to improve the transmission speed:
- Compression of the transmission data,
- Creation of a cache for already transferred data and
- Reduction of the influence of the packet cycle time between X client and X server through more efficient programming.
Several projects are trying to implement these techniques. The XCB library is a new version of the Xlib library, which regulates the data traffic between client and server in the X server. When developing XCB, particular importance is attached to increased efficiency.
The NX project of the Italian company NoMachine is also very well known. With the help of a cache and data compression, X can also be used via modem lines.
Keith Packard's Low Bandwidth X project has worked in this area in the past . The idea was to create an extension of the X protocol in order to make its network transparency usable even for low bandwidths. With the release of X11R6.3 by the X Consortium in December 1996, LBX became a full extension of the X protocol. But since it was never used extensively and could only offer a solution for some of the problems, the project was declared dead by Keith Packard in the course of 2000.
Increased uniformity was also pursued by several projects. Approaches were the creation of a desktop surface with uniform surface libraries or the replacement of X by a system designed on a higher level, which included a uniform treatment of surface elements from the start. The Fresco project and the Y Window System each developed solutions to implement the second approach, but the projects are currently dormant.
Another approach that has been actively pursued is the attempt to achieve consistency between the various toolkits through common guidelines for user interfaces and software behaviors. This approach is being pursued above all in the context of the freedesktop.org project. B. to uniform standards for icons.
In the early 1990s, the complete X11 distribution was often the largest file (around 10 to 50 MB ) on Unix computers. Since it was also free , it was often used, or at least threatened, as a mail bomb . "Shall I send a X11R3" was therefore in Usenet , a running gag order Newbies draw attention to wrongdoing.
The X11 colors are the basis of the color names in CSS today .
- X display manager
- Cygwin / X (Windows implementation)
- Xming (Windows implementation)
- XQuartz (macOS implementation)
- Quartz compositor
- Rio (software)
- Wayland (display server protocol)
- Category: X-Server
- Xlib Programming Manual . O'Reilly & Associates
- Michael Larabel: X.org server 1.20.7 released with a handful of fixes for GLAMOR + modesetting. phoronix.com Internet portal, January 14, 2020 (English)
- Jürgen Seeger: The X Window System turns 30. On June 19, 1984 the first prototype of the network-wide, graphical window system X, which is standard on Unix and Linux systems to this day, ran. In: Heise online . June 20, 2014, accessed June 20, 2014 .
- The X Window System . In: Guidebook , as of June 25, 2005 (English); originally in byte , issue 1/89, pp. 353-360; accessed on May 31, 2013.
- Michael Plura: Unlocked: Root rights with X.Org - iX Magazin. In: heise.de. October 29, 2018, accessed October 29, 2018 .
- The Invisible Things Lab's blog: The Linux Security Circus: On GUI isolation. In: theinvisiblethings.blogspot.com. April 23, 2011, accessed October 28, 2018 .
- Linux and BSD: security hole in X.org enables root rights - Golem.de .
- At LBX postmortem . Keithp.com, as of 2000 (English), accessed May 31, 2013.