Application Window Properties

_NET_PROPERTIES

_NET_PROPERTIES, ATOM[]/32

Enables only use of listed properties on this windows. If this property is set, the Window Manager MUST only handle (XGetWindowProperty) properties listed here. This property MUST be set by the Client before any other _NET hints can be used. If this property is set, it MUST also include any ICCCM client-only (not WM_STATE) hints that are set by the client. If WM_PROTOCOLS is not listed here, the Window Manager SHOULD assume that it contains exactly WM_DELETE_WINDOW.

This is a performance optimization. [[MM: I still have to do a benchmark.]]

_NET_WM_NAME

_NET_WM_NAME

The Client SHOULD set this to the title of the window in UTF8 encoding. If set, the Window Manager should use this in preference to WM_NAME.

_NET_WM_DESKTOP

_NET_WM_DESKTOP <desktop>, CARDINAL/32

Cardinal to determine the desktop the window is in (or wants to be) starting with 0 for the first desktop. A Client MAY choose not to set this property, in which case the Window Manager SHOULD place as it wishes. 0xFFFFFFFF indicates that the window SHOULD appear on all desktops/workspaces.

The Window Manager should honor _NET_WM_DESKTOP whenever a withdrawn window requests to be mapped.

A Client can request a change of desktop for a non-withdrawn window by sending a _NET_WM_DESKTOP client message to the root window (window is the respective window, type _NET_WM_DESKTOP, format 32, l[0]=<desktop>)

The Window Manager MUST keep this property updated on all windows.

_NET_WM_WINDOW_TYPE

_NET_WM_WINDOW_TYPE, ATOM[]/32

This MUST be set by the Client before mapping, to a list of atoms indicating the functional type of the window. This property SHOULD be used by the window manager in determining the decoration, stacking position and other behaviour of the window. The Client SHOULD specify window types in order of preference (the first being most preferable), but MUST include at least one of the basic window type atoms from the list below. This is to allow for extension of the list of types, whilst providing default behaviour for window managers that do not recognise the extensions.

Rationale: This hint is intend to replace the MOTIF hints. One of the objections to the MOTIF hints is that they are a purely visual description of the window decoration. By describing the function of the window, the window manager can apply consistent decoration and behaviour to windows of the same type. Possible examples of behaviour include keeping dock/panels on top or allowing pinnable menus / toolbars to only be hidden when another window has focus (NextStep style).

_NET_WM_WINDOW_TYPE_DESKTOP, ATOM
_NET_WM_WINDOW_TYPE_DOCK, ATOM
_NET_WM_WINDOW_TYPE_TOOLBAR, ATOM
_NET_WM_WINDOW_TYPE_MENU, ATOM
_NET_WM_WINDOW_TYPE_DIALOG, ATOM
_NET_WM_WINDOW_TYPE_NORMAL, ATOM

_NET_WM_WINDOW_TYPE_DESKTOP indicates a desktop feature. This can include a single window containing desktop icons with the same dimensions as the screen, allowing the desktop environment to have full control of the desktop, without the need for proxying root window clicks.

_NET_WM_WINDOW_TYPE_DOCK indicates a dock or panel feature. Typically a window manager would keep such windows on top of all other windows.

_NET_WM_WINDOW_TYPE_TOOLBAR and _NET_WM_WINDOW_TYPE_MENU indicate toolbar and pinnable menu windows, respectively.

_NET_WM_WINDOW_TYPE_DIALOG indicates that this is a dialog window. If _NET_WM_WINDOW_TYPE is not set, then windows with WM_TRANSIENT_FOR set MUST be taken as this type.

_NET_WM_WINDOW_TYPE_NORMAL indicates that this is a normal, top-level window. Windows with neither _NET_WM_WINDOW_TYPE nor WM_TRANSIENT_FOR are set MUST be taken as this type.

_NET_WM_STATE

_NET_WM_STATE, ATOM[]

A list of hints describing the state window. The Window Manager SHOULD honor _NET_WM_STATE whenever a withdrawn window requests to be mapped. A Client wishing to change the state of a window MUST send a _NET_WM_STATE client message to the root window (see below). The Window Manager MUST keep this property updated to reflect the current state of the window.

Possible atoms are:

_NET_WM_STATE_MODAL, ATOM
_NET_WM_STATE_STICKY, ATOM
_NET_WM_STATE_MAXIMIZED_VERT, ATOM
_NET_WM_STATE_MAXIMIZED_HORZ, ATOM
_NET_WM_STATE_SHADED, ATOM
_NET_WM_STATE_SKIP_TASKBAR, ATOM

_NET_WM_STATE_MODAL indicates that this is a modal dialog box. The WM_TRANSIENT_FOR hint MUST be set to indicate which window the dialog is a modal for, or set to the root window if the dialog is a modal for its window group.

_NET_WM_STATE_STICKY indicates that the Window Manager SHOULD keep the window's position fixed on the screen, even when the virtual desktop scrolls.

_NET_WM_STATE_MAXIMIZED_{VERT,HORZ} indicates that the window is {vertically,horizontally} maximised.

_NET_WM_STATE_SHADED indicates that the window is shaded.

_NET_WM_SKIP_TASKBAR indicates that a window should not be included on a taskbar.

To change the state of a mapped window, a Client MUST send a _NET_WM_STATE client message to the root window (window is the respective window, type _NET_WM_STATE, format 32, l[0]=<the action, as listed below>, l[1]=<First property to alter>, l[2]=<Second property to alter>). This message allows two properties to be changed simultaneously, specifically to allow both horizontal and vertical maximisation to be altered together. l[2] MUST be set to zero if only one property is to be changed. l[0], the action, MUST be one of:

_NET_WM_STATE_REMOVE        0    /* remove/unset property */
_NET_WM_STATE_ADD           1    /* add/set property */
_NET_WM_STATE_TOGGLE        2    /* toggle property  */

See also the implementation notes on urgency and fixed size windows.

_NET_WM_STRUT

_NET_WM_STRUT, CARDINAL[4]/32

This property MUST be set by the Client if the window is to reserve space at the edge of the screen. The property is a 4-tupel of cardinals, one for each border of the screen. The order of the borders is left, right, top, bottom. The client MAY change this property anytime, therefore the Window Manager MUST watch out for property notify events.

The purpose of struts is to reserve space at the borders of the desktop. This is very useful for a docking area, a taskbar or a panel, for instance. The window manager should know about this reserved space in order to be able to preserve the space. Also maximized windows should not cover that reserved space.

Rationale: A simple "do not cover" hint is not enough for dealing with e.g. auto-hide panels.

Notes: An auto-hide panel SHOULD set the strut to be its minimum, hidden size. A "corner" panel that does not extend for the full length of a screen border SHOULD only set one strut.

_NET_WM_ICON_GEOMETRY

_NET_WM_ICON_GEOMETRY, CARDINAL[4]

An array of x,y,w,h of type CARDINAL, format 32. This optional property MAY be set by standalone tools like a taskbar or an iconbox. It specifies the geometry of a possible icon in case the window is iconified.

Rationale: This makes it possible for a window manager to display a nice animation like morphing the window into its icon.

_NET_WM_ICON

_NET_WM_ICON CARDINAL[][2+n]/32

This is an array of possible icons for the client. This specification does not stipulate what size these icons should be, but individual desktop environments or toolkits may do so. The Window Manager MAY scale any of these icons to an appropriate size.

This is an array of 32bit packed CARDINAL ARGB with high byte being A, low byte being B. First two bytes are width, height. Data is in rows, left to right and top to bottom.

_NET_WM_PID

_NET_WM_PID CARDINAL/32

If set, this property MUST contain the process ID of the client owning this window. This MAY be used by the Window Manager to kill windows which do not respond to the _NET_WM_PING protocol.

_NET_WM_HANDLED_ICONS

_NET_WM_HANDLED_ICONS

This property can be set by clients to indicate that the Window Manager need not provide icons for iconified windows, for example if the client is a taskbar and provides buttons for iconified windows.