Window manager


A window manager is system software that controls the placement and appearance of windows within a windowing system in a graphical user interface. Most window managers are designed to help provide a desktop environment. They work in conjunction with the underlying graphical system that provides required functionality—support for graphics hardware, pointing devices, and a keyboard, and are often written and created using a widget toolkit.
Few window managers are designed with a clear distinction between the windowing system and the window manager. Every graphical user interface based on a windows metaphor has some form of window management. In practice, the elements of this functionality vary greatly. Elements usually associated with window managers allow the user to open, close, minimize, maximize, move, resize, and keep track of running windows, including window decorators. Many window managers also come with various utilities and features: e.g. docks, task bars, program launchers, desktop icons, and wallpaper.

History

In the 1970s, the Xerox Alto became the first computer shipped with a working WIMP GUI. It used a stacking window manager that allowed overlapping windows. While it is unclear if Microsoft Windows contains designs copied from Apple's Mac OS, it is clear that neither was the first to produce a GUI using stacking windows. In the early 1980s, the Xerox Star, successor to the Alto, used tiling for most main application windows, and used overlapping only for dialogue boxes, removing most of the need for stacking.
Mac OS was one of the earliest commercially successful examples of a GUI that used a sort of stacking window management via QuickDraw. Currently macOS uses a somewhat more advanced window manager that has supported compositing since Mac OS X 10.0, and was updated in Mac OS X 10.2 to support hardware accelerated compositing via the Quartz Compositor.
GEM 1.1 was a window manager that supported the desktop metaphor, and used stacking, allowing all windows to overlap. It was released in the early 1980s. GEM is famous for having been included as the main GUI used on the Atari ST, which ran Atari TOS, and was also a popular GUI for MS-DOS prior to the widespread use of Microsoft Windows. As a result of a lawsuit by Apple, GEM was forced to remove the stacking capabilities, making it a tiling window manager.
During the mid-1980s, Amiga OS contained an early example of a compositing window manager called Intuition, capable of recognizing which windows or portions of them were covered, and which windows were in the foreground and fully visible, so it could draw only parts of the screen that required refresh. Additionally, Intuition supported compositing. Applications could first request a region of memory outside the current display region for use as bitmap. The Amiga windowing system would then use a series of bit blits using the system's hardware blitter to build a composite of these applications' bitmaps, along with buttons and sliders, in display memory, without requiring these applications to redraw any of their bitmaps.
Intuition also anticipated the choices of the user by recognizing the position of the pointer floating over other elements of the screen, and thus it was capable of granting nearly a zero-wait state experience to the use of the Workbench window manager.
Noteworthy to mention is the fact that Workbench was the only window manager that eventually inspired an entire family of descendant and successors: Ambient in MorphOS, Zune/Wanderer in AROS, Workbench NG. Workbench 4.1 was enhanced by 2D vector interface powered by Cairo libraries, and presenting a modern Porter-Duff 3D based Compositing Engine.
In 1988, Presentation Manager became the default shell in OS/2, which, in its first version, only used a command line interface. IBM and Microsoft designed OS/2 as a successor to DOS and Windows for DOS. After the success of Windows 3.10, however, Microsoft abandoned the project in favor of Windows. After that, the Microsoft project for a future OS/2 version 3 became Windows NT, and IBM made a complete redesign of the shell of OS/2, substituting the Presentation Manager of OS/2 1.x for the object-oriented Workplace Shell that made its debut in OS/2 2.0.

X window managers

On systems using the X window system, there is a clear distinction between the window manager and the windowing system. Strictly speaking, an X window manager does not directly interact with video hardware, mice, or keyboards – that is the responsibility of the display server.
Users of the X Window System have the ability to easily use many different window managers – Metacity, used in GNOME 2, and KWin, used in KDE Plasma Workspaces, and many others. Since many window managers are modular, people can use others, such as Compiz, which replaces the window manager. Sawfish and awesome on the other hand are extensible window managers offering exacting window control. Components of different window managers can even be mixed and matched; for example, the window decorations from KWin can be used with the desktop and dock components of GNOME.
X window managers also have the ability to re-parent applications, meaning that, while initially all applications are adopted by the root window, an application started within the root window can be adopted by another window. Window managers under the X window system adopt applications from the root window and re-parent them to window decorations. Re-parenting can also be used to add the contents of one window to another. For example, a flash player application can be re-parented to a browser window, and can appear to the user as supposedly being part of that program. Re-parenting window managers can therefore arrange one or more programs into the same window, and can easily combine tiling and stacking in various ways.

Microsoft Windows

Microsoft Windows has provided an integrated stacking window manager since Windows 2.0; Windows Vista introduced the compositing Desktop Window Manager as an optional hardware-accelerated alternative. In Windows, the role of the window manager is tightly coupled with the kernel's graphical subsystems and is largely non-replaceable, although third-party utilities can be used to simulate a Tiling window manager on top of such systems. Since Windows 8, the Desktop Window Manager can no longer be disabled.
Windows Explorer is used by default in modern Windows systems to provide a panel and file manager, along with many functions of a window manager; aspects of Windows can be modified through the provided configuration utilities, modifying the Windows registry or with 3rd party tools, such as WindowBlinds or Resource Hacker.
The Windows window manager can also act as an X window manager through Cygwin/X in multiwindow mode.
Note that Microsoft and X Window System use different terms to describe similar concepts. For example, there is no specific word for window manager functionality in Windows.

Types of window managers

Window managers are often divided into three or more classes, which describe how windows are drawn and updated.

Compositing window managers

Compositing window managers let all windows be created and drawn separately and then put together and displayed in various 2D and 3D environments. The most advanced compositing window managers allow for a great deal of variety in interface look and feel, and for the presence of advanced 2D and 3D visual effects.

Stacking window managers

All window managers that have overlapping windows and are not compositing window managers are stacking window managers, although it is possible that not all use the same methods. Stacking window managers allow windows to overlap by drawing background windows first, which is referred to as the painter's algorithm. Changes sometimes require that all windows be re-stacked or repainted, which usually involves redrawing every window. However, to bring a background window to the front usually only requires that one window be redrawn, since background windows may have bits of other windows painted over them, effectively erasing the areas that are covered.

Tiling window manager

Tiling window managers paint all windows on-screen by placing them side by side or above and below each other, so that no window ever covers another. Microsoft Windows 1.0 used tiling, and a variety of tiling window managers for X are available.

Dynamic window manager

Dynamic window managers can dynamically switch between tiling or floating window layout. A variety of dynamic window managers for X are available.

Features and facilities of window managers

;Autohide
;Borders
;Context Menu
;Desktop Wallpaper
;Focus Stealing
;Iconification
;Joined Windows
;Keyboard Equivalents
;Menubar
;Menu Panel
;Mouse focus
;Mouse warping
;Multiple Desktops
;Pager
;Plugins
;Rollup
;Root Menu
;Shortcuts
;Tabbed Windows
;Task Switching
;Taskbar
;Task Panel
;Start Button
;Notification Area
;Title Bars
;Title Bar Buttons
;Virtual Desktop

Active window

An active window is the currently focused window in the current window manager. Different window managers indicate the currently-active window in different ways and allow the user to switch between windows in different ways. For example, in Microsoft Windows, if both Notepad and Microsoft Paint are open, clicking in the Notepad window will cause that window to become active. In Windows, the active window is indicated by having a different colored title bar. Clicking is not the only way of selecting an active window, however: some window managers make the window under the mouse pointer active—simply moving the mouse is sufficient to switch windows; a click is not needed.
Window managers often provide a way to select the active window using the keyboard as an alternative to the mouse. One typical key combination is Alt+Tab, used by Windows and KDE ; another is apple key-tilde, used by Macintosh. Pressing the appropriate key combination typically cycles through all visible windows in some order, though other actions are possible.
Many, though not all, window managers provide a region of the screen containing some kind of visual control for each window on the screen. Each button typically contains the title of the window and may also contain an icon. This area of the screen generally provides some kind of visual indication of which window is active—for example, the active window's button may appear “pushed in”. It is also usually possible to switch the active window by clicking on the appropriate button. In Microsoft Windows, this area of the screen is called the taskbar; in Apple Macintosh systems this area of the screen is called the dock.
The active window may not always lie in front of all other windows on the screen. The active window is simply the window to which keys typed on the keyboard are sent; it may be visually obscured by other windows. This is especially true in window managers which do not require a click to change active windows: FVWM, for example, makes active the window
under the mouse cursor but does not change its Z-order. Instead, it is necessary to click on the border of the window to bring it to the foreground. There are also situations in click-to-focus window managers such as Microsoft Windows where the active window may be obscured; however, this is much less common.