Comparison of tiling window managers

This article provides an unbiased comparison of the most popular tiling window managers (as opposed to floating window managers).

Comparison table

The following table lists the most popular tiling window managers alongside notable features, providing readers with a quick overview.

Window Manager Written in Configured with Management style System tray support On-the-fly reload Information bars Compositing Default layouts Pixel usage External control Library Multiple (n) monitor behavior ICCCM/EWMH compliant Maintenance
Awesome CLuaDynamicBuilt-inYesBuilt-in, images and textExternalmax, nh-stack (and invert), nv-stack (and invert), freeVariable borders, optional h-tab titlesdbus (if enabled)XCBn-tags (workspaces). Per default 9 are enabled. ExampleYesActive
bspwm CAnythingHybridNoneYesCan write internal state to a FIFOExternalv-split, h-splitVariable bordersvia bspcXCBMonitors hold DesktopsYesActive
dwm CC (recompile)DynamicOptional PatchOptionalBuilt-in, reads from root window nameExternalv-stack, maxvia dwmfifoXlibn regions, 9 workspaces fixed to each regionNoActive
FrankenWM CC (recompile)DynamicNoneNoNo, outputs information to stdout, which can easily be parsed and displayed by an external monitor or panel (dzen2, conky, etc)Externalv-stack (and invert), h-stack (and invert), dual-v/h-stack, grid, fibonacci (vh-stack), rows, columns, max, freeVariable bordersXCBNoActive
herbstluftwm C++TextManualNoneYesrows, columns1-pix borderscommands via herbstclientXlibn regions, 9 workspaces visible in any regionActive
i3 CTextManuali3barYes (Layout is preserved)text piped to i3bar (i3status/conky and others can be used)Externaltree, v-split, h-split, stacked, tabbed, max, can be nested infinitelyNone, 1-pix or 2-pix, optional titlebars, can hide edge borderscommands via ipc (or i3-msg, which uses ipc)XCBn regionsYesActive
LeftWM RustRON (user settings) / Anything (themes)DynamicNoneYesYes, many options through theme systemExternalv-stack, columns, rowsVariable based on themesupports _NET_ACTIVE_WINDOW and sending commands to a named pipeXlibWorkspaces and monitors are not tied. Many workspaces for monitor or many monitors for workspaceYesActive
Notion C, LuaLua, compatible with Ion3 configsManualtrayion, stalonetrayYesconfigurable?h-tab, maxConfigurable borders and titlebars/tabsEWMH, arbitrary Lua scripts which have access to the rich internal APIXlibn workspaces on each monitor. Supports on-the-fly changes in topologyActive
qtile PythonPythonDynamicYesYesYesExternaltree, v-split, h-split, stacked, tabbed, maxNo borders, although customizableHooks, Server modeXCBActive
Ratpoison CTextManualNoneYesYesExternalmaxNoActive
Snapwm CReloadable TextDynamicNoneYesBuilt-in, reads from root window nameExternalnVertical, Fullscreen, nHorizontal, Grid, Center StackingVariable borders, no titlesXlibNumber of desktops distributed evenly between monitorsActive
Spectrwm CTextDynamicNoneYesBuilt-in, reads from user scriptNonv-stack, nh-stack, max1-pix borders, no titlesXCBn regions, 10 workspaces visible in any regionNoActive
Stumpwm LispLispManualNoneYesYesNoXlibNoActive
xmonad HaskellHaskellDynamicNoneYesNoYes, with xmonad-contrib and an external managernv-stack, nh-stack, maxVariable borders, no titlesvia XMonad-Hooks-ServerModeXlibn regions, 9 workspaces visible in any regionYes / ?Active
Window ManagerWritten inConfigured withManagement styleSystem tray supportOn-the-fly reloadInformation barsCompositingDefault layoutsPixel usageExternal controlLibraryMultiple (n) monitor behaviorICCCM/EWMH compliantMaintenance
Tip: External control can also be achieved by programs like xdotool which simulate keystrokes.

Management style

Dynamic management emphasizes automatic management of window layouts for speed and simplicity. Manual management emphasizes manual adjustment of layout and sizing with potentially more precise control, at the cost of more time spent moving and sizing windows.

Layouts

A number of common layout types appear in several tiling WMs, although the terminology varies somewhat.

  • max: one window shown fullscreen (with or without a status bar, title and borders). Aka: monocle (dwm, monsterwm).
  • h-stack: master area in top half, other windows stack up horizontally in the bottom half. The master area may be resizable. May be inverted top-bottom (wmfs). Aka: bottom stack (dwm), bstack(monsterwm).
  • v-stack: master area in left half, other windows stack up vertically in the right half. The master area may be resizable. May be inverted left-right (wmfs). Aka: tile (dwm, monsterwm).
  • nh-stack: h-stack allowing >=1 windows in master area. Aka: nbstack (dwm)
  • nv-stack: v-stack allowing >=1 windows in master area. Aka: ntile (dwm)
  • mirror-h: nh-stack with stacks above and below the master area
  • mirror-v: nv-stack with stacks to the left and right of the master area
  • h-tab: one window shown fullscreen with all window titles shown horizontally (like browser tabs)
  • v-tab: one window shown fullscreen with all window titles shown vertically. Aka: stack (wmii).
  • h-split: a keybinding splits the current window horizontally creating space for another
  • v-split: a keybinding splits the current window vertically creating space for another
  • columns: manual layout style which treats windows as belonging to vertical columns
  • rows: manual layout style which treats windows as belonging to horizontal rows
  • grid: window positions and sizes based on a regular NxM grid. May be automatic (like wmfs, monsterwm) or manual (like Subtle).

Key bindings

Tiling window managers are usually designed to be used entirely with the keyboard or with keyboard & mouse. This is for speed (reaching for and moving a mouse is slow) and ease of use. Sensible key bindings are crucial to making workflow fast and efficient. Some default sets are better than others, but generally the keys can be rebound as desired by the user.

gollark: It has banana.
gollark: You should use Banano instead.
gollark: Look up "Aaronson oracles" also.
gollark: Just train yourself to be a good unbiased RNG.
gollark: Use your free will.

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.