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

10 reasons why CIOs should consider open source software

A recent survey shows 78 percent of companies run part or all of their operations on open source software. Indeed, open source continues to gain market traction as more companies adopt open technology to speed innovation, disrupt industries and improve overall productivity. Those who remain hesitant about adopting open source are in danger of being left behind. Because open source architecture lends itself to more frequent updates, and because of the openness, open source provides the freedom to innovate and mature in the way that enterprises need. Read more

LXLE: A Linux distro to give new life to old hardware

I’ll bet that somewhere, perhaps at home and most likely at work, you’ve got some old hardware lying around. What to do with it? It still works but what’s it running? Windows XP? Vista? Windows 7 Starter or Home Basic? Yep, you’re stuck on some old version of Windows but moving that machine up to a newer version of Windows could be tricky ‘cause one or more of those old graphics cards and printer drivers have probably have fallen out of the update cycle. Even if those subsystems are still available, you’ll still have a problem as the newer OSs' are pretty much guaranteed to suck the life out of old processors with the result that performance and therefore usability will be marginal at best. So, what to do? Before you start looking for a deal on a new machine and an e-waste disposal site, consider moving to Linux and, most specifically, consider migrating to LXLE, the LXDE eXtra Luxury Edition (though some people also claim it stands for Lubuntu Extra Life Extension). Read more

FreeBSD 11.0 Comes Up Short In Ubuntu 16.04 vs. macOS Sierra Benchmarks

Yesterday I published some macOS 10.2 vs. Ubuntu 16.04 LTS benchmarks from a Mac Mini and MacBook Air systems. For those curious if BSDs can outperform macOS Sierra on Apple hardware, I tested the MacBook Air with FreeBSD 11.0 compared to the Linux and macOS results on that Core i5 system. Here are those results. Read more

TDF Releases Fresh Update to LibreOffice 5.2

The Document Foundation today announced the availability of LibreOffice 5.2.2, the second update to the "fresh" 5.2 family. "LibreOffice 5.2.2, targeted at technology enthusiasts, early adopters and power users, provides a number of fixes over the major release announced in August." These fixes include the usual number of import/export/filter fixes as well as a lot of interface adjustments and a few crashes. One of the more interesting import bugs fixed had first been reported 4 1/2 years ago. In version 3.5.0 when importing RTF files with several tables the formatting isn't retained in all cases. The original reporter said this included column widths and placement. Comments updated the report throughout several versions on various systems. The bug sat for another year before being bumped and eight months later a patch was committed. After further input and more adjustments, Miklos Vajna committed patches for several versions including today's 5.2.2. Read more