Extended Window Manager Hints

(Redirected from NetWM)

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". Archived from the original on 2009-08-19. 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