Language Selection

English French German Italian Portuguese Spanish

X Factor - understanding the X window system

Filed under

X was originally created in the mid-80s by a research group from MIT. Its goal was to create a windowing system quite unlike any that had been conceived before. Thus X's design differs greatly from that of other windowing systems, having designed-in support for many elements which are unique ­ features which in fact are nowadays often being hacked into other windowing systems.

More often than not, such attempts are kludgy and don't work well, because they lack the ground-up desig X offers.

X went through a number of iterations because the original releases were not under a copyleft license. Every Unix developer created his own version, usually only modifying small parts, resulting in divergence into many incompatible versions, most of which fell under proprietary licences.

As a result, a standards body was eventually created to oversee the development of X. This body, known as the X Consortium, includes amongt its members IBM, Hewlett Packard and even Microsoft.

The X server has two important functions. Firstly, it speaks to the hardware; this means the X server needs to contain the driver for your graphics card, mouse, keyboard etc. Secondly, it speaks to X clients (every X program, from xterm to is an X client). Thus no X client ever talks directly to the hardware.

The most common channel is Unix Domain Sockets (UDS, a very fast mechanism for interprocess communication on Unix) which provides the highest speeds for local usage (for example where the X server and X clients are on the same machine). However it can also run over several network protocols, such as TCP/IP, allowing you to use your local X server to run a program on a distant machine over the Internet.

Luckily, working directly with the X protocol is seldom needed because X also provides xlib. Xlib is essentially a library of standard X tasks, such as basic drawing primitives and event handling. Xlib is written in C (with wrappers to many languages) and it in turn speaks to the X protocol for you. Xlib takes care of the low-level detail part of using the X protocol, such as establishing a connection over the appropriate channel and talking to the server.

Today the two most important widget sets in the Linux world are GTK and QT respectively. Their importance is greatly enhanced by the fact that these are the two toolkits on which the Gnome and KDE desktops are respectively built. Many other widget sets exist, and although none are as feature-rich as GTK or QT, they are still often used.

The two most important desktop environments today are of course KDE and Gnome, as most new Linux applications are built for one or the other. Currently KDE and Gnome basically match each other for features and which one a user prefers tend to be a matter of taste rather than a technical decision. Almost all Linux users use one of these two. Old-time Unix users and programmers often shun them however, preferring minimalist desktops.

Full Article.

More in Tux Machines

FreeBSD 10.3 Now In Beta

FreeBSD developers have released today their first official development media for the upcoming FreeBSD 10.3. FreeBSD 10.3 Beta 1 is now available from their FTP server. Read more

today's leftovers

Leftovers: Software

  • An intro to git gui
    I have been using git for years now, I think I can say I know the tool quite well, yet I do all my commits with git gui. This often surprises my coworkers because a) it looks a bit ugly and b) it's a graphical application! The horror!
  • 15 years of VLC and VideoLAN
    Technically, today is the 15th anniversary of the relicensing of all the VideoLAN software to the GPL license, as agreed by the École Centrale Paris, on February 1st, 2001.
  • LiVES Video Editor 2.6.0 Version Released For Ubuntu/Linux Mint Via PPA
    As you know there are plenty of video editors available for other operating systems (Mac, Windows) but there isn't lack of best video editors for Unix/Linux and support wide variety of architecture (x86, amd64, x86_64, i64, sparc, hppa, ppc and xbox/x86.) but using the PPA you can only install for x86/x86_64/amd64 architectures. If you are into video editing and looking for open-source and free alternative for yourself then here is great video editing program "LiVES" for you. LiVES is an awesome, very simple, powerful video editor and VJ tool exist for Linux operating system. Using LiVES video editor you can combine realtime and rendered effects, streams and multiple video/audio files, and then encode to over 50 formats. It is small in size, yet it has many advanced features. LiVES is part editor, part VJ tool. It is fully extendable through open standard RFX plugin scripts.
  • Firejail 0.9.38 Release Announcement
    We are happy to announce the release of Firejail version 0.9.38 (download). Firejail is a generic Linux namespaces security sandbox, capable of running graphic interface programs as well as server programs. The project went through an external security audit, and several SUID-releated problems have been found. Please update your software.

Kernel Space: Linux, Graphics