Extended Window Manager Hints

Last updated

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).

Contents

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:

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

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

The EWMH defines thirteen window state flags:

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

Other window managers

Notes and references

  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

Related Research Articles

<span class="mw-page-title-main">X window manager</span> Type of window manager

An X window manager is a window manager that runs on top of the X Window System, a windowing system mainly used on Unix-like systems.

<span class="mw-page-title-main">Fluxbox</span> Open source window manager for the X11 system

Fluxbox is a stacking window manager for the X Window System, which started as a fork of Blackbox 0.61.1 in 2001, with the same aim to be lightweight. Its user interface has only a taskbar, a pop-up menu accessible by right-clicking on the desktop, and minimal support for graphical icons. All basic configurations are controlled by text files, including the construction of menus and the mapping of key-bindings. Fluxbox has high compliance to the Extended Window Manager Hints specification.

<span class="mw-page-title-main">Blackbox</span> Free and open-source stacking window manager for the X Window System

Blackbox is a free and open-source stacking window manager for the X Window System.

<span class="mw-page-title-main">Openbox</span> Stacking window manager for X11 displays

Openbox is a free, stacking window manager for the X Window System, licensed under the GNU General Public License. Originally derived from Blackbox 0.65.0, Openbox has been completely re-written in the C programming language and since version 3.0 is no longer based upon any code from Blackbox. Since at least 2010, it has been considered feature complete, bug free and a completed project. Occasional maintenance is done to keep it working, but only if needed.

twm Window manager for the X Window System

twm is a window manager for the X Window System. Started in 1987 by Tom LaStrange, it has been the standard window manager for the X Window System since version X11R4. The name originally stood for Tom's Window Manager, but the software was renamed Tab Window Manager by the X Consortium when they adopted it in 1989. twm is a stacking window manager that provides title bars, shaped windows and icon management. It is highly configurable and extensible.

<span class="mw-page-title-main">Stacking window manager</span>

A stacking window manager is a window manager that draws and allows windows to overlap, without using a compositing algorithm. All window managers that allow the overlapping of windows but are not compositing window managers are considered stacking window managers, although it is possible that not all use exactly the same methods. Other window managers that are not considered stacking window managers are those that do not allow the overlapping of windows, which are called tiling window managers.

<span class="mw-page-title-main">AfterStep</span> Stacking window manager for the X Window System

AfterStep is a stacking window manager for the X Window System. The goal of AfterStep's development is to provide for flexibility of desktop configuration, improved aesthetics and efficient use of system resources, and was used in such distributions as MachTen. AfterStep originally was a variant of FVWM modified to resemble NeXTSTEP, but as the development cycle progressed, it diverged from its FVWM roots. In 2000, Linux website TuxRadar selected AfterStep as one of the year's best window managers, praising it as "fast and reliable, with a huge range of configuration options and the ability to create some spectacular themes".

<span class="mw-page-title-main">FVWM</span>

The F Virtual Window Manager (FVWM) is a virtual window manager for the X Window System. Originally a twm derivative, FVWM has evolved into a powerful and highly configurable environment for Unix-like systems.

<span class="mw-page-title-main">Metacity</span> Window manager

Metacity was the default window manager used by the GNOME 2 desktop environment until it was replaced by Mutter in GNOME 3. It is still used by GNOME Flashback, a session for GNOME 3 that provides a similar user experience to the Gnome 2.x series sessions.

In computing, the Inter-Client Communication Conventions Manual is a standard protocol for the X Window System. It specifies conventions for clients of a common X server about selections and cut buffers, communication with the window manager and session manager, manipulation of shared resources, and color characterization.

In computing, the X Window System is a network-transparent windowing system for bitmap displays. This article details the protocols and technical structure of X11.

<span class="mw-page-title-main">Tiling window manager</span> Window manager with non-overlapping frames

In computing, a tiling window manager is a window manager with an organization of the screen into mutually non-overlapping frames, as opposed to the more common approach of coordinate-based stacking of overlapping objects (windows) that tries to fully emulate the desktop metaphor.

<span class="mw-page-title-main">JWM</span> Stacking window manager for X Window System

JWM is a lightweight stacking window manager for the X Window System written by Joe Wingbermuehle. JWM is written in C and uses only Xlib at a minimum. Configuration is done by editing an XML file; no graphical configuration is necessary or supplied.

<span class="mw-page-title-main">Motif Window Manager</span>

In computing, the Motif Window Manager (MWM) is an X window manager based on the Motif toolkit.

A desktop environment is a collection of software designed to give functionality and a certain look and feel to an operating system.

Avant Window Navigator is a dock-like bar for Linux, which sits on an edge of a user's screen and tracks open windows. Instead of representing open windows as buttons or segments on a bar, it uses large icons on a translucent background to increase readability and add visual appeal. The program was created by Neil J. Patel.

wmctrl is a command used to control windows in EWMH- and NetWM-compatible X Window window managers. Some of its common operations are list, resize, and close window. It also has the ability to interact with virtual desktops and give information about the window manager. wmctrl is a command-line program, however, it has some functions that allow the mouse to select a window for an operation.

This article compares variety of different X window managers. For an introduction to the topic, see X Window System.

9wm is an open source stacking window manager for X11, written by David Hogan (dhog) in 1994 to emulate the Plan 9 Second Edition window manager, 8½. Many later minimalist window managers for X were either inspired by, or directly derived from, 9wm. 9wm takes only 0.4 MB in RAM.

In computing, SPICE is a remote-display system built for virtual environments which allows users to view a computing "desktop" environment – not only on its computer-server machine, but also from anywhere on the Internet – using a wide variety of machine architectures.