evilwm - standards support

# evilwm standards support

evilwm (1.1 pre-release) supports a subset of the X Desktop Group's Extended Window Manager Hints (EWMH), version 1.3. This page lists what is supported, what is not yet supported and where ambiguities have not yet been resolved.

- EWMH root window properties (and related messages)
- Other EWMH root window messages
- EWMH application window properties
- Unsupported EWMH properties

## EWMH root window properties (and related messages)

_NET_SUPPORTED
  This property is set on each managed root window, and lists all EWMH atoms used within evilwm. This includes all the relevant _NET_WM_ACTION atoms, although I'm not sure it makes sense to include those, as they get listed under the similar per-client _NET_WM_ALLOWED_ACTIONS property.
_NET_CLIENT_LIST
  _NET_CLIENT_LIST and _NET_CLIENT_LIST_STACKING are kept up to date.
_NET_NUMBER_OF_DESKTOPS
  This is currently always set to 8 (the number of virtual desktops evilwm has historically supported). Clients cannot yet alter this value, though I intend to add that ability.
_NET_DESKTOP_GEOMETRY
  Set to the display geometry. Modifying not allowed.
_NET_DESKTOP_VIEWPORT
  Always set to (0,0).
_NET_CURRENT_DESKTOP
  Property is supported, and client messages requesting desktop change are accepted.
_NET_ACTIVE_WINDOW
  Property is supported, and client messages requesting a change of active window are accepted if their source indication suggests they came as a result of direct user action.
_NET_WORKAREA
  Currently always indicates the entire display as work area (does not calculate anything based on struts).
_NET_SUPPORTING_WM_CHECK
  Will refer to evilwm's supporting window.

## Other EWMH root window messages

_NET_CLOSE_WINDOW
  Message is respected if source indication suggests it came from direct user action.
_NET_MOVERESIZE_WINDOW
  Message is respected if source indication suggests it came from direct user action.
_NET_RESTACK_WINDOW
  Message is respected if source indication suggests it came from direct user action.
_NET_REQUEST_FRAME_EXTENTS
  evilwm always estimates the configured border width for each frame edge. A better value could be determined by analysing the window hints in the same way as creating a new window, but it's only got to be an estimate, so I've not done that yet.

## EWMH application window properties

_NET_WM_NAME
  This is set to "evilwm" on the supporting window, but not currently consulted for client window titles (the title in WM_NAME is used instead).
_NET_WM_DESKTOP
  This is maintained on all client windows. On virtual desktop change, this property is changed for any "fixed" windows to be the new virtual desktop. It is also accepted as a client message indicating user action to change a window's current virtual desktop.
_NET_WM_WINDOW_TYPE
  These window types affect behaviour:
  _NET_WM_WINDOW_TYPE_DESKTOP
    evilwm ignores windows of this type, allowing them to act as a fake root window (e.g., Nautilus).
  _NET_WM_WINDOW_TYPE_DOCK
    Applications that declare themselves to be a dock can have their visibility toggled with a key combination.
_NET_WM_STATE
  Some states are supported:
  _NET_WM_STATE_MAXIMIZED_VERT
  _NET_WM_STATE_MAXIMIZED_HORZ
  _NET_WM_STATE_HIDDEN
    Advertised but never set: pagers should show "Iconic" windows (on other virtual desktops) that don't have _NET_WM_STATE_HIDDEN set.
  _NET_WM_STATE_FULLSCREEN
    Currently, as evilwm does not calculate any sort of "work area", the fullscreen hint is considered equivalent to having both the vertically and horizontally maximised hints set. These hints are respected on initial management of a window, and clients can send _NET_WM_STATE messages to change them.
_NET_WM_ALLOWED_ACTIONS
  Some actions are allowed:
  _NET_WM_ACTION_MOVE
  _NET_WM_ACTION_RESIZE
    Listed only if window is capable of being resized (min height != max height).
  _NET_WM_ACTION_MAXIMIZE_HORZ
  _NET_WM_ACTION_MAXIMIZE_VERT
  _NET_WM_ACTION_FULLSCREEN
    As noted above, requesting fullscreen is currently equivalent to requesting both vertical and horizonal maximisation.
  _NET_WM_ACTION_CHANGE_DESKTOP
  _NET_WM_ACTION_CLOSE
_NET_WM_PID
  This property is set on the supporting window, but is not consulted when dealing with client windows. Additionally, the WM_CLIENT_MACHINE property is not yet set.
_NET_FRAME_EXTENTS
  Each frame extent is set to the border width that applies to the client.

## Unsupported EWMH properties

_NET_DESKTOP_NAMES
_NET_VIRTUAL_ROOTS
  evilwm does not use virtual root windows.
_NET_DESKTOP_LAYOUT
_NET_SHOWING_DESKTOP
  evilwm does not have a "showing the desktop" mode.

_NET_WM_MOVERESIZE

_NET_WM_VISIBLE_NAME
  The real WM_NAME is displayed when requested.
_NET_WM_ICON_NAME
_NET_WM_VISIBLE_ICON_NAME
  evilwm does not support iconification.
_NET_WM_WINDOW_TYPE
  These window types are unsupported:
  _NET_WM_WINDOW_TYPE_TOOLBAR
  _NET_WM_WINDOW_TYPE_MENU
  _NET_WM_WINDOW_TYPE_UTILITY
  _NET_WM_WINDOW_TYPE_SPLASH
  _NET_WM_WINDOW_TYPE_DIALOG
  _NET_WM_WINDOW_TYPE_NORMAL
_NET_WM_STATE
  These states are unsupported:
  _NET_WM_STATE_MODAL
  _NET_WM_STATE_STICKY
  _NET_WM_STATE_SHADED
  _NET_WM_STATE_SKIP_TASKBAR
  _NET_WM_STATE_SKIP_PAGER
  _NET_WM_STATE_ABOVE
  _NET_WM_STATE_BELOW
  _NET_WM_STATE_DEMANDS_ATTENTION
_NET_WM_ALLOWED_ACTIONS
  These actions are unsupported:
  _NET_WM_ACTION_MINIMIZE
  _NET_WM_ACTION_SHADE
  _NET_WM_ACTION_STICK
_NET_WM_STRUT
_NET_WM_STRUT_PARTIAL
_NET_WM_ICON_GEOMETRY
_NET_WM_ICON
_NET_WM_HANDLED_ICONS
  evilwm does not support iconification.
_NET_WM_USER_TIME

_NET_WM_PING
_NET_WM_SYNC_REQUEST