Re-parenting window manager explained

A re-parenting window manager is an X Window System window manager that adopts all other windows.

In the X Window System, every window has a parent window, which may be either the root window or another window. Windows that are children of the root window are called top-level windows. When a top-level window is created, a re-parenting window manager changes that window's parent to be a second new window created by the window manager for this purpose. This allows the window manager to decorate the windows with window decorations and title bars as well as allows advanced control over the windows' operation required, for example, by virtual window managers.

Technically, a reparenting window manager registers with the X server to be notified when a top-level window is mapped (attempts to become visible). When such an event is generated, the window manager creates a frame window, and in most cases also a title bar window. The frame window then becomes the parent of both the main window and the title bar window. Other forms of decoration, such as buttons, window title, etc., may also be created; these would normally be parented by the title bar window. [1]

Virtually all modern window managers are re-parenting, although earlier window managers, such as the uwm window manager, were not. Exceptions to that rule are dwm, cwm, PLWM, ratpoison and xmonad, due to a lack of any typical window decorations used by these window managers, and also Compiz which drew the decorations separately up until version 0.9.0, where it became a re-parenting window manager to allow it to run in a non-composited mode. Even though stumpwm does not draw typical window decorations, it reparents windows in a parent frame to display outlines.

Notes and References

  1. http://www.hpc.unimelb.edu.au/nec/g1ae02e/chap10.html Xlib Programming Manual Chapter 10