EWMH(1) General Commands Manual EWMH(1)

ewmhEWMH compliance daemon

ewmh [-h]

ewmh is a user-space daemon that listens for X notify events, and respond to them by setting Extended Window Manager Hints on the root window, as specified by the specification.

Some applications require an EWMH compliant window manager in order to function properly. Many window managers, however do not comply to the specification, which end up with unexpected behavior for these applications, when they even start at all.

ewmh aims to provide a sane amount of hints, so that most applications can function properly with a non EWMH compliant window manager.

The whole specification cannot be fully implemented in an external tool, for multiple reasons (need to redirect root window events, keep track of window states, …).

Only the following atoms are supported by ewmh:

  • _NET_SUPPORTED
  • _NET_SUPPORTING_WM_CHECK
  • _NET_WM_STATE
  • _NET_WM_STATE_FULLSCREEN
  • _NET_CLIENT_LIST
  • _NET_CLIENT_LIST_STACKING
  • _NET_ACTIVE_WINDOW
  • _NET_WM_WINDOW_TYPE (all types)

The specification require that a running window manager creates a window and point the hint to this window. ewmh will set the override_redirect property on this window so that non-EWMH compliant window manager will ignore it as well.

The only supported state in _NET_WM_STATE_FULLSCREEN. When such event is sent to the root window, ewmh will respond to the event accordingly. When setting a window fullscreen, its current position, size and border width are saved in an atom named ORIGINAL_SIZE. ewmh needs this atom to revert the window back to its original state.

These atoms hold the list of windows that are managed by the window manager (override_redirect unset), and/or have the hint _NET_WM_WINDOW_TYPE set to one of those values

  • _NET_WM_WINDOW_TYPE_UTILITY
  • _NET_WM_WINDOW_TYPE_DIALOG
  • _NET_WM_WINDOW_TYPE_NORMAL

Because we don't know the order in which the running window manager is storing the windows, _NET_CLIENT_LIST also displays the window IDs in their stacking order.

All other windows will have their attribute forcely set to 1, so that window managers without support for EWMH atoms can ignore them.

This hint is updated whenever an event of type is generated. This should usually match the currently active window from the window manager point of view.

glazier(1)

Willy Goiffon <dev@z3bra.org>

2020-06-07 POSIX.1