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