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.
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 (a 3D compositing window manager), 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.