window manager
A window manager is system software that controls the placement and appearance of window (computing), windows within a windowing system in a graphical user interface. Most window managers are designed to help provide a desktop environment. They ...
that runs on top of the
X Window System
The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems.
X originated as part of Project Athena at Massachusetts Institute of Technology (MIT) in 1984. The X protocol has been at ...
, a windowing system mainly used on
Unix-like
A Unix-like (sometimes referred to as UN*X, *nix or *NIX) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Uni ...
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
, and
Microsoft Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
platforms (excepting Microsoft Windows explorer.exeshell replacements), which have historically provided a vendor-controlled, fixed set of ways to control how windows and panes display on a screen, and how the user may interact with them, window management for the X Window System was deliberately kept separate from the software providing the graphical display. The user can choose between various third-party window managers, which differ from one another in several ways, including:
* customizability of appearance and functionality:
** textual menus used to start programs and/or change options
** docks and other graphical ways to start programs
** multiple desktops and
virtual desktop
In computing, a virtual desktop is a term used with respect to user interfaces, usually within the WIMP (computing), WIMP paradigm, to describe ways in which the virtual space of a computer's desktop environment is expanded beyond the physical ...
s (desktops larger than the physical monitor size), and
pagers
A pager, also known as a beeper or bleeper, is a wireless telecommunications device that receives and displays alphanumeric or voice messages. One-way pagers can only receive messages, while response pagers and two-way pagers can also acknow ...
to switch between them
* consumption of memory and other system resources
* degree of integration with a
desktop environment
In computing, a desktop environment (DE) is an implementation of the desktop metaphor made of a bundle of programs running on top of a computer operating system that share a common graphical user interface (GUI), sometimes described as a graphi ...
, which provides a more complete interface to the operating system, and provides a range of integrated utilities and applications.
How X window managers work
When a window manager is running, some kinds of interaction between the
X server X server may refer to:
* a display server for the X Window System
* X.Org Server, the X.Org Foundation's display server for the X Window System
* HPE Integrity Superdome X Server, a line of HPE Integrity Servers
HPE Integrity Servers is a ser ...
and its clients are redirected through the window manager. In particular, whenever an attempt to show a new window is made, this request is redirected to the window manager, which decides the initial position of the window. Additionally, most modern window managers are reparenting, which usually leads to a banner being placed at the top of the window and a decorative frame being drawn around the window. These two elements are controlled by the window manager rather than the program. Therefore, when the user clicks or drags these elements, it is the window manager that takes the appropriate actions (such as moving or resizing the window).
Window managers are also responsible for
icon
An icon () is a religious work of art, most commonly a painting, in the cultures of the Eastern Orthodox, Oriental Orthodox, Catholic Church, Catholic, and Lutheranism, Lutheran churches. The most common subjects include Jesus, Mary, mother of ...
s. Indeed, icons do not exist at the X Window System core protocol level. When the user requests a window to be iconified, the window manager unmaps it (makes it non-visible) and takes the appropriate actions to show an icon in its place. Most modern window managers do not literally show icons to represent iconified windows anymore. Often, an auxiliary toolbar program will allow access to iconified windows.
While the main aim of a window manager is to manage the windows, many window managers have additional features such as handling mouse clicks in the root window, presenting panes and other visual elements, handling some keystrokes (e.g., Alt-F4 may close a window), deciding which application to run at start-up, etc.
Standardized protocols exist to allow normal clients to communicate with the window manager. The original one is
Inter-Client Communication Conventions Manual
In computing, the Inter-Client Communication Conventions Manual (ICCCM or I39L short for "I", 39 letters and "L")Extended Window Manager Hints (EWMH). These protocols allow clients to request titles for windows and icons, check if a window is iconified which might be docked or minimized, and possibly customize windows decorations, what
virtual desktop
In computing, a virtual desktop is a term used with respect to user interfaces, usually within the WIMP (computing), WIMP paradigm, to describe ways in which the virtual space of a computer's desktop environment is expanded beyond the physical ...
the window occupies. Additional information from the window manager is available through the core protocol including the visibility of windows such as if a window is hidden on a different
Virtual desktop
In computing, a virtual desktop is a term used with respect to user interfaces, usually within the WIMP (computing), WIMP paradigm, to describe ways in which the virtual space of a computer's desktop environment is expanded beyond the physical ...
, and figuring out the adjustments for the window manager frames.
Types of window managers
Stacking window managers
A stacking window manager renders the windows one-by-one onto the screen at specific co-ordinates. If one window's area overlaps another, then the window "on top" overwrites part of the other's visible appearance. This results in the appearance familiar to many users in which windows act a little bit like pieces of paper on a desktop, which can be moved around and allowed to overlap.
In contrast to ''compositing'' window managers (see below), the lack of separate
off-screen buffer
A framebuffer (frame buffer, or sometimes framestore) is a portion of random-access memory (RAM) containing a bitmap that drives a video display. It is a memory buffer containing data representing all the pixels in a complete video frame. Mode ...
s can mean increased efficiency, but effects such as translucency are not possible.
Stacking window managers include Amiwm, Blackbox,
CTWM
In Unix computing, CTWM (Claude's Tab Window Manager) is a stacking window manager for the X Window System in the twm family of window managers. CTWM was created in 1992 by Claude Lecommandeur of EPFL from the source code for twm, which he ex ...
Fluxbox
Fluxbox is a stacking window manager for the X Window System, which started as a fork of Blackbox 0.61.1 in 2001, with the same aim to be lightweight. Its user interface has only a taskbar, a pop-up menu accessible by right-clicking on the d ...
FVWM
The F Virtual Window Manager (FVWM) is a virtual window manager for the X Window System. Originally a twm derivative, FVWM is now a window manager for Unix-like systems.
History
In 1993, during his work analyzing acoustic signatures for the ...
,
IceWM
IceWM is a stacking window manager for the X Window System, originally written by Marko Maček. It was written from scratch in C++ and is released under the terms of the GNU Lesser General Public License.
It is customizable, relatively light ...
TWM
twm (Tab Window Manager) is a window manager for the X Window System. Started in 1987 by Tom LaStrange, it has been the standard window manager for the X Window System since version X11R4. The name originally stood for Tom's Window Manager, but ...
A tiling window manager is a window manager with an organization of the screen into mutually non-overlapping frames (hence the name tiling), as opposed to the traditional approach of coordinate-based stacking of objects (windows) that tries to emulate the desk paradigm.
Tiling window managers include awesome, dwm, ion, larswm, ratpoison, Stumpwm,
wmii
In computing, a tiling window manager is a window manager with the organization of the screen often dependant on mathematical formulas to organise the windows into a non-overlapping frame. This is opposed to the more common approach used by stac ...
A compositing window manager may appear to the user similar to a stacking window manager. However, the individual windows are first rendered in individual buffers, and then their images are composited onto the screen buffer; this two-step process means that visual effects (such as shadows, translucency) can be applied. It also means that compositing window managers are inherently more resource-hungry than an equivalently-powerful stacking window manager. For this reason, some window managers for X do not support compositing by default, such as Openboxbr>Compositing in Lubuntu Historically, the Amiga in 1985, OSX in 2001, Java Looking Glass in 2003, and the Windows Longhorn demo in 2003 (delayed until Vista in 2007) preceded compositing efforts under X11. Compositing window managers for X include:
*
GNOME
A gnome () is a mythological creature and diminutive spirit in Renaissance magic and alchemy, introduced by Paracelsus in the 16th century and widely adopted by authors, including those of modern fantasy literature. They are typically depict ...
Xfce
Xfce or XFCE (pronounced as four individual letters, ) is a Free and open-source software, free and open-source desktop environment for Linux and other Unix-like operating systems.
Xfce aims to be fast and Lightweight software, lightweight whil ...
Compiz
Compiz () is a compositing window manager for the X Window System, using 3D graphics hardware to create fast compositing desktop effects for window management. Effects, such as a minimization animation or a cube workspace, are implemented as loa ...
(since 2005—was forked as
Beryl
Beryl ( ) is a mineral composed of beryllium aluminium Silicate minerals#Cyclosilicates, silicate with the chemical formula Be3Al2(SiO3)6. Well-known varieties of beryl include emerald and Aquamarine (gem), aquamarine. Naturally occurring Hex ...
in 2006 but the projects re-merged in 2007), and
*
KDE
KDE is an international free software community that develops free and open-source software. As a central development hub, it provides tools and resources that enable collaborative work on its projects. Its products include the KDE Plasma gra ...
's
KWin
KWin is a window manager for the X Window System and a Wayland (display server protocol)#Wayland compositors, Wayland compositor. It is released as a part of KDE Plasma, for which it is the default window manager. KWin can also be used on its o ...
(since 4.0 of 2008).
Compositing support can be added to non-compositing window managers, through the use of compositors such as ''compton''.
Virtual window managers
A virtual window manager is a window manager that uses virtual screens, whose resolution can be higher than the resolution of one's monitor/
display adapter
A graphics card (also called a video card, display card, graphics accelerator, graphics adapter, VGA card/VGA, video adapter, display adapter, or colloquially GPU) is a computer expansion card that generates a feed of graphics output to a displa ...
thus resembling a two dimensional
virtual desktop
In computing, a virtual desktop is a term used with respect to user interfaces, usually within the WIMP (computing), WIMP paradigm, to describe ways in which the virtual space of a computer's desktop environment is expanded beyond the physical ...
with its
viewport
A viewport is a polygon viewing region in computer graphics.
In computer graphics theory, there are two region-like notions of relevance when rendering some objects to an image. In textbook terminology, the ''world coordinate window'' is the area ...
. This environment is very useful when one wishes to have a large number of windows open at the same time. A number of virtual window managers have been made, including
FVWM
The F Virtual Window Manager (FVWM) is a virtual window manager for the X Window System. Originally a twm derivative, FVWM is now a window manager for Unix-like systems.
History
In 1993, during his work analyzing acoustic signatures for the ...
Some window managers are extensible, or programmable, by user scripts.
In these window managers, users can define new actions or override the default, or reactions to various events, like window size and position changes, window creation and deletion, key and mouse input, timer, etc. They often provide on-the-fly code execution, too.
Some examples of such window managers and the used languages are:
* Awesome - Lua
*
KWin
KWin is a window manager for the X Window System and a Wayland (display server protocol)#Wayland compositors, Wayland compositor. It is released as a part of KDE Plasma, for which it is the default window manager. KWin can also be used on its o ...
-
ECMAScript
ECMAScript (; ES) is a standard for scripting languages, including JavaScript, JScript, and ActionScript. It is best known as a JavaScript standard intended to ensure the interoperability of web pages across different web browsers. It is stan ...
Lisp
Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation.
Originally specified in the late 1950s, ...
haskell
Haskell () is a general-purpose, statically typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research, and industrial applications, Haskell pioneered several programming language ...
Common Lisp
Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...