Window Trays idea

This page documents a design idea for GNOME Shell. The idea is to help eradicate the window list and move its desirable functionality within the existing window management design, which helps the user organize windows by their physical position in two dimensions. (Three if you count stacking them, which you will soon).

It could fit nicely with the work being done for breadcrumbs.

In the present (GNOME 2.26), we have the window manager to help the user oragnize windows spatially and by default there is also a window list panel applet that duplicates its functionality into a different kind of layout. The window list is a simple one dimensional list of windows. They can be sorted, and sorting windows on the window list is different from arranging them with the window manager. It has some notable features above the window manager:

  • Windows with the urgent hint appear urgently in the window list, even if they are from different workspaces.
  • Windows can be dragged as in X's Drag and Drop protocol. For example, drag a window from the window list into the workspace switcher.
  • A window can become invisible in Metacity if it is blocked by another. It never becomes invisible in the window list applet.

These points can all be resolved, gracefully, if we approach things a bit differently.

Window Trays mockup, showing a few different situations

Click the image to enlarge. You can also download the original SVG.

The absense of window icons in this mockup is unintentional, although their role could prove less important with the removal of the window list. Also, of course, this mockup absolutely is not intended to look pretty.


Central to the design is an idea that a toplevel window, in the widget sense, should just be the client area as owned and controlled by an application. A title bar is not part of that toplevel and thus nobody but the surrounding environment needs to worry about it. Refreshing, eh? (Yes, I'm glaring at you, Google Chrome...)

In the mockup, we can imagine that the window manager creates handy trays (which I refer to as the usual "title bars" in the picture) that chase windows around as aids to controlling them. They allow the user to quickly manipulate anything and everything related to a window. Right now that's thought of as "close, minimize, maximize." Trays, being not part of a window, act more like really well paid robot butlers. They are unobtrusive and they are always in the right place. They can be told to do something with a snap of the fingers.

Another key philosophy here is that we need to kill the window list (and the notification area) and have just one single, cohesive, edge-to-edge way of managing windows. It's easy to keep track of them spacially, so let's stick with that :)

Projects/GnomeShell/DesignerPlayground/WindowTrays (last edited 2013-11-22 17:00:20 by WilliamJonMcCann)