Artists' Guide to the Linux Desktop, Part 1
Where KDE and GNOME provide that overall desktop experience, window managers do something a little more basic. They provide the facility which allows you to move your windows around the screen, iconify and maximize them, and kill off those applications which just refuse to go away. Window managers also determine the look of the windows—the borders and title bars, the background images and so forth. The configurable framings you specify for your windows are called themes. It's the pizzazz we talked of earlier. For artists and anyone interested in personalizing their private desktops, the window manager is the focus.
KDE and GNOME provide default window managers: kwm for KDE and Enlightenment (or, more recently, Sawmill) for GNOME. A desktop environment wouldn't be very useful without a window manager. It would, in fact, be almost useless. The relationship between desktop environments and window managers is fairly symbiotic. However, you don't have to use the default window managers provided by these environments. You can run any window manager—and there are several—with either environment. In order to make use of all the underlying features of KDE or GNOME (such as session management), you need to run a window manager which is compliant, and not all window managers are. In fact, very few are fully compliant with either KDE or GNOME, much less with both of them. For this reason, I'll be focusing on three window managers that are compliant with at least one of these environments and which provide support for themes: Enlightenment, Window Maker and AfterStep.
Like their desktop environment counterparts, window managers usually provide extra features which border on being applications on their own. Pagers fit in this category. Whether you use the environment's pager or the window manager's pager depends mostly on choice, although use of the panel in either KDE or GNOME may force you to use their pagers as well. Window managers also provide management of desktop icons. In most cases, this is hidden from the user—you get a graphical tool for specifying where the icons get placed (left side, right side, restricted to a specific region, etc.). In some window managers, you get a visible box for the icons, called the icon box. Enlightenment, for example, uses a very obvious box by default which can be configured to be essentially invisible.
After all this technical jargon, we get to the part which artists will likely love the most—themes. Themes do nothing more than specify the look of backgrounds (on the root window or in any other window), window borders, icons, and in some cases, the applications themselves. It's fluff, but interesting fluff—a personalization of the computer on which you spend so much of your life.
Window managers provide most of the features you need for themes. KDE and GNOME have support for themes, but they do it differently. KDE's default window manager, kwm, supports themes like any other window manager. GNOME gets its support from GTK, the widget set I spoke of earlier. GTK is interesting because it allows you to give the same theme to any application based on it. In other words, GNOME applications, which are generally based on GTK, can all be changed at the same time by changing the GTK theme. This sort of change affects not just the window borders, but the buttons, menus and other visible pieces of an application. KDE, Enlightenment, Window Maker and AfterStep change only the look of window manager features. They don't change the look of application buttons, menus and so forth.
KDE allows you to change the current theme on the fly using its Control Panel. GNOME does too, using its own Control Center. Both of these are accessed from their respective environment's panels. Window Maker, AfterStep and Enlightenment allow you to change the theme on the fly as well by using tools that may or may not be included in their respective standard distributions. You can also change the themes by hand if you're so inclined. However, themes are a relatively new phenomenon, and standardized ways of defining and installing them have not been set. In most cases, you'll want to use the graphical tools for installing the themes. Creating new themes is rather complex and very specific to each environment or window manager. In this series of articles, I'll stick to discussing installing themes. In the future, I'll look into writing about making your own themes, once the process of doing so isn't quite so convoluted.
Since window managers keep less information on running applications than the desktop environments do (via their session management features), they tend to take up less memory. Of course, there are exceptions to every rule. AfterStep has a small memory footprint, but because Enlightenment is so graphics-intensive, it can have a huge footprint. On your desktop, which has a gigabyte of memory so you can work on huge print images in the GIMP, it probably won't matter which window manager you use based on memory usage. But it will make a difference on memory-limited laptops. Memory usage is something to be aware of, depending on where you're working.
A good pager is essential. I don't work with GNOME or KDE (they don't provide features I need right now), so I can choose any window manager. For a long time, I used only FVWM2, specifically because of its pager. The desktops and their pages were displayed as small boxes right on the screen, and I could drag windows from one desktop to another simply by dragging it from the pager into the main screen. The pager also showed the names of the windows (from their title bars), albeit in truncated form. The sizes of the windows in the pager were proportional to their actual sizes in their desktops. Enlightenment now has a very similar pager which I find very attractive in its look and usage. Window Maker, on the other hand, has a pager which is just a button that bounces you around the desktops, but I can't see what's in each of them until I get there. I also can't divide the pager into multiple desktops with multiple pages in each. In Window Maker, I get essentially one page per desktop. Whether you consider this good or bad is a matter of personal taste. What is important is that you consider the pager in the window manager you choose, since you will be using it quite a bit.
On-line help is useful, but only initially. Both desktop environments have on-line help built into them. Enlightenment has its own help system; Window Maker and AfterStep have HTML-based help. The usefulness of this depends on how long it takes you to become familiar with the environment. In my opinion, if you need to refer to the help system for months on end, the system is far too complex and you should consider looking at another window manager.
Now, if we go beyond these basic necessities, we get into the niceties. It would be helpful if your window manager had the ability to add dockable applications. These are sometimes called applets, epplets and various other things (everyone has their own terminology, apparently). It's an application with a very specific function—e.g., monitoring the time you've spent on-line with your ISP—that runs in a small icon or, more commonly, in a panel. You'll want your window manager to provide features which can maximize screen space, too. Things like window shading—rolling a window up into its title bar to hide it, and unrolling it back down again. This reduces the visual clutter of your desktop, but it's certainly not required for the window manager to be useful. A pager that can be hidden would also be nice. Enlightenment provides this, but Window Maker doesn't because its pager doesn't take up as much space as Enlightenment's can. Of course, you'll want theme support. After all, pizzazz is the whole point.
- SUSE LLC's SUSE Manager
- Murat Yener and Onur Dundar's Expert Android Studio (Wrox)
- Managing Linux Using Puppet
- My +1 Sword of Productivity
- Non-Linux FOSS: Caffeine!
- Doing for User Space What We Did for Kernel Space
- Google's SwiftShader Released
- SuperTuxKart 0.9.2 Released
- LiveCode Ltd.'s LiveCode
- Parsing an RSS News Feed with a Bash Script