Root window


In the X Window System, every window is contained within another window, called its parent. This makes the windows form a hierarchy. The root window is the root of this hierarchy. It is as large as the screen, and all other windows are either children or descendants of it.
Since every window covers the part of its parent it is staying on, all other windows appear to be above the root window. As a result, the root window is visible as the part of the screen that is behind all other windows. In other words, the root window forms the background of the screen. An image can be used as the wallpaper of the screen by setting it as the background image of the root window. This can be done for example using the xsetroot or the xv programs.
The direct children of the root window are called top-level windows. These windows are usually drawn with a decorative frame and a title bar. The top-level windows are, informally, the regular windows in the terminology of most GUIs. The windows that are not top-level are used for buttons, textboxes, etc.
The properties of the root window are sometimes used as a rudimentary form of inter-client communication means. For example, the cut buffers are properties of the root window that are used for copying selected text from a window to another, and the dwm window manager displays the root window's name in a status area. The X resources are also stored, during execution, in a property of the root window.

Virtual root window

The swm window manager introduced the virtual root window. From the point of view of the X protocol, this is a regular window. However, X window managers using the virtual root window reparent all windows to it instead of to the real root window. Virtual root windows are mainly used by re-parenting window managers, for example, for realizing a number of virtual desktops the user can switch between.
Other clients may need to use the virtual root window. The identifier of this window can be found in a window property named __SWM_VROOT in a direct child of the real root window. Technically, many programs use the macros for finding the root windows as redefined by an include file named vroot.h.
The freedesktop window manager specification requires a property named _NET_VIRTUAL_ROOTS of the real root window to contain a list of the windows that are acting as virtual root windows; the virtual root window that is currently active can be found in the property _NET_CURRENT_DESKTOP of the real root window.
The virtual root window is used by the window managers swm, tvtwm, amiwm, and enlightenment. Other systems such as KDE use a virtual background window but do not reparent the other windows to this one. The virtual root window is also used by XScreenSaver: when the screensaver is activated, this program creates a virtual root window, places it at the top of all other windows, and calls one of its hacks, which finds the virtual root window and draws in it.

Utilities that use the root window