Extended Window Manager Hints
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[]
All EWMH protocol identifiers start with the five letter
prefix _NET_
.
Root window properties[]
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[]
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[]
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[]
The ICCCM defines only three distinct states a window can be in:
- Withdrawn,
- Normal,
- 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[]
- _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[]
Tiling and dynamic window managers[]
Stacking window managers[]
- Blackbox[3]
- Compiz
- CTWM (as of 4.0.0[4])
- Fluxbox[5]
- FVWM (via a plugin prior to v2.4 and native support from v2.5)[6][7]
- IceWM[8]
- JWM[9]
- KWin
- Metacity[10]
- Marco
- Openbox[11]
Other window managers[]
Notes and references[]
- ^ "Net WM - Blackbox". Archived from the original on 2007-10-01. Retrieved 2007-09-29.
- ^ "i3 _NET_SUPPORTED". Retrieved 2021-02-14.
- ^ "Blackbox COMPLIANCE". Retrieved 2021-02-15.
- ^ "ctwm 4.0.0 changes".
- ^ "Fluxbox EWMH Support". Retrieved 2009-09-09.
- ^ "Extended Window Manager Hints Support For FVWM".
- ^ "FVWM - Features".
- ^ "IceWM COMPLIANCE". Retrieved 2020-12-28.
- ^ "joewing.net | JWM EWMH Support". Retrieved 2021-02-15.
- ^ "Metacity COMPLIANCE". Retrieved 2021-02-15.
- ^ "Openbox COMPLIANCE". Retrieved 2021-02-15.
- ^ xfwm4 standards
External links[]
- Freedesktop.org
- X Window System