Artists' Guide to the Linux Desktop, Part 1

The first in a series by our favorite artist to take a look at the most commonly used window managers.

A few years ago, I did a four-part series on the GIMP for Linux Journal. Those articles served as the basis for my book, The Artists' Guide to the GIMP, which was published about a year later. I like to write about using Linux from an end-user perspective. Developers are expected to be able to dig and scratch for information. End users need a little more hand-holding. Since the GIMP helped me pretend to be artistic, I tend to approach my writing from what I think an artist might want. In this way, I can show that Linux is more than just a place to dig and scratch. You can actually get real work accomplished here.

In this new series of articles, I'm going to look at the coming of age of the Linux desktop. In particular, I'll talk about window managers. The desktop has not been the strongest arena for Linux. Many users have complained that the desktop is too clunky or lacks basic features. But the problems that have been pointed out simply require time—time for Linux to mature and developers to write code. What Linux currently lacks in basic features, however, it makes up for in pizzazz. The Linux desktop is an extremely personable place to work.

Some might say it's fluff. Others refer to it as eye candy. Call it what you want, the Linux desktop has loads of personality. Window managers are a major part of this, although they should not be mistaken for the entire desktop environment. In fact, this is where we'll start. Just what is the difference between a window manager and a desktop environment?

GNOMEs and Sprockets and Bears, Oh My!

The current buzz in the Linux desktop world focuses on two major players: GNOME and KDE. In nerd parlance, these are desktop environments. GNOME comes to us from Miguel de Icaza, et al. via support from Red Hat, and is based on GTK, the software libraries that are used for the buttons, sliders and so forth you see in GIMP. KDE is based on QT and comes from Matthias Ettrich and the KDE Development Group. Both QT and GTK are known as widget sets. Usually, you use widget sets to build applications, like GIMP or KIllustrator, but GNOME and KDE go beyond just providing applications. They provide infrastructure—underlying rules and guidelines for how applications should look and act. They provide software libraries for allowing applications to communicate with one another. This is how things like drag and drop get implemented. Without GNOME and KDE, dragging a file icon into a wastebasket or onto the printer icon wouldn't be possible.

There are other environments besides GNOME and KDE. The most widely used environment on UNIX systems is probably CDE, the Common Desktop Environment. CDE is based on a commercial package which uses Motif, and is included on just about every major UNIX workstation these days. Versions of CDE are available for Linux, but most people have stuck to either KDE or GNOME because they have lower licensing fees. Motif used to be very expensive, and although its price has dropped considerably, it's still relatively expensive to license for Linux distributors. Since the desktop environment is expected to be part of any OS distribution, Linux distributors had to either charge extra for CDE or work with KDE and GNOME. Their choice was obvious.

KDE and GNOME both offer very similar features. Each provides a panel—a bar along one edge of the screen used to launch applications, show system status and allow embedded applications—and can be used with any compliant window manager. Session managers and CORBA support are less visible than the panel, but are probably more important to users. Session managers allow you to start an application at the same place you left it the last time you used it. CORBA allows for interaction between applications. Session management and CORBA are provided as a set of rules (via programming libraries, if you care about that) applications must follow in order for them to work properly in these environments.

Desktop environments provide the entire desktop experience for the user. This ranges from pagers and drag and drop to standardized applications. Both KDE and GNOME have file managers—graphical interfaces for managing files. Window managers don't usually provide such a tool. Calendars, word processors and spreadsheets are also applications that exist for use with KDE and GNOME, but which are not considered part of those environments; these are just ordinary applications which comply with the rules KDE and GNOME provide for interoperability. Although you'll hear both GNOME and KDE talk about these tools as part of their environments, don't be fooled—you can pick your own spreadsheet application; you don't have to use the ones that come with KDE or GNOME.

One feature that is extremely useful is the pager. The Linux desktop allows you to have off-screen areas you can jump to. These are called virtual desktops, and each desktop often has multiple pages. Essentially, each of these is like an extension of your visible screen—extra screen space with which to work.

Both KDE and GNOME provide their own pagers, as do most window managers. In order for a window manager's pager to work properly in its respective environment, the window manager needs to be compliant with that environment. Fortunately, the window managers we'll be discussing are at least partially compliant in one or both environments.

There are a few other differences between GNOME and KDE. KDE already has a built-in help system, while GNOME just recently released one. GNOME is considered by some users to be a little top-heavy—it can use a lot of memory, for example. It's also less stable than KDE. GNOME, as a project, is about a year younger than KDE, but both have strong development teams working on them. In general, you'll probably be fairly happy with either environment. In fact, if you're like me and don't use drag and drop, file managers or worry about interoperability between applications, you can live without either KDE or GNOME. I don't run either—at least not yet.