平铺式窗口管理器比较

来自 Arch Linux 中文维基

本文对最流行的平铺式窗口管理器(相对于浮动式窗口管理器)进行了公正的比较。

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 C Lua Dynamic Built-in Built-in, images and text External max, nh-stack (and invert), nv-stack (and invert), free Variable borders, optional h-tab titles dbus (if enabled) XCB n-tags (workspaces). Per default 9 are enabled. Example Active
bspwm C Anything Hybrid None Can write internal state to a FIFO External v-split, h-split Variable borders via bspc XCB Monitors hold Desktops Active
dwm C C (recompile) Dynamic Optional Patch Optional Built-in, reads from root window name External v-stack, max via dwmfifo Xlib n regions, 9 workspaces fixed to each region Active
FrankenWM C C (recompile) Dynamic None 否, outputs information to stdout, which can easily be parsed and displayed by an external monitor or panel (dzen2, conky, etc) External v-stack (and invert), h-stack (and invert), dual-v/h-stack, grid, fibonacci (vh-stack), rows, columns, max, free Variable borders XCB Active
herbstluftwm C++ Anything Manual None External vertical, horizontal, grid, max, tabbed 1-pix borders commands via herbstclient Xlib n regions, 9 workspaces visible in any region Active
i3 C Text Manual i3bar 是 (Layout is preserved) text piped to i3bar (i3status/conky and others can be used) External tree, v-split, h-split, stacked, tabbed, max, can be nested infinitely None, 1-pix or 2-pix, optional titlebars, can hide edge borders commands via ipc (or i3-msg, which uses ipc) XCB n regions Active
LeftWM Rust RON (user settings) / Anything (themes) Dynamic None 是, many options through theme system External v-stack, columns, rows Variable based on theme supports _NET_ACTIVE_WINDOW and sending commands to a named pipe Xlib Workspaces and monitors are not tied. Many workspaces for monitor or many monitors for workspace Active
Notion C, Lua Lua, compatible with Ion3 configs Manual trayion, stalonetray configurable ? h-tab, max Configurable borders and titlebars/tabs EWMH, arbitrary Lua scripts which have access to the rich internal API Xlib n workspaces on each monitor. Supports on-the-fly changes in topology Active
qtile Python Python Dynamic External tree, v-split, h-split, stacked, tabbed, max 否 borders, although customizable Hooks, Server mode XCB Active
Ratpoison C Text Manual None External max Xlib Active
Snapwm C Reloadable Text Dynamic None Built-in, reads from root window name External nVertical, Fullscreen, nHorizontal, Grid, Center Stacking Variable borders, no titles Xlib Number of desktops distributed evenly between monitors Active
Spectrwm C Text Dynamic None Built-in, reads from user script nv-stack, nh-stack, max 1-pix borders, no titles XCB n regions, 10 workspaces visible in any region Active
Stumpwm Common Lisp Common Lisp Manual StumpTray External max SLIME server ("Swank") CLX (Xlib-equivalent) Active
xmonad Haskell Haskell Dynamic None 是, with xmonad-contrib and an external manager nv-stack, nh-stack, max Variable borders, no titles via XMonad-Hooks-ServerMode Xlib n regions, 9 workspaces visible in any region 是 / via XMonad-Hooks-EwmhDesktops Active
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
提示: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.

参见[编辑 | 编辑源代码]