pt. VII: CDE

The common sense department

CDE might be lacking in the bling department, but it more than makes up for in the usability department, or, as I like to call it in CDE, the common sense department. CDE has achieved something that no other desktop environment has ever given me: a complete and total dedication to expected behaviour – or, put differently, a complete absence of unexpected behaviour. It is hard to put into words, but when you are using CDE, you are rarely, if ever, surprised by the results of your actions. In addition to that, CDE never goes out and do things without your consent. It does not bother you with pop-ups, (modal) dialog windows, or more of that nonsense. It is focused on just one thing: serving you, The User. CDE will not do things without your full permission, something so many other desktop environments do constantly. Where Explorer, KDE, GNOME, and the Finder are more like cats, CDE is more like a dog. And even though I am a total cat person, I really like CDE for it.

This common sense thing can be seen in various things in CDE. Take those drawers for example: they open on click, and they will only close on another click on the drawer button. In other words, after opening a drawer, the only way to close it is to click the drawer button again, meaning drawers do not close unexpectedly on clicks placed in other windows or on the desktop. To put it differently: the drawers are not modal. You can open a few drawers, focus on some other stuff, and get back to your previously opened drawer. Clicking on an item within a drawer will close it, and this is another one of those expected behaviour things: as soon as you have found what you were looking for, you do not really need the drawer anymore, now, do you?

Another common sense thing are the window frames. Every window is surrounded by a very clear frame, in a contrastive colour for easy identification. This way it also becomes clear that these frames are actually handles for resizing; there are eight resize frames: north, west, south, east, and the four different corners, and they are al separated from one another visually. The corners are for two-way resizing (width and height) and the others for one-way resizing (width or height). In addition, moving a window is done by grabbing the titlebar: the only place any sane graphical user interface should allow for moving.

Inside the window frames we also find the three titlebar buttons: the dash, dot, and square button. The dash button lives in the top-left corner, and it opens the window’s menu. I am not sure exactly what the reasoning is behind using a dash for the menu button, so this is one of the instances where CDE breaks expected behaviour. The dot and square buttons, which live in the top-right corner of each window, make much more sense.

The square button maximises a window to full-screen, and will visually indicate this behaviour by leaving the button pressed as long as you are in a full-screen state. Window frames remain resize handles (why would making a window full screen make them a fixed size? That would be unexpected behaviour!), and when you use the handles to leave full-screen mode, the square button turns to its original, de-pressed state. In other words, the button does not only initiate/leave full-screen operation, it also indicates its state.

The dot button is where it really gets interesting. The dot button minimises a window (as you probably expected), but in contrast to other operating systems, minimising in CDE is actually iconification, one of the three paradigms of managing running applications (and in all honesty, my personal favourite). When you click the dot button on a window, it will turn itself into an icon on the desktop, with a proper label (the label expands on select). This icon can then be manipulated as you would icons on for instance a Mac or Windows desktop: you can move them around and group them. Additionally, since these icons are actually minimised windows, you can perform window management tricks on these icons too: close them, restore them, maximise them, send them to a specific workspace, or send them to all workspaces. It is important to note that CDE does not allow for ‘ordinary’ desktop icons, so you will not have to worry about mixing up normal icons with iconified windows.

This way, you can easily group your iconified windows. Are you doing some massive file management jobs, moving files around various different directories, while also doing some heavy web browsing? Just cluster your iconified file manager windows together, while organising your iconified browser windows somewhere else. Additionally, iconified windows’ locations are persistent, so when you re-iconify a window, it will put its icon in the spot where it was last de-iconified.

Windows are only iconified to the active workspace by default, but you can easily tell it to live on all workspaces. Just click right-click on an iconified window, and tell it to live on all workspaces. The window is now accessible on all workspaces. You can also tell it to live only on workspace 1 and 4, for instance.

Even though CDE also gives you a window list feature (a window which lists all the open windows is included), you will soon adapt to this different way of managing applications. This paradigm will make you look at windows in a different way; they will turn into objects, objects that are either iconified, or de-iconified. There is only one place to manipulate a window: the window itself, be it in an iconified or a de-iconified state. This ties all the window manipulation tools to the window itself, which makes a lot more sense than having window manipulation tools and on the window itself, and in a taskbar or dock, far away from the actual object itself.

Another important aspect of CDE is the magical word “consistency”. CDE is highly consistent (as long as you avoid the slow Java-based applications Sun ships with Solaris 9); it uses only only one theme with only a few colours (grey, greyer, and ‘Solaris purple’), and buttons are re-used in different places only there where they do exactly the same thing. The dash and dot buttons on the dock do exactly the same thing to the dock as they do to windows (yes, you can actually iconify the dock). This consistency also stems from the fact that CDE is so spartan: it has few GUI elements that could actually be inconsistent.

The file manager also does some nice tricks. First off, it has a breadcrumb bar, something modern graphical user interfaces only recently got the hang of. Another interesting detail is the way the file manager marks the currently selected file: it simply puts a clearly visible and thick line around the icon and label, in ‘Solaris purple’. This might not be as flashy as nice grey overlays or colourisation effects, but it is so much more effective. In the file manager, we also encounter another flashy effect: dragging and dropping sports some cool animations. It’s like Compiz 1991 style, dude.

My final remark is about modes: in all my time of using CDE, I have never encountered a modal dialog. Dialogs are quite rare in CDE anyway, but if you do encounter one, you can just ignore it, and continue to use its parent application, completing your current ask, before dealing with the dialog. Sanity!


In this article, I only highlighted a few of the usability ideas that I like about using CDE. These ideas will not appeal to everyone, especially not in these days of the-more-bling-the-better, but for anyone interested in how a well-thought out interface would work, without making concessions to popular demand or flashiness, CDE is the environment to check out. CDE made me realise just how much KDE, GNOME, Windows, and OS X suck.

Sadly, there really is not a modern equivalent of CDE that you could use on your Linux box. Even though Xfce used to be based on CDE, this is definitely not the case any more. Xfce has chosen its own path, and also made quite a few concessions to appeal to a wider audience. Do not get me wrong, this is their prerogative, and I certainly applaud their efforts, but it does mean that the well thought out world of CDE will slowly sink even more into insignificance. I would die for a modern, up-to-date edition of CDE, available on Linux; sadly, seeing CDE is closed-source, this will not happen any time soon.

You can bet your behind that I am taking quite a few clues from the Common Desktop Environment to incorporate them into my Grow project – CDE is not my pet desktop environment for nothing. Its apparent lack of modal dialogs will be one thing that will make its way into Grow, as well as the resize/move rules.

If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.


  1. 2007-11-25 11:16 pm
  2. 2007-11-25 11:22 pm
    • 2007-11-26 8:45 am
  3. 2007-11-25 11:36 pm
    • 2007-11-26 2:24 am
    • 2007-11-26 6:22 pm
      • 2007-11-26 6:31 pm
  4. 2007-11-25 11:56 pm
    • 2007-11-26 6:19 am
      • 2007-11-26 4:39 pm
        • 2007-11-26 6:09 pm
  5. 2007-11-26 12:55 am
    • 2007-11-26 1:09 am
      • 2007-11-26 1:29 am
        • 2007-11-26 1:41 am
        • 2007-11-26 4:25 am
      • 2007-11-26 6:34 am
  6. 2007-11-26 1:13 am
    • 2007-11-26 6:23 am
    • 2007-11-28 7:07 pm
  7. 2007-11-26 1:28 am
  8. 2007-11-26 3:56 am
    • 2007-11-30 10:27 am
  9. 2007-11-26 4:19 am
  10. 2007-11-26 4:44 am
    • 2007-11-26 6:26 am
  11. 2007-11-26 5:44 am
    • 2007-11-26 11:46 am
    • 2007-11-26 9:08 pm
  12. 2007-11-26 6:57 am
  13. 2007-11-26 8:14 am
    • 2007-11-26 11:17 am
  14. 2007-11-26 8:47 am
    • 2007-11-26 4:42 pm
  15. 2007-11-26 10:08 am
  16. 2007-11-26 11:21 am
    • 2007-11-26 12:03 pm
      • 2007-11-26 1:18 pm
      • 2007-11-26 7:54 pm
        • 2007-11-26 9:03 pm
          • 2007-11-27 2:56 pm
  17. 2007-11-26 11:41 am
  18. 2007-11-26 12:02 pm
  19. 2007-11-26 3:08 pm
  20. 2007-11-26 4:18 pm
  21. 2007-11-26 4:31 pm
  22. 2007-11-26 7:33 pm
  23. 2007-11-27 1:36 am
  24. 2007-11-27 7:12 am
  25. 2007-11-27 4:08 pm
  26. 2007-11-28 1:53 pm
  27. 2007-11-28 4:32 pm
  28. 2007-11-28 7:02 pm
  29. 2007-11-29 8:20 am
  30. 2007-11-29 8:21 am
  31. 2007-11-29 4:55 pm
  32. 2007-11-30 12:53 am