A window manager is computer 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 windowing system which provides required functionality such as 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 clear distinction between the windowing system and the window manager. Every graphical operating system which uses a windows metaphor has some form of window management, however in practice the elements of this functionality vary greatly. The elements usually associated with window managers are those which 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 docks, task bars, program launchers, desktop icons, and wallpaper.
See main article: X window manager.
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, which are the responsibility of the X server to provide.
Users of the X Window System have the ability to easily use many different window managers such as those included in GNOME, KDE, and many others. Since many window managers are modular, people refer to programs such as Compiz (a 3D compositing window manager), which replaces only parts of the graphical environment, as window managers as well. Components of different window managers can even be mixed and matched, for example the window decorations from KDE's 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,(essentially the whole screen) an application started within the root window can be adopted by another.(ie, put inside of it) 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 allow the contents of one window to be added to another, for example a flash player application can be re-parented to a browser window, and can appear to the naked eye 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.
See also: Re-parenting window manager.
Windows XP allows the user to change between a limited number of window management options, limited mainly to the classic Windows 95 look and the newer Luna theme. Alternative shells for Microsoft Windows XP and earlier have also emerged. For example, LiteStep can replace the graphical user interface on Windows 95, 98, or NT with an Afterstep style. 
However the level of customization which is even possible in Windows XP compared to X is severely limited due to the tight integration of the various components.
See also: Windows XP.
See also: Stacking window manager.
See main article: Desktop window manager.
Windows Vista has a built in theme-able compositing window manager called Desktop Window Manager. This window manager can use multiple various user interfaces with varying levels of sophistication. By default Windows Aero's glass environment, which is a fully 3D accelerated interface can be turned off, replacing it with a simpler and faster interface.
It's uncertain if Microsoft has plans to release future updates to add more window management features and plug-ins.
Window managers are often divided into three classes, which describe how windows are drawn and updated.
See main article: Compositing window manager.
Compositing window managers allow all windows to be created and drawn separately and then put together and displayed in various 2D and 3D environments. This allows for a great deal of variety in interface look and feel, and for the presence of advanced 2D and 3D visual effects.
See main article: Stacking window manager.
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 exactly the same methodologies. Stacking window managers allow windows to overlap by drawing background windows first, which is referred to as painter's algorithm. Changes sometimes require all windows to 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 to be redrawn, since background windows may have bits of other windows painted over them effectively erasing the areas that are covered.
See main article: 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.
See main article: 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.
Mouse warping is a facility that centres the mouse pointer on the current application as it is made active.
See main article: History of the graphical user interface.
In the 1970s, the Xerox Alto became the first computer shipped with a working WIMP GUI. It used a stacking window manager which 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.
GEM 1.1 was a window manager which supported the desktop metaphor, and used stacking, allowing all windows to overlap. It was released in the early 80s. 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.
Mac OS was one of the earliest commercially successful examples of a GUI which used a sort of stacking window management via QuickDraw. Currently Mac OS X uses a somewhat more advanced window manager which 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.
During the mid 80s, Amiga OS contained an early example of a stacking window manager. Instead of using a desktop metaphor, the Amiga instead used an interface metaphor centered around a workbench, representing directories as drawers rather than folders, and where utility programs were nicknamed "tools". Therefore its window manager was entitled "Amiga Workbench".
The Workbench was powered by an intelligent engine called "Intuition" (one of the low-level libraries of AmigaOS, which was present in Amiga system ROMs) capable to recognize what windows, or portions of it were covered, and what windows were foreground and evidenced, so it could draw only the desired parts of the screen that required to be refreshed. This feature was powered by internal Bit Blitter and Copper circuits of Amiga hardware and did not require the use of a compositing engine, and this increased the rendering speed. Intuition also anticipated the choices of the user by recognizing position of mouse pointer floating over other elements of the screen (title bars of windows, their close and resizing gadgets, whole icons), and thus it was capable to grant nearly a zero wait state experience in 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 (New Generation in AmigaOS 4.0 and 4.1. 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 before that point used a command line interface (CLI). OS/2 shared a common ancestry with Microsoft Windows, and was a joint project between Microsoft and IBM. After Microsoft and IBM split, OS/2 v3 was renamed Windows NT, and Presentation Manager was later dropped in favour of Microsoft's own windowing system and window manager.