pt. XI: Bling and Compositing

This is the eleventh article in a series on common usability and graphical user interface related terms. On the internet, and especially in forum discussions like we all have here on OSAlert, it is almost certain that in any given discussion, someone will most likely bring up usability and GUI related terms – things like spatial memory, widgets, consistency, Fitts’ Law, and more. The aim of this series is to explain these terms, learn something about their origins, and finally rate their importance in the field of usability and (graphical) user interface design. After a rather long hiatus, this eleventh instalment will focus on bling, desktop effects, and compositing, and what they can contribute to the desktop experience.

What, how, when?

The term “desktop effects” in and of itself is rather meaningless. The world’s ugliest interface, CDE, had a few desktop effects (for instance, during drag and drop operations), but I think few people would think of CDE when talking about desktop effects; they are almost always referring to the various effects provided by a compositing window manager. So, this article won’t be talking about the CDE variant of desktop effects, but the hardware accelerated ones which are currently used in all major operating systems.

Let’s first explain what a compositing window manager actually does. The difference between a compositing window manager and a normal one is that the former outputs to a buffer, where the latter outputs directly on the screen. The benefit of outputting to a buffer and the screen is that you can then perform tricks on the contents of the buffer (fading, translucency, scaling, distorting, contorting, etc.), after which the compositing window manager combines the content of the buffer and the screen into one.

There are 2D as well as 3D compositing window managers. GNOME’s Metacity is an example of a 2D variant, and can aid in for instance translucency effects. However, as soon as you need to do something in the 3rd dimension, you need a 3D compositing engine, which makes use of the power of the video card, either through OpenGL (Quartz Extreme, Compiz Fusion, KWin) or DirectX (DWM).

The first mainstream compositing window manager was Quartz, which was released with Mac OS X 10.0, in 2001. However, it wasn’t until Mac OS X 10.2 that Quartz became hardware accelerated, and turned into Quartz Extreme (Quartz Extreme requires a Radeon or GeForce2 MX video card with at least 16MB of RAM). Desktop effects in Mac OS X today include things like the magic lamp minimise effect and Expose.

Microsoft was working on its own compositing window manager, the Desktop Window Manager, which the company first demonstrated during WinHEC 2003. DWM wouldn’t be released in an official product until Windows Vista in late 2006/early 2007. Interestingly, the Compiz trademark “wobbly windows” were first demonstrated using DWM on Longhorn [1st video]. DWM requires at least a DirectX 9 capable video card, a WDDM driver, Pixel Shader 2.0 support, and support for 32bits per pixel.

My favourite compositing window manager is Compiz Fusion, because it allows an incredible amount of flexibility. The history of compositing on X is a complicated one, as it involved several different projects over the course of a few years, but we can now say that the main two 3D compositing window managers for X are Compiz and KWin (as of version 4.0, still relatively young). Compiz is relatively easy on hardware, and most Ati, NVIDIA, and Intel chipsets will do the job.

Pointless bling, or useful addition?

The controversy, if you can call it such, is that some say that compositing window managers and the effects they facilitate are nothing but useless bling, which add nothing to the desktop experience, and only hog system resources for no apparent reason. I’ve always been strongly opposed to this train of thought, and I believe that compositing window managers are infinitely useful.

We’ll be getting a bit esoteric here, but please bear with me. Traditionally, user interface elements have always been incredibly static. What I mean by that is that they have no “feeling” to them; they’re just lumps of pixels, and have absolutely zero physical qualities. User interface elements are strictly virtual in that they share no characteristics with real-world objects.

Compositing window managers, and Compiz in particular, have changed that. Thanks to these new technologies, user interface elements are slowly gaining more physical qualities, making it easier to interact with them. The best example of this might surprise you: wobbly windows. Wobbly windows is my all-time favourite Compiz plugin because it is The One plugin that turns windows from inanimate, virtual lumps of pixels into actual objects that have real-world properties: they bend and move as you drag them around, just like waving a piece of paper in front of you.

Minimise and maximise effects are also good examples. Before the advent of desktop effects, there was no visual difference between minimising and closing a window, or between maximising and opening a window. Several completely different types of UI behaviour had the exact same visual appearance, which can be confusing. A crude solution to this were minimise effects that used “shrinking boxes”, but that was rather cumbersome.

Now, with minimise effects like the magic lamp or shrink, you not only get a visual clue about where your window is going, but also about what is actually happening. Closing a window now has a different effect than minimising, meaning you have a visual difference between the two; the same applies to opening and maximising.

Compiz’ Cube effect is another good example of turning an inherently virtual and static concept into something more physical. I always hated virtual desktops, because the non-visible desktops simply didn’t really exist anywhere. When you switched from one to another, they just appeared out of nowhere, without any visual cue as to where they came from, or where they went to when you switched away.

The Cube fixed all this. I don’t know who the brilliant mind was who came up with it, but all of a sudden virtual desktops had a place where they existed if they weren’t the currently active desktop. My brain finally had an idea of where they were, turning virtual desktops from something abstract and difficult to grasp into an insanely simple concept that almost anyone will be able to understand.

Lest we forget, there are also a number of useful features provided by compositing window managers that are strictly related to accessibility, such as smooth desktop zoom and negative, which aid people with disabilities in using their computers. Even though functionality like this existed before the advent of compositing, new technologies have made them easier to use and much smoother.

I find it incredibly shortsighted to say that desktop effects are nothing but pointless bling; sure, it may be that you yourself are much more productive with an old-fashioned stacking window manager, but that doesn’t mean everyone is. Compositing aids in making computers easier to use, both for “normal” people and people with disabilities, and therefore, it’s a very useful and welcome addition to the computing landscape.

Why Compiz rules

At the beginning of this article, I stated that Compiz was my favourite compositing window manager. The reason for this preference stems from the openness and configurability of Compiz and its various plugins, which I believe are a must for such a technology.

In general, I am a proponent of keeping software simple, with as few configuration options as possible, and work hard to provide a sane set of defaults. This is usually not a problem because there almost always are several applications that do the same thing, each with a different set of defaults, giving the user enough choice to pick one that he likes.

For something as integrated and important as the window manager, this is not the case. Most users won’t even have a clue as to what a window manager is, and will have to deal with the defaults, because they can’t (easily) switch to an alternative. As such, it makes sense to allow users to configure the way their user interface behaves, and Compiz allows you to do just that. Pick a set of conservative defaults, and provide an intuitive configuration panel for further finetuning.

Of the three main platforms, Compiz is by far the most configurable and open, while DWM and Quartz Extreme are completely static in their configuration. There has been some talk about the possibility of DWM being opened up to third party developers, but for now, it’s still completely closed. This means that of the three major platforms, Linux/X provides its users with the most advanced compositor, simply because you can extend and tailor it to your own needs if you so desire. With the other two, it’s eat it for beat it. Gosh, how I miss wobbly windows and the cube on Windows and Mac OS X.

Of course, that doesn’t mean Compiz is perfect. CompizConfig Settings Manager has improved a great deal already in its lifetime, but it’s still far too complicated to be used by non-geeks. Sadly, many of the alternatives, such as the panel implemented in Ubuntu, are too simple and barely allow for any control. I think the Compiz guys and girls need to work hard on making ccsm more accessible, in such a way that it doesn’t require a degree in physics and geometry to figure out how it works.

I also want to make specific mention of KWin: KWin is also a good technology, and has the advantage of being well integrated into KDE. It also allows for plugins and fine-grained control, but honesty commands me to say that I simply haven’t used it often enough to say anything sane about it.

34 Comments

  1. 2009-04-04 5:24 pm
    • 2009-04-04 5:29 pm
    • 2009-04-04 5:32 pm
    • 2009-04-04 5:37 pm
    • 2009-04-04 6:41 pm
  2. 2009-04-04 5:38 pm
    • 2009-04-06 10:38 am
  3. 2009-04-04 5:42 pm
    • 2009-04-04 6:38 pm
      • 2009-04-04 6:48 pm
    • 2009-04-04 7:26 pm
  4. 2009-04-04 6:25 pm
    • 2009-04-04 6:36 pm
      • 2009-04-04 7:33 pm
  5. 2009-04-04 7:14 pm
    • 2009-04-04 8:08 pm
      • 2009-04-05 8:38 am
    • 2009-04-04 9:31 pm
    • 2009-04-05 7:55 pm
  6. 2009-04-04 7:23 pm
    • 2009-04-04 8:02 pm
    • 2009-04-04 8:21 pm
      • 2009-04-04 8:29 pm
  7. 2009-04-05 3:22 am
    • 2009-04-05 3:39 am
      • 2009-04-05 9:25 am
      • 2009-04-05 9:48 am
        • 2009-04-05 1:51 pm
  8. 2009-04-05 12:16 pm
  9. 2009-04-05 1:15 pm
  10. 2009-04-05 2:21 pm
  11. 2009-04-05 4:03 pm
  12. 2009-04-06 8:10 am
  13. 2009-04-06 9:11 am