A window manager can provide windows with a window frame that contains components called decorations. The window decorations allow user interaction with the window manager. Along with the frame components, a window manager contains a client area. The client area is the display area for an application. A typical window and its decorations are shown below.
A window manager can support any number of window decorations, but it must support the client area and the window frame. A window manager must support the following window frame components:
Each window must have a client area. A window manager must allow each window to choose which combination of decorations to include, except that a window must not have any buttons without a title area. A primary window must by default have all the decorations: window Menu button, maximize button, minimize button, title area, and resize border. A secondary window must by default have a window Menu button and title area. In a secondary window, resize borders and a maximize button can be provided if there is a reason to resize the window.
Clicking BSelect
on the window frame should give the window focus and raise the window
to the top of the window hierarchy, except when dialog modality
disallows focus to be set in the window.
Client Area
The client area is the portion of the window in which the user
performs most application-level tasks. For example, if the user is
working with a graphics editor or a text editor, the client area
contains the figure or document being edited. The client area is
inside the window frame and can be composed of multiple work areas.
Title Area
The title area, also called the title bar, supplies a place to identify the window. If a window includes a title area, it must be a horizontal bar at the top of the window. It must be just above the client area and lie horizontally between the window Menu (or other buttons) on the left and the window control buttons on the right.
The title area should contain a short string called the title that labels the contents of the window. The title must be settable at window startup both by the user and by the application. For applications with a single primary window, the title should be the name of the application. For applications with multiple primary windows, the title should indicate the purpose of the window. The title in secondary windows should indicate the purpose of the window. The title can also contain other useful information, such as the machine on which the application is running, the current directory, or similar relatively static information.
Besides supplying a location for a label, the title area also acts
as a position, or handle, for moving a window. Pressing BSelect
or BTransfer
in the title area and dragging the pointer must move the window
relative to the moving pointer.
Maximize Button
The maximize button provides mouse users with a shortcut to the Maximize entry in the window Menu. If a window includes a maximize button, it must be just above the client area and its right border must align with the right border of the client area. Primary windows should have a maximize button. Secondary windows generally do not have a maximize button.
The graphic in the maximize button should be a large square or an
up arrow. If the maximize button uses an up arrow as its graphic, a
maximized window should use a double-headed arrow to indicate that it
is maximized. If the maximized button uses a large square as its
graphic, a maximized window can show the graphic in a different state.
Activating the maximize button must increase the size of the window to
the maximum allowable size. As a shortcut for mouse users to the
Restore entry in the window Menu, activating the
maximize button of a maximized window must restore the window to its
size and location before being maximized. Minimize Button
The minimize
button provides mouse users with a shortcut to the
Minimize entry in the window Menu. If a window
includes a minimize button, it must be just above the client area and
directly to the left of the maximize button.
Primary windows should have a minimize button. Secondary windows must not have a minimize button.
The graphic in the minimize button should be a small square or a
down arrow. Activating the minimize button must iconify the window
unless the window family contains a system modal DialogBox.
Other Buttons
You can bind additional window manager functions to buttons on the
window frame. Any additional buttons must be placed directly to the
left of the minimize button or directly to the right of the window
Menu button and above the client area. Each button action must
correspond to a entry in the window Menu.
Resize Borders
Applications can suggest the initial size of their windows to the window manager. Window sizes can vary according to the work performed in them. At any time, a user should be able to alter the size of most windows. The Size entry in the window Menu provides a method for the user to alter the size of windows. The resize borders provide a shortcut for mouse users for the Size entry in the window Menu. Resize borders are not generally provided on secondary windows.
The resize borders are the outermost components of the window manager frame. They are made up of two components: the corner handles and the edge handles. If a window includes resize borders, there must be one corner handle in each corner of the window at its extremes, and one edge handle between each pair of corner handles. There must be no window components outside the boundary formed by the resize borders.
Pressing BSelect
or BTransfer
in a corner handle and dragging the pointer must change the height and
width of the window relative to the moving pointer without changing
the position of the opposite corner. Pressing BSelect
or BTransfer
in a top or bottom edge handle and dragging the pointer must change
the height of the window relative to the moving pointer without
changing the width or the position of the opposite edge. Pressing BSelect
or BTransfer
in a side edge handle and dragging the pointer must change the width
of the window relative to the moving pointer without changing the
height or the position of the opposite edge.
Window Menu
The window Menu, sometimes called the system Menu or control Menu, is used to display the list of window actions. All actions possible for a window should be displayed in the window Menu because keyboard-only users interact with the window manager through this Menu. Because of this, it is rare that a window does not need a window Menu. The window Menu can be configured out by the application or by the user, but it should not be removed by the window manager.
If a window includes a window Menu, the window Menu button must be located just above the client area, the left edge of the button must align with the left edge of the client area, and the button must be just to the left of the title area, unless other buttons are included between the window Menu button and the title area.
Double-clicking the window Menu button can be used to close the
window, unless focus is disallowed in the window. A user must be able
to activate the window Menu button for the window with the focus by
using [Escape] or
.
A typical window Menu is shown below.
A primary window Menu must have the following entries in the order listed:
A secondary window Menu must have the following entries in the order listed: Move, Size, and Close. A secondary window Menu can include Restore above Move, Maximize below Size, and Lower above Close, but the lower option on a secondary window lowers all the windows secondary to that window's primary window. A secondary window Menu should not include Restore if it does not include Maximize. A secondary window must not include an entry for Minimize.
A secondary window resulting from a Menu being torn off must have the following entries in the order listed: Move, Lower, and Close. It must not include entries for Restore, Size, Minimize, or Maximize.
Additional Menu items can be added to the window Menus of both primary and secondary windows according to the guidelines for Menus described in Application Design Principles.