Tuesday, August 02, 2005

A discourse on GUI layers

Over the last few years, we've seen the Mozilla family of browers [1] evolve into feature-rich, usability-oriented browsers, especially with the new concepts of tabs and extensions, the latter allowing, amongst other things, new side pane applications.

This differs markedly from the traditional "one app, one function" mantra of the Unix community, although there are parallels with the history of the editor Emacs, which some say is now an operating system in itself. (Someone is bound to remark that Firefox is not primarily a Unix application, neither one with a strong Unix history, but - read again - I wasn't saying that!)

From a Linux perspective, it may seem like a mistake to embark on including tab functionality within the application rather than contributing to existing window manager projects that allow tabbing. Will the Linux community thus come to suffer from a Windows legacy in Firefox?

Secondly, the idea of side panes can also seem short-sighted under the same considerations. While some side panes provide functionality that is clearly part of the browser, others do not, and other parts of Firefox that could fall under the side pane paradigm are not implemented in that way: for instance, the download window.

A compromise would be to rebuild the framework such that the user could decide whether a given app should run in the sidebar or an external window. However, the main browser window menu does not interact with sidebar content except to determine what should be shown in the sidebar. Hence, the sidebar could always be a separate window that the window manager could be instructed to always place next to the browser. The simplest way to deal with switching between different sidebar views, e.g. history and bookmarks, would be to simply spawn a new window. Hence, different sidebar windows could be shown as tabbed.

I conclude that having "Downloads" as a separate window is a step in the right direction, and that this should be applied to all extensions. The focus must then be on contributing to a window manager that supports the above features. The one I am thinking of is Ion [2]; there may be others with similar features.

The fundamental problem is that there are three layers: virtual desktops, windows and elements within windows (e.g. sidebar vs. main pane), and this affects the generality of Alt+Tab, leaving aside for a moment the question whether we really need three layers anyway.

Multi-window apps like the Gimp (before version 2.0) are difficult to manage in some existing tabbed window managers because there is no one-to-one mapping of processes to windows. In addition to this, it must be possible to identify the function of a process (e.g. download window vs. main window) - I'm not sure what the functionality sysfs provides in this regard. (I should check whether there is one-to-one mapping in KDE, although process names are even less helpful there!)

So let's go back to the question, how do users use the outermost layer, the ability to have several desktops? To (a) group apps by current activity, (b) have less clutter over the desktop (minimising windows has a similar effect, although the effect varies according to how your taskbar is set up, if any) and perhaps originally, to (c) always have one virtual desktop where one actually had access to the files represented on the desktop. Now, compare this to what Exposé can do:
1) group windows by apps (c.f. (a))
2) unclutter windows (c.f. (b))
3) provide a clear view of the desktop (c.f. (c))

So window handling in Mac OS X makes a huge amount of sense, although typically, Mac OS X apps have only a single kind of window, and the use of sidebars is favoured. Note also that Safari includes tabs, so even Mac OS X certainly still deviates from a purist ideal.

[1] Mozilla, Firefox, Epiphany, Galeon, Camino, ...
[2] http://modeemi.cs.tut.fi/~tuomov/ion/intro.html

My original posts on this were made on and after Jul Wed 6th 2005:
http://forums.mozillazine.org/viewtopic.php?p=1585763
http://www.linuxquestions.org/questions/showthread.php?s=&threadid=340583
http://www.linuxforen.de/forums/showthread.php?t=188370 (in German)

tags:, , , , , , ,, , ,,

No comments: