I mentioned in a recent posting that I’ve worked my way through quite a lot of window managers in my time, and that the dull but functional Metacity has been my steady friend for seven or eight years now.
The recent acquisition of powerful new hardware inspired me to read up on what modern desktops can now do, given a fast GPU and lots of video RAM. It didn’t take long before I was reading about Compiz.
Actually, I’d heard of Compiz a few years ago, but knew no more about it than that it was a compositing window manager. And that’s all I needed to know at the time, because my video hardware from 2003 would have been instantly brought to its knees by Compiz.
Now, however, I have a machine that is more than a match for what Compiz can throw at it. Inspired by what I’d read and the accompanying screenshots, I installed the necessary packages and fired it up.
At first sight, not much had changed. Everything looked the same, from the title bars of the windows down to the look of the context menu that appeared when I right-clicked on those bars. That’s because my existing GNOME theme was still being applied. Compiz really does just manage the behaviour of the desktop and its windows. Window styling is handled by a window decorator, of which there are a few. I’ll get back to this later.
There’s a lot to configure with Compiz. Be prepared to lose several hours in your first session with it. The way it looks and behaves can be radically altered, so that no two systems running a Compiz desktop need look anything like one another.
Compiz on its own doesn’t do very much. It relies on an architecture of plug-ins to achieve its multitude of effects. One very common such plug-in is that of the Desktop Cube.
Linux users will typically configure their desktop to comprise a number of virtual desktops. The physical monitor can be thought of in this context as a sliding window, displaying only one of those virtual desktops at any one time. My physical desktop, for example, measures 3940×1200, but I have four virtual desktops configured in a single row, which gives me a virtual desktop size of 15760×1200. I could have configured those four desktops to be a 2×2 grid, which would have given me a 7880×2400 desktop. You switch from one virtual desktop to another with a key or mouse combination, which makes it convenient to use each desktop for a different kind of application. You might use one desktop for general work, for example, another for graphics work, another for programming and yet another for music.
That’s how things have been in the UNIX world for a long time. It’s crippling to have to use a computer with no virtual desktop configured. Everything feels impossibly cramped, as if you’ve suddenly had to move all of your belongings into a single room in your house.
Compiz’s Desktop Cube plug-in adds to this facility the notion of a third dimension. Now, I can turn my row of four virtual desktops into the side faces of a cube, adding a photo of my children on the top and bottom faces, for aesthetic purposes. I can still navigate to any particular desktop with the same key combination as before, but now I can also zoom out and get an overview of the whole cube from somewhere in the desktop cosmos with updates to each face in real time. Adding the Rotate plug-in, I can rotate the cube in any direction to view it from any angle. I know it sounds bizarre, but in this way, you can angle the cube such that you can easily see the progress of applications on two different desktops.
If you configure your cube with some degree of transparency, you can even peer through the foreground faces to see what’s happening on the opposing faces, albeit the mirror image of them (because you’re viewing them from behind, as it were), but that’s stretching practicality. It’s better to just rotate the cube 180°.
The fun doesn’t end there, of course. You can configure the Cube Reflection and Deformation plug-in. The reflection part make it appear as if your cube is hovering above shiny glass, whilst the deformation part allows you to turn your cube into a sphere, a cylinder or an oval. I prefer the delineated regularity of a cube, however, as it makes it obvious which desktop each application is on. Conceptually, I find it difficult to think of my configuration of virtual desktops as anything other than a grid of flat surfaces.
Anyway, a picture’s worth a thousand words, so here’s a shot of my cube. You’ll notice there are actually two cubes, one for each of my monitors. Although my monitors are configured to each show half of the physical desktop, I opt for multiple desktop cubes here, because the alternative is a ten-sided cube instead of six, on account of the extra four side faces that have to be squeezed onto a single cube. It’s more logical to me, when zoomed out, to be looking at one cube per monitor, each of which displays the desktops available on that side of the monitor. Clearly, the concept of a cube needs to be taken figuratively when configuring Desktop Cube.
Hopefully, that makes things a little clearer. Here, you can see my general work area, including mutt mail client, on the left-most face of the first cube. On the second face, you can see the Sonos Desktop Controller, running under WINE.
On the second cube, the first face has MythTV is playing the local news on AT5, whilst the second has the latest build of Chromium open at Google Reader.
I want to demonstrate one more plug-in, called Expo. Expo allows you to zoom out on an unfurled representation of your cube. You can unfold your cube using just the Desktop Cube plug-in, too, but you’ll see only as many faces as fit on your display. With Expo, all of your desktops are displayed in a scaled fashion and updated in real time. You can then double-click one to go to whichever desktop you want. Where Expo‘s unfurled cube really beats the standard unfolded Desktop Cube, however, is that you can even drag windows from one virtual desktop to the other.
Again, it’s easier to show you a pciture of Expo in action:
Desktop Cube and Expo are just two of the dozens of plug-ins available to Compiz. Others include Animations, which will allow you, amongst other things, to see your windows disappear in a blaze of flames when you close them. Wobbly Windows will give you windows that do just that: wobble and stretch when you drag them.
What Compiz is to desktop and window behaviour, Emerald is to styling your windows. Using Emerald, you can make your title bars, borders and buttons look any way you want. I won’t go into the details here, because it’s much more rewarding to just try it out, but my window title bars now have six buttons, including buttons for rolling up the window like a blind, making the window stay on top of others and making the window visible across all virtual desktops. The widgets even pulsate when the mouse cursor is held over them.
It’s a common misconception that, if one likes what the Americans call eye-candy, superfluous fluff that eats RAM and CPU time, but is nevertheless visually appealing, one has to run MacOS X or even Windows 7. What’s possible on those operating systems pales, however, in comparison with Compiz. If you pair Compiz with Emerald, you have a degree of configuration at your fingertips that can render your computer unusable by anyone else but you (or even including you, if you’re not a little cautious).
That’s actually no coincidence and therein lies a key reason why free desktops triumph over closed desktops. At the end of the day, Apple and Microsoft want a computer running their desktop to be instantly recognisable, no matter how it has been configured. That’s why they don’t allow you to stray too far from the default, even if you change everything that they allow you to.
Using a free desktop, on the other hand, the world is your oyster. You can choose any desktop environment, such as KDE or GNOME. You can then apply any window manager you want, of which there are dozens. Add a window decorator to the mix, with more themes than you can shake a stick at, and you have the ability to make your desktop look unlike any other.
The major downside of this flexibility is that other people’s computers become very awkward to use, to the point of feeling utterly impractical, because their behaviour is so far removed from what I’m used to. Just having to click on a window to raise it above others is an unacceptable inconvenience when you haven’t had to do so for fifteen years. Similarly, why do I have to hit Ctrl-C in Windows to copy data to the clipboard? I’ve already highlighted what I want to copy, so why doesn’t just the act of highlighting it make the system copy the data in question to the clipboard for me? After so many years of wondering that, the question is almost rhetorical at this point.
Another downside is that the lack of brand recognition that this degree of configuration flexibility provides is part of the reason that domination of the desktop by Linux hasn’t happened as some people expected it to. The Linux desktop has no ubiquitously recognisable face, nor can it be assumed that any two Linux desktops can even be operated by applying the same assumptions regarding keyboard and mouse behaviour.
These downsides are mere annoyances, however, compared to the alternative of surrendering the power to mould your desktop to your needs.