Window manager

A window manager (WM) is system software that controls the placement and appearance of windows within a windowing system in a graphical user interface (GUI). It can be part of a desktop environment (DE) or be used standalone.

Note: Window managers are unique to Xorg. The equivalent of window managers on Wayland are called compositors because they also act as compositing window managers.

Overview

Window managers are X clients that control the appearance and behaviour of the frames ("windows") where the various graphical applications are drawn. They determine the border, title bar, size, and ability to resize windows, and often provide other functionality such as reserved areas for sticking dockapps like Window Maker, or the ability to tab windows like Fluxbox. Some window managers are even bundled with simple utilities like menus to start programs or to configure the window manager itself.

The Extended Window Manager Hints specification is used to allow window managers to interact in standard ways with the server and the other clients.

Some window managers are developed as part of a more comprehensive desktop environment, usually allowing the other provided applications to better interact with each other, giving a more consistent experience to the user, complete with features like desktop icons, fonts, toolbars, wallpapers, or desktop widgets.

Other window managers are instead designed to be used standalone, giving the user complete freedom over the choice of the other applications to be used. This allows the user to create a more lightweight and customized environment, tailored to their own specific needs. "Extras" like desktop icons, toolbars, wallpapers, or desktop widgets, if needed, will have to be added with additional dedicated applications.

Some standalone window managers can be also used to replace the default window manager of a desktop environment, just like some desktop environment–oriented window managers can be used standalone too.

Prior to installing a window manager, a functional X server installation is required. See Xorg for detailed information.

Types

  • Stacking (aka floating) window managers provide the traditional desktop metaphor used in commercial operating systems like Windows and macOS. Windows act like pieces of paper on a desk, and can be stacked on top of each other. For available Arch Wiki pages see Category:Stacking window managers.
  • Tiling window managers "tile" the windows so that none are overlapping. They usually make very extensive use of key-bindings and have less (or no) reliance on the mouse. Tiling window managers may be manual, offer predefined layouts, or both. For available Arch Wiki pages see Category:Tiling window managers.
  • Dynamic window managers can dynamically switch between tiling or floating window layout. For available Arch Wiki pages see Category:Dynamic window managers.

See Comparison of tiling window managers and Wikipedia:Comparison of X window managers for comparison of window managers.

List of window managers

Stacking window managers

  • 2bwm Fast floating window manager, with the particularity of having 2 borders, written over the XCB library and derived from mcwm written by Michael Cardell. In 2bwm everything is accessible from the keyboard but a pointing device can be used for move, resize and raise/lower.
https://github.com/venam/2bwm || 2bwmAUR
  • 9wm X11 window manager inspired by Plan 9's rio.
https://github.com/9wm/9wm || 9wmAUR
  • AfterStep Originally based on the look and feel of the NeXTStep interface, it provides end users with a consistent, clean, and elegant desktop. The goal of AfterStep development is to provide for flexibility of desktop configuration, improving aesthetics, and efficient use of system resources.
http://www.afterstep.org/ || afterstep-gitAUR
  • evilwm Minimalist window manager for the X Window System. 'Minimalist' here does not mean it is too bare to be usable – it means it omits a lot of the stuff that make other window managers unusable.
https://www.6809.org.uk/evilwm/ || evilwmAUR
  • Fluxbox Window manager for X that was based on the Blackbox 0.61.1 code. It is very light on resources and easy to handle but yet full of features to make an easy and extremely fast desktop experience. It is built using C++ and licensed under the MIT License.
https://github.com/fluxbox/fluxbox || fluxbox
  • Karmen Window manager for X, written by Johan Veenhuizen. It is designed to "just work." There is no configuration file and no library dependencies other than Xlib. The input focus model is click-to-focus. Karmen aims at ICCCM and EWMH compliance.
http://karmen.sourceforge.net/ || karmenAUR
  • Marco The MATE window manager, fork of Metacity.
https://github.com/mate-desktop/marco || marco
  • pawm Window manager for the X Window system. So it is not a 'desktop' and does not offer you a huge pile of useless options, just the facilities needed to run your X applications and at the same time having a friendly and easy to use interface.
https://www.pleyades.net/david/projects/pawm || pawmAUR
  • sowm Simple Opinionated Window Manager that provides fullscreen toggling, window centering and a mixed workflow (i.e. mouse and keyboard).
https://github.com/dylanaraps/sowm || sowmAUR
  • Window Maker X11 window manager originally designed to provide integration support for the GNUstep Desktop Environment. In every way possible, it reproduces the elegant look and feel of the NEXTSTEP user interface. It is fast, feature rich, easy to configure, and easy to use.
https://windowmaker.org/ || windowmakerAUR

Tiling window managers

  • Herbstluftwm Manual tiling window manager for X11 using Xlib and Glib. The layout is based on splitting frames into subframes which can be split again or can be filled with windows (similar to i3/ musca). Tags (or workspaces or virtual desktops or …) can be added/removed at runtime. Each tag contains its own layout. Exactly one tag is viewed on each monitor. The tags are monitor independent (similar to xmonad). It is configured at runtime via ipc calls from herbstclient. So the configuration file is just a script which is run on startup. (similar to wmii/musca).
https://herbstluftwm.org || herbstluftwm
  • Notion Tiling, tabbed window manager for the X window system that utilizes 'tiles' and 'tabbed' windows.
    • Tiling: you divide the screen into non-overlapping 'tiles'. Every window occupies one tile, and is maximized to it
    • Tabbing: a tile may contain multiple windows - they will be 'tabbed'.
    • Static: most tiled window managers are 'dynamic', meaning they automatically resize and move around tiles as windows appear and disappear. Notion, by contrast, does not automatically change the tiling.
Notion is a fork of Ion3.
https://notionwm.net/ || notion

Dynamic window managers

  • xmonad Dynamically tiling X11 window manager that is written and configured in Haskell. In a normal WM, you spend half your time aligning and searching for windows. Xmonad makes work easier, by automating this. XMonad is configured in Haskell. For all configuration changes, xmonad must be recompiled, so the Haskell compiler (over 100MB) must be installed. A large library called xmonad-contrib provides many additional features.
https://xmonad.org/ || xmonad
gollark: This is from 2019, is there a newer version? I imagine some of the things stated here may have changed.
gollark: Also `DACBTICWRTJHW` Dedicate All Cache Banks To Instruction Caching While Running This JavaScript Hello World.
gollark: My favorite instruction is, perßonally, `CCMPY32R1` (Complex Multiply With Rounding And Conjugate, Signed Complex 16-bit (16-bit Real/16-bit Imaginary)).
gollark: Also I once abused LD_PRELOAD for purposes.
gollark: I "have" "reverse engineering" "knowledge" because I have some vague ability to guess what simple C programs do through disassembling them and looking at interesting function calls.

See also

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.