This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

Rationale

The FreeDesktop window manager specification defines several types of window that window managers should understand, and Metacity largely supports these. However, the surfeit of extra flags for window behavior, the lack of a type for progress windows, and Metacity's current presentation of the other types, combine to produce windows with redundant controls and behavior that is unnecessarily difficult to predict by looking at them. This can be resolved by clearly defining distinct appearance and behavior of each type of window, to make the interface simpler, more understandable, and more efficient.

Design

How window types work currently

Proposal for obvious window types

Distinguishing marks

Behavior

Title bar

Close

Maximize

Minimize

Modal

Alt+Tabbable

Window switcher

Panel

no

no

no

no

no

no

no

Floats above all other windows (except utility windows with no parent, e.g. an IME used to type into a Launcher's text field). Examples: gnome-panel, gnome-launch-box.

Alert

Yes

no

no

no

yes, unless parent is root window

takes the place of the parent (unless parent is the root window)

no, unless parent is the root window

A necessary interruption to your work. The only kind of window that, when it opens, automatically causes a window switcher button to throb.

Dialog

Yes

no

no

no

yes, unless parent is root window

takes the place of the parent (unless parent is the root window)

no (unless parent is the root window)

Prompts for further information about something you asked for. Closable using the "Cancel" button or at least one other button present (e.g. "Print").

Progress window

Yes

no

no

Yes

no

Yes

Yes

Embodies a slow non-user activity and displays its progress. When the action stops, the window closes; if the window is closable manually (using a "Cancel"/"Stop" button), the action stops. Examples: file copying progress, splash screens.

Normal window

Yes

Yes

Yes

Yes

no

Yes

Yes

General-purpose. Appropriate for preferences windows, assistants (a.k.a. wizards), games, accessories, and any window that displays multiple documents (e.g. an e-mail client's main window).

File window

Yes

Yes

Yes

Yes

no

Yes

Yes

Embodies a single document, folder, or device: e.g. a folder in Nautilus, or a note in Tomboy. Visibly differs from a normal window only in that its title bar contains a draggable icon representing the document. (To be implemented later.)

Utility

Mini

Yes

no

Yes

no

Yes, but only when starting from its parent or sibling (unless it has none)

Only if minimized

Functionally equivalent to a standard window, except that it floats above its parent, and is open/reopened only when its parent (or any of its parent's utility windows) is focused. (If a utility window has no parent, e.g. an IME window, it floats above all other windows, including other utility windows.) Appropriate for toolboxes, formatting palettes, and Find/Change windows.

When any utility windows are open, the most-recently-focused non-utility window comes first in the Alt+Tab cycle (this avoids interfering with rapid Alt+Tabbing between two non-utility windows), followed by all the open utility windows in order of recency, followed by the second-most-recently-focused non-utility window, the third-most-recently-focused non-utility window, and so on.

Visual design

  1. Titles that are centered, but don't look centered, look bad.

  2. Title bar buttons that never do anything also look bad. A control should only be present at all if it can ever become available.

  3. The reason Mac OS X and Windows title bars sometimes include buttons that don't do anything is that they don't want to disturb the usual position of each title bar button -- it would be bad for the Minimize button to appear where the Close button usually is, for example -- and nor do they want strange gaps apearing in the title bar. At least, that's the reason Mac OS X does this; Windows sometimes puts buttons in the wrong place regardless.

  4. A close button that's right next to a much less consequential button is unnecessarily dangerous.

With careful positioning, we can avoid all four of these problems at once.

How do we get there?

  1. Update the HIG to recommend use of _NET_WM_WINDOW_TYPE_NORMAL for preferences windows.
  2. Recommend that in the wm-spec, _NET_WM_WINDOW_TYPE_TOOLBAR be deprecated in favor of _NET_WM_WINDOW_TYPE_UTILITY.
  3. Introduce _NET_WM_WINDOW_TYPE_PROGRESS for progress windows. See if it works (maybe try it in Nautilus).
  4. Recommend the introduction of _NET_WM_WINDOW_TYPE_PROGRESS to the wm-spec.
  5. Update the HIG to recommend use of _NET_WM_WINDOW_TYPE_PROGRESS for progress windows.
  6. Remove close buttons (and the Alt+F4 keyboard combo) from alerts and dialogs, but leave the "Close" menu item in place (for a couple of years?) as a last resort. (Perhaps remove the button+combo during development of one release, like "fatal-criticals" in 2.14, then after that release hide it permanently?) Patch the hurt apps.

    • In GNOME, many instant-apply windows have redundant "Close" buttons, and also declare themselves to be dialogs. Fortuitously, these two mistakes cancel each other out. When close buttons are removed from dialog title bars, the "Close" buttons will still be available in these windows until they are fixed to be normal windows.
  7. Ignore several of the _NET_WM_STATEs, for greater predictability:...

Implementation

Unresolved issues


2024-10-23 11:37