Change history

Changes since 1.2


  • Added _NET_WM_SYNC_REQUEST to allow synchronized repaint of application window and window manager frame during opaque resize.

  • Added _NET_REQUEST_FRAME_EXTENTS and _NET_FRAME_EXTENTS to allow a client to retrieve its window's frame extents.


  • Added timestamp, source indication and requestor's active window fields to the _NET_ACTIVE_WINDOW message.

  • Added _NET_RESTACK_WINDOW message.

  • Added new property _NET_WM_STRUT_PARTIAL to allow partial-width struts.

  • Rewrote the implementation notes on "Window Movement", retitled it to "Window Geometry".

  • Rewrote the implementation notes on "Urgency", making it clear that the hint is not just about dialogs.

  • Fixed the specification of the X and Y members of _NET_DESKTOP_LAYOUT and renamed them to columns and row for clarity.

  • Change the description of _NET_WM_STATE_MODAL to no longer require apps to break the ICCCM for group-modal windows, but still support the WM_TRANSIENT_FOR=root dialect.

  • Specified that (yet) unused fields in client messages must be set to 0.

  • _NET_WM_PING message now has the client window identified in data.l[2] field.

  • Added _NET_WM_USER_TIME to detect user activity in windows.

  • Explicitly specify that the window manager should restore original geometry when _NET_WM_STATE_FULLSCREEN is reset.

Changes since 1.1

  • Changed WM_CLIENT_NAME(STRING) from suggested to required for _NET_WM_PID.

  • Specification and sample code for the content of WM_CLIENT_NAME(STRING).




  • Added _NET_WM_STATE_HIDDEN and clarified purpose of _NET_WM_STATE_SKIP_PAGER and _NET_WM_STATE_SKIP_TASKBAR. Changed section on virtual desktop implementation to suggest ICCCM compliance regarding IconicState, using _NET_WM_STATE_HIDDEN to avoid confusion. Added implementation note for pagers on when to display a window.

  • Added button field and new directions for keyboard-initiated actions to the _NET_WM_MOVERESIZE message.

  • Added advice on removing _NET_WM_STATE and _NET_WM_DESKTOP when a window is withdrawn.

  • Added _NET_DESKTOP_LAYOUT to allow a Pager to specify inter-desktop geometry.


  • Added _NET_WM_STATE_ABOVE and _NET_WM_STATE_BELOW and a recommended layered stacking order.


  • Improve markup of citations.

  • Explain _NET_DESKTOP_GEOMETRY and _NET_WM_HANDLED_ICONS in more detail and improve the explanation of WM_CLIENT_MACHINE in the section called “Killing Hung Processes”.

  • Add Lubos Lunak to the list of contributors.

Changes since 1.0

  • Fix doctype, add author info, update data.

  • Change specification description wording to be more inclusive, and to reflect the joint nature of the specification.

  • Fix miscellaneous typographical, grammar and spelling errors.

  • Clarified _NET_SUPPORTED to include ALL atoms, not just the property names.

  • Various corrections to use of MUST and SHOULD.

  • Fix problem in _NET_WM_ICON where 'bytes' should have been 'cardinals'

  • Replaced ISO-8559-1 characters with entities.

Changes since 1.0pre5

  • Change history moved to end.

  • UTF-8 Reference updated.

  • Window Gravity information updated.

  • Copyright Added.

  • Minor typo corrections.

Changes since 1.0pre4

  • Clarified the interpretation of client-provided geometries on large desktops.

  • Added more explanation for _NET_DESKTOP_NAMES.


  • Tried to improve the wording of _NET_WM_STRUT explanation.

  • Changed _NET_WORKAREA to an array of viewport-relative geometries.

  • Updated list of dependent properties for _NET_NUMBER_OF_DESKTOPS to include _NET_WORKAREA and _NET_DESKTOP_VIEWPORT.

  • Tidied formatting of all client messages.

Changes since 1.0pre3

  • Added information about common non-ICCCM features.

  • Added explanation of sending messages to the root window.

  • Removed XA_ prefix from type names.

  • Clarified that mapping order refers to inital mapping and specify the directions of both orders.

  • Clarified that desktops have a common size specified by _NET_DESKTOP_GEOMETRY.

  • Rewrote explanation of _NET_DESKTOP_VIEWPORT.

  • Tidied formatting of _NET_CURRENT_DESKTOP.

  • Replaced window handle by window ID.

  • Tidied formatting of _NET_WORKAREA.

  • Rewrote the motivation for _NET_VIRTUAL_ROOTS.

  • Added advice on Pointer grabs to _NET_WM_MOVERESIZE.

  • Fixed typos in _NET_WM_STATE.


  • Tidied formatting of _NET_WM_STRUT.

  • Tidied formatting of _NET_WM_ICON_GEOMETRY.

Changes since 1.0pre2



  • _NET_WM_STATE: added explanation of permitted extensions. Added explanation of being set / not set.

  • Spellchecked, corrected various typos.

  • UTF8 -> UTF-8 for consistency.

  • added references to the ICCCM an UTF-8 (incomplete).

  • added data and event formats where missing.


  • fixed formatting of _NET_CLOSE_WINDOW message.

Changes since 1.0pre1

  • Removed implementation note concerning Gnome's (potential) file manager behavior.

  • The Window Movement section of the implementation notes has been revised.

Changes since 1.9f

  • Revised revision number for first accepted release 1.9XX -> 1.0preXX.

  • Prerequisites for adoption of this specification added.

  • Tidied formatting of _NET_CURRENT_DESKTOP for consistency.

  • Tidied formatting of _NET_ACTIVE_WINDOW for consistency. Removed doubled text.

  • Tidied formatting of _NET_WM_DESKTOP for consistency.

  • Killing Hung Processes implementation note added. _NET_WM_PID and _NET_WM_PING now link to this.

  • Clarified x_root and y_root meaning for _NET_WM_MOVERESIZE.

  • Added contributor list.

Changes since 1.9e


  • Removed ambiguity from _NET_NUMBER_OF_DESKTOPS and _NET_DESKTOP_NAMES in combination.

  • Set _NET_WM_MOVERESIZE format to 32 for consistency.

  • Removed _NET_PROPERTIES.

  • Removed comment from _NET_WM_MOVERESIZE.

Changes since 1.9d


  • Added note about ICCCM compliant window moves.



  • Removed degrees of activation

Changes since 1.9c

  • Removed packaging of hints into 2 X properties. Jim Gettys points out that the performance gains of fewer round trips can be better achieved using Xlib routines.

  • Clarified that _NET_DESKTOP_VIEWPORT is in pixels

  • _NET_DESKTOP_VIEWPORT is now an array, one for each desktop, to allow for different active viewports on different desktops

  • _NET_WM_STRUT now only applies on desktops on which the client is visible

  • Introduced RFC 2119 language, and attempted to clarify the roles of the Window Manager, Pagers and Applications

  • Added _NET_WM_NAME


  • Desktops now start from 0

  • Added _NET_WM_PID

  • Added _NET_WM_PING protocol


Changes since 1.9b

  • Removed _NET_NUMBER_OF_DESKTOPS client message, as it overlaps unnecessarily with _NET_{INSERT/DELETE}_DESKTOP.

  • Replaced _NET_WM_LAYER and _NET_WM_HINTS with _NET_WM_WINDOW_TYPE functional hint.

  • Changed _NET_WM_STATE to a list of atoms, for extensibility.

  • Expanded description of _NET_WORKAREA and _NET_WM_STRUT.

  • Removed _NET_WM_SIZEMOVE_NOTIFY protocol.

  • Added degrees of activation to _NET_ACTIVE_WINDOW client message

  • Added _NET_WM_ICON

  • My comments are in [[ ]]. Comments from Marko's draft are in [[MM: ]]