X Window System
The X Window System (also X Version 11, X11, X) is a network protocol and a software that allows the window to bitmap displays on most Unix-like operating systems and OpenVMS. X11 has been implemented on all common operating systems.
It provides a standard modular and protocol to build a graphical user interface. This includes drawing and moving windows on the screen, as well as treating the user input with a mouse and keyboard. X does not mandate any specific user interface, but leaves that to his client programs. Therefore, may vary in their appearance is very X-based environments. Using Desktop Environments - the best known, mapped KDE, GNOME and Xfce right - is counteracted. End users come on modern Unix desktops with the core programs of the X Window System barely in contact.
Previous Display Logs could only manage built-in or directly connected displays. As an extension to X was specifically designed as a client -server system, which enables not only the local and network attached transparent use.
The X.Org Foundation currently manages the project and issued on 6 June 2012, the version 7.7 of the reference implementation as free software under the MIT license. Another, in the 1990s, widespread implementation is XFree86.
- 4.1 transfer speed
- 4.2 Increased uniformity
X was developed in 1984 in Project Athena in collaboration of MIT, Digital Equipment Corporation and IBM. The first version was created in June 1984, already in 1986, X10.4 distributed for a nominal fee and success, however, was incompatible with the later standard. In September, in 1987 the first version of X11 followed.
In 1988, the popularity grew, the non-profit X Consortium was founded, which took over the further development. It published several versions, the last major was X11R6 1994. Afterwards The Open Group took over the development and standardization. At the same time the free X - implementation XFree86 reached an ever greater awareness and became the de facto standard of the X implementation. 2003 but there were internal to the project and license legal problems in XFree86, which led ultimately to the dissolution of the development team. Under the umbrella of the newly formed thereupon X.Org Foundation henceforth a spin-off of the old XFree86 was developed and performed under the name X.Org server mostly in his footsteps. Since about 2005, he is regarded as the most common X server and thus the most widely used X implementation.
The X server controls the input and output devices, such as, among other pointing device (eg mouse ), keyboard, monitor and graphics card. To this end, he communicates in theory with the operating system kernel, in practice the kernel is also bypassed. The underlying concept is an extension of the terminal concept to graphical user interfaces: A program relies on the graphical input (mouse) and output ( windowing ) to the services of another for specialized program (X- server ), communication is always handled through the network.
The presentation at X is a raster graphics -based window manager, which provides various functions. This includes drawing and moving the window, the event-driven manipulation of a pointing device, such as a mouse, interprocess communication, and partly also the administrative functions for the paper and audio output. X is therefore a minimal system, are provided in the drawing only primitives such as lines, patterns, etc..
The actual appearance and behavior of the window system is therefore not determined by X, but by the window manager, which simply runs as a normal application as the X server client. But for the appearance of the programs themselves, he is not responsible, mostly accepts the so-called toolkit ( a specific component library ), which handles the drawing and managing the typical elements of a graphical user interface such as menus and buttons. See also desktop.
X is built on a client-server model:
- The X server runs on the computer at work and provides its ( graphical ) services the X clients. It contains the graphics card drivers as well as drivers for keyboard, mouse and other input devices (such as graphics tablets ) and communicates with the X client by means of inter-process communication.
- The X client is the application program that uses the graphical input / output services of the X server. It can be on the same or on any remote computer running ( if a network connection exists between them ). The X client uses the services of the X server to obtain a graphical representation and receives from him the various events (events ) such as keystrokes, mouse movements, clicks, etc.
The well-known in the mainframe world, text-based terminal system ( there usually proprietary, such as IBM 5250 and 3270, under Digital's VMS known serial terminals such as VT100 ) had its graphical development for X terminal; a computer on which nothing but an X server is running. This X- terminals are often used to access with low-performance computers to compute-intensive applications: The application itself runs on a server, the X terminal accepts only the display of the graphical interface.
Meanwhile, it has prevailed to rely on standard hardware of PCs instead of having dedicated hardware for X terminals. With this, the functions of X terminals can be implemented inexpensively, for example in the form of thin client.
To enable fast 3D acceleration, represents the X Window System interface Direct Rendering Infrastructure (DRI ) ready to directly access the 3D hardware on the programs. This happens when free drivers by the OpenGL implementation Mesa 3D, in the case of proprietary drivers by each proprietary implementations of OpenGL.
With the help of 3D enhancements like AIGLX and XGL beyond 3D effects are supported on the desktop itself in the X.Org server.
The X system was designed from the outset for efficient network operation. The communication between client and server is running on a standardized protocol that only relatively low transfer rates are required. The source code for the X-system is indeed object-oriented, but still written in C, so that a translation on almost any Unix system is possible. The X system is in contrast to current MS- Windows versions not part of the operating system, so a crash of X usually does not affect its integrity: crashes the X server down or unresponsive, clients can respond and wait, for example, to restart the X server, or (which is most often the case ) finish. Further, the window manager (the " user interface" ), in principle, the same status as an X client: During operation, a window manager to be replaced by another. Even with very small window managers (eg, twm, 140 KB) you can work comfortably.
Due to the sophisticated, hierarchical structure of the system, for example, you can:
- On an X server run multiple computer workstations.
- For development and testing purposes, an X server to run in a window of another X server.
- Run programs on a computer with completely different hardware and software as the operating computer.
The development of X runs on large time scales and with only minor changes compared to the hardware. Compatibility problems do not occur when only standard libraries are used. However, a large part of the X clients used today enhancements like Xft, XVideo, or Xinerama.
The strict separation of the X Window System from the user interface leads to a relatively flexible system, but also can appear very uneven: Since the design of the user interface elements in contrast not to Windows or Mac OS comes out of the set design of the main toolkit, but it different toolkits ( Qt and GTK , among others ) with different characteristics are using different designs, it can happen that each of the used programs shows a different look and feel.
Approaches to improving
There are several approaches to improve the transmission rate:
- Compression of the transmission data,
- Creating a cache for already transmitted data and
- Reducing the influence of the round-trip time between the X client and X server with more efficient programming.
Several projects try to implement these techniques. The XCB library is a revised version of the Xlib library that handles the data traffic between client and server in the X server. In the development of XCB particular emphasis on increased efficiency.
A high level of awareness also has the NX project of the Italian company NoMachine makes possible using a cache and data compression X via modem lines.
In the past, the Low Bandwidth X project by Keith Packard worked in this area. It was meant to create an extension of the X protocol to make its network transparency can also be used for low bandwidths. With the release of LBX was a full extension of the X Protocol X11R6.3 by the X Consortium in December 1996. Since it was never used extensively and could also provide a solution for only part of the problems, the project was declared during the year 2000 by Keith Packard for dead.
Increased consistency was also pursued by several projects. Approaches were the creation of a desktop surface with uniform interface libraries or replacing X by an applied at a higher level system, which included from the beginning a uniform treatment of surface elements. The Fresco project and the Y Window System developed for each solutions in order to implement the second approach, but the projects rest in the day.
Another active approach followed is the attempt to gain through joint guidelines for user interface and behavior of the software uniformity among the various toolkits. This approach is, above all, in the context of the freedesktop.org project, where for example, 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 machines. Since it also was free, it was often used as a mail bomb or at least threatened. "Shall I send you a X11R3 " was therefore on Usenet a running gag to point newbies to misbehavior.