Fans of Linux have long touted the multiple-desktop capabilities of the innumerable X11 Windows Managers as one of the most important interface elements since the window. In fact, it seems as though an X11 window manager isn't even considered for prime-time until multiple-desktop support is complete. In fact, when Be came out with their alternative to the Mac OS so many years ago, one of advantages that was frequently cited was the multiple-desktop support that it came with.
In effect, multiple -- or "virtual", as they're sometimes called -- desktops, create multiple groups in which to place windows, so that users can, in theory, group their windows by task, or by application, or by whatever they want. In addition, most multiple-desktop environments include a tool called a "pager", which gives users a miniature view of each of their desktops, so that they can access their other desktops, and drag windows between each desktop.
Now multiple desktops may sound great in theory, and everyone I know seems to love it in practice. Everyone, that is, except for me. All of my co-workers use nine desktops, with one desktop bound to each number on their numeric keypad. But me, I have blackbox configured with two desktops -- one of them for all my stuff, and the other to quickly switch to when I don't want someone looking over my shoulder, or when I need to let someone borrow my terminal.
The problem I have with multiple desktops are the same problems I have Microsoft's stupid MDI "innovation". You see, I want all of my information in front of me if I so choose, and I frequently want to look at information in several applications at once. Both MDI and multiple desktops require much more window management for me to quickly get at my information than a single desktop approach, and both keep me from my information.
So there are four conventional approaches to windowing/desktoping:
- Single desktop, Single window: such as Mac OS X (once they fix the problems with documencentricity). With methods like minimize or windowshade, it's possible to get windows out of the way to view information in the background when so desired. Best current compromise in my mind.
- Single desktop, multiple document interface: such as many windows applications. Limits user to a single application of information. Impossible to view information from any other application in parallel with the current application.
- Multiple desktops, single window: such as most X11 window managers. With features such as "stick window" to make a window appear on all desktops, it's possible to view information from multiple windows simultaneously, but it requires more work, in my opinion. A pretty good alternative, but less convenient for the forgetful, and harder to initially understand for the new user.
- Multiple desktops, multiple document interface: This is the absolute worst possible combination possible, because the parent window has to be moved to move any of the child windows. Unfortunately, the MDI choice is left up to the application writer (except on the Mac, where it's thankfully impossible), and writers of Linux software, in their complete failure to understand interfaces, are tending towards MDI, "because Microsoft did it". (Despite the fact that even Microsoft has stopped doing it, for good or bad.)
Speaking of Mac OS X and broken window behavior, I recently submitted feedback to Apple that there should be more options for managing windows now that they aren't managed at an application level (as they were in OS 9). Notably, I suggested a "send to back" feature, to balance out the very annoying "bring to front" behavior that an accidental click on my bottom-most window has.
Today I was playing with the new office scanner and using Photoshop, when it occurred to me what the logical conclusion of a "send window to back" feature was. Window Layers.
First, a run down of the features:
- The ability to create an arbitrary number of layers, and any given window can be assigned to any given layer.
- The layers can be arbitrarily ordered, with "send backwards" and "send to back" menu commands, while "bring to front" and "bring forward" are handled by a single click and a control-click (of shift-click or whatever) respectively.
- Layers can be hidden.
- Arbitrary colors could be associated with layers, with the title bar of a window in a layer being tinted to that color.
- It'd be possible to specify that every application automatically gets it's own layer.
- Apple has to fix their windowing implementation anyway, so while they're doing it, they might as well give us more than we've ever had.
- And with these features, all the hooks would be in place for an enterprising software developer to develop fancy little layer controls, and even fully emulate the behavior of classic multiple-desktops.
Now the merits of this idea:
- All of a users data is visible on one screen, unless they've hidden it.
- Mac users are already familiar with window layers. They're just used to them being grouped by application, rather than arbitrarily.
- Mac users are already familiar with layers. I got the idea for layers from Photoshop, and more than a few Mac users are familiar with Photoshop, thanks to the huge popularity of Macs in graphics works.
- Layers can emulate the old Mac OS application-centric windowing style, or multiple-desktop windowing style, or a number of other windowing styles, while providing new features which have never been available in any windowing system I've ever used.
- Layers don't require users trying to figure out what multiple-desktops do to their actual desktop. You see, to a Mac user (and to a lot of Windows users, too), their Desktop is their castle. They put their files on their desktop, and they set a desktop image, and they expect things to stay that way. Trying to implement traditional unix multiple desktops on either of these systems would be problematic because of this issue: When they change desktops, would all their files and desktop image stay there? If so, then wouldn't it look like all their windows had vanished instead? And if they get a whole new desktop to mess up, then that just gives them a ton of room to lose files in.
And then there are flaws with the idea:
- The biggest that I can think of is that visual cues of which windows belong to which layers would be hard to distinguish. Color is nice, but it doesn't work for everyone. OS X could emboss some sort of name over each window, but that might obscure information, which is the whole point of this idea.
- It's probably more power than your average web browsing, e-mail writing home user has anything to do with.
Do I think this will ever happen? No. But a guy can dream, can't he? And if you think something like this is a good idea, then you should send some feedback to Apple saying so, like I just did again (though they're probably tired of hearing from me by now, and are automatically deleting my feedback =).