Extended Window Manager Hints

From Wikipedia, the free encyclopedia

Extended Window Manager Hints, a.k.a. NetWM,[1] is an X Window System standard for the communication between window managers and applications. It builds on the functionality of the Inter-Client Communication Conventions Manual (ICCCM).

These standards formulate protocols for the mediation of access to shared X resources, like the screen and the input focus. Applications request access, while the window manager grants or denies it. Communication occurs via X properties and client messages. The EWMH is a comprehensive set of protocols to implement a desktop environment. It defines both required and optional protocols. The window manager may choose to implement virtual desktops or a layered stacking order, but if it does, then the EWMH defines how this is communicated.

Protocol overview[edit]

All EWMH protocol identifiers start with the five letter prefix _NET_.

Root window properties[edit]

The WM must update a set of properties on the root window:

_NET_SUPPORTED
lists all the EWMH protocols supported by this WM.
_NET_CLIENT_LIST
lists all application windows managed by this WM.
_NET_NUMBER_OF_DESKTOPS
indicates the number of virtual desktops.
_NET_DESKTOP_GEOMETRY
defines the common size of all desktops.
_NET_DESKTOP_VIEWPORT
defines the top left corner of each desktop.
_NET_CURRENT_DESKTOP
gives the index of the current desktop.
_NET_DESKTOP_NAMES
lists the names of all virtual desktops.
_NET_ACTIVE_WINDOW
gives the currently active window.
_NET_WORKAREA
contains a geometry for each desktop.
_NET_SUPPORTING_WM_CHECK
gives the window of the active WM.
_NET_VIRTUAL_ROOTS
if the WM supports virtual root windows.
_NET_DESKTOP_LAYOUT
shows the layout of the active pager.
_NET_SHOWING_DESKTOP
is 1 for "showing the desktop" mode.

Client messages[edit]

An application may send client messages to a window manager:

_NET_WM_STATE
to change the state of an application window.
_NET_ACTIVE_WINDOW
to activate an application window.
_NET_SHOWING_DESKTOP
toggles display of application windows.
_NET_CLOSE_WINDOW
to close an application window.
_NET_WM_MOVERESIZE
to interactively resize an application window.
_NET_MOVERESIZE_WINDOW
to immediately resize an application window.
_NET_REQUEST_FRAME_EXTENTS
consults frame border dimensions.
_NET_WM_FULLSCREEN_MONITORS
defines the monitors for a fullscreen window.

If the WM supports window stacking:

_NET_RESTACK_WINDOW
asks to change the stacking order for a window.

If the WM supports virtual desktops:

_NET_CURRENT_DESKTOP
changes the current desktop.
_NET_NUMBER_OF_DESKTOPS
changes the number of desktops.

A WM may choose to ignore these messages:

_NET_DESKTOP_GEOMETRY
changes the dimension of all desktops.
_NET_DESKTOP_VIEWPORT
changes the viewport for the current desktop.

Window properties[edit]

The EWMH defines these application window properties:

_NET_WM_NAME
the title of the window.
_NET_WM_VISIBLE_NAME
the window title as shown by the WM.
_NET_WM_ICON_NAME
the title of the icon.
_NET_WM_VISIBLE_ICON_NAME
the icon title as shown by the WM.
_NET_WM_DESKTOP
the desktop the window is in.
_NET_WM_WINDOW_TYPE
the functional type of the window.
_NET_WM_STATE
the current window state.
_NET_WM_ALLOWED_ACTIONS
a list of supported user operations.
_NET_WM_STRUT
if the window wishes to reserve space at the edge.
_NET_WM_STRUT_PARTIAL
reserved space details at the screen edge.
_NET_WM_ICON_GEOMETRY
the geometry of a possible icon.
_NET_WM_ICON
an array of possible icons for the client.
_NET_WM_PID
the process ID of the client owning this window.
_NET_WM_HANDLED_ICONS
whether a pager provides icons.
_NET_WM_USER_TIME
time of last user activity in this window.
_NET_WM_USER_TIME_WINDOW
the window which shows user activity.
_NET_FRAME_EXTENTS
the left, right, top and bottom frame sizes.
_NET_WM_OPAQUE_REGION
which window regions are fully opaque.
_NET_WM_BYPASS_COMPOSITOR
requests that the window is uncomposited.

Window states[edit]

The ICCCM defines only three distinct states a window can be in:

  1. Withdrawn,
  2. Normal,
  3. Iconic.

In addition it supports an Urgent flag to request user attention.

The EWMH defines thirteen window state flags:

  • Above: show the window above others,
  • Below: show the window below others,
  • DemandsAttention: same as the urgent flag,
  • Focused: the window has input focus,
  • Fullscreen: show the window fullscreen,
  • Hidden: the window is unmapped,
  • MaximizedHorizontal: the window is stretched horizontally,
  • MaximizedVertical: the window is stretched vertically,
  • Modal: the window is a modal popup,
  • Shaded: the window is rolled up,
  • SkipPager: the window should not be shown on a pager,
  • SkipTaskbar: the window should be ignored by a taskbar,
  • Sticky: the window should be shown on all virtual desktops.

Additional protocols[edit]

_NET_WM_PING
a WM can use this to test if a client is alive.
_NET_WM_SYNC_REQUEST
for synchronizing repaints when resizing.
_NET_WM_FULL_PLACEMENT
the WM will handle any window placement.

List of window managers that support Extended Window Manager Hints[edit]

Tiling and dynamic window managers[edit]

Stacking window managers[edit]

Other window managers[edit]

Notes and references[edit]

  1. ^ "Net WM - Blackbox". Archived from the original on 2007-10-01. Retrieved 2007-09-29.
  2. ^ "polachok/echinus: README - 3. About panels and pagers". GitHub. Retrieved 2022-08-19.
  3. ^ "i3 _NET_SUPPORTED". GitHub. Retrieved 2021-02-14.
  4. ^ "Fixed _NET_SUPPORTING_WM_CHECK and _NET_SUPPORTED property setup". GitHub. Retrieved 2022-08-19.
  5. ^ "What is subtle?". Retrieved 2022-08-19.
  6. ^ "BurntSushi/wingo: COMPLIANCE - EWMH". GitHub. Retrieved 2022-08-19.
  7. ^ "Blackbox COMPLIANCE". GitHub. Retrieved 2021-02-15.
  8. ^ "ctwm 4.0.0 changes".
  9. ^ "Fluxbox EWMH Support". Retrieved 2009-09-09.
  10. ^ "Extended Window Manager Hints Support For FVWM".
  11. ^ "FVWM - Features".
  12. ^ "IceWM COMPLIANCE". GitHub. Retrieved 2020-12-28.
  13. ^ "joewing.net | JWM EWMH Support". Retrieved 2021-02-15.
  14. ^ "Metacity COMPLIANCE". Retrieved 2021-02-15.
  15. ^ "Openbox COMPLIANCE". GitHub. Retrieved 2021-02-15.
  16. ^ xfwm4 standards

External links[edit]