Logo Computer scientist,
engineer, and educator

Underneath the Linux desktop

2. The X server →

1. Overview

Most modern Linux distributions — and most other Unix-like systems — are supplied with at least one graphical operating environment based on the 'X' (or X11) graphical windowing system. Two major players in this area are Gnome and KDE, bother offering similar facilities as far as the end user is concerned. Both Gnome and KDE are extremely complicated systems with many interoperating components. But an X-based operating enviroment need not be jaw-droppingly complex: as I will show, it's possible to get work done in the X environment with little more than an X server and command line. In practice, however, a modern graphical environment will usually consist of at least the following components, and maybe many more.

1. An X server. This is fundamental — the X server manages the display hardware on behalf of clients (applications)
2. A window manager. This allows users to control the size, position and stacking order of windows on the display
3. A desktop. Typically the desktop will provide some way to launch applications, find and view files, and perform other basic administration tasks.
4. Taskbars and panels. These sit either on top of, or alongside, the desktop window, and provide access to commonly-used administration operations, such as raising a particular application's window, or popping up an menu of operations. In modern practice, the taskbar or panel is usually only a container for the output of other programs, commonly referred to as applets.

The figure below shows how the screen might be partitioned up to be managed by these various software components, but the details vary from one environment to another. Each component will be described in detail in the pages that follow.

A rather simplified representation of how the display is organized in a modern X desktop environment

To use an environment like Gnome you don't really need to know all that much about the X system — Gnome provides a complete set of integrated software which should all work together. If you're happy with Gnome (or KDE, or whatever) as it is, there's no need to fiddle with it. But the great thing about X is that all the components are — in principle — interchangeable. If you understand how the system works you can build a desktop environment that contains only those bits you need, configured to work just the way you want.

The problem is that the components are often not completely interchangeable. At least, they haven't been for the last ten years or so. In practice, the components of Gnome, or KDE, or XFCE, or whatever, are developed and tested side-by-side. Developers usually strive to follow standards, where they exist, but X standards are pretty vague in many areas, and interoperability is rarely high up the test schedule. Moreover, the X system in general is fairly complex and opaque, and often works in the odd way that it does for historical reasons.

In what follows I will be describing each of the software components that make up a typical desktop environment, and how they interact with one another. I have deliberately tried to make the description completely neutral, that is, not based on any particular one of the common environments. I provide practical demonstrations that show how the various desktop bits work when run on their own, and in combination with other components.

2. The X server →

Copyright © 1994-2013 Kevin Boone. Updated Jul 30 2010