Underneath the Linux desktop
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.
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.
|A rather simplified representation of how the display is organized in a modern X desktop environment|