平铺窗口管理器对比

来自 ArchWiki

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

对比表格

下表列出了最流行的平铺窗口管理器及其显著特性,为读者提供快速概览。

窗口管理器 编写语言 配置方式 管理风格 系统托盘支持 运行时重载 信息栏 合成 默认布局 像素占用 外部控制 多 (n) 显示器行为 ICCCM/EWMH 兼容性 维护状态
Awesome C Lua 动态 内置 内置,图像和文本 外部 max, nh-stack (和 invert), nv-stack (和 invert), free 可变边框,可选 h-tab 标题 dbus (如果启用) XCB n-标签 (工作区)。默认启用 9 个。示例 活跃
bspwm C 任意 混合 可以将内部状态写入 FIFO 外部 v-split, h-split 可变边框 通过 bspc XCB 显示器持有桌面 活跃
dwm C C (重新编译) 动态 可选补丁 可选 内置,从根窗口名称读取 外部 v-stack, max 通过 dwmfifo Xlib n 区域,9 个工作区固定到每个区域 活跃
FrankenWM C C (重新编译) 动态 否,将信息输出到 stdout,可以很容易地被外部监视器或面板(dzen2、conky 等)解析和显示 外部 v-stack (和 invert), h-stack (和 invert), dual-v/h-stack, grid, fibonacci (vh-stack), rows, columns, max, free 可变边框 XCB 活跃
herbstluftwm C++ 任意 手动 外部 vertical, horizontal, grid, max, tabbed 1 像素边框 命令通过 herbstclient Xlib n 区域,9 个工作区在任何区域都可见 活跃
i3 C 文本 手动 i3bar 是 (布局被保留) 文本管道传输到 i3bar (可以使用 i3status/conky 等) 外部 tree, v-split, h-split, stacked, tabbed, max, 可以无限嵌套 无,1 像素或 2 像素,可选标题栏,可以隐藏边缘边框 命令通过 ipc (或使用 ipc 的 i3-msg) XCB n 区域 活跃
LeftWM Rust RON (用户设置) / 任意 (主题) 动态 是,通过主题系统提供许多选项 外部 v-stack, columns, rows 基于主题可变 支持 _NET_ACTIVE_WINDOW 和向命名管道发送命令 Xlib 工作区和显示器不绑定。一个显示器可以有多个工作区,或者一个工作区可以有多个显示器 活跃
Notion C, Lua Lua,兼容 Ion3 配置 手动 trayion, stalonetray 可配置 ? h-tab, max 可配置的边框和标题栏/标签页 EWMH,可以访问丰富内部 API 的任意 Lua 脚本 Xlib 每个显示器 n 个工作区。支持运行时更改拓扑 活跃
qtile Python Python 动态 外部 tree, v-split, h-split, stacked, tabbed, max 无边框,但可自定义 钩子,服务器模式 XCB 活跃
Ratpoison C 文本 手动 外部 max Xlib 活跃
Snapwm C 可重载文本 动态 内置,从根窗口名称读取 外部 nVertical, Fullscreen, nHorizontal, Grid, Center Stacking 可变边框,无标题 Xlib 在显示器之间均匀分配桌面数量 活跃
Spectrwm C 文本 动态 内置,从用户脚本读取 nv-stack, nh-stack, max 1 像素边框,无标题 XCB n 区域,10 个工作区在任何区域都可见 活跃
Stumpwm Common Lisp Common Lisp 手动 StumpTray 外部 max SLIME 服务器 ("Swank") CLX (Xlib 等效物) 活跃
xmonad Haskell Haskell 动态 是,使用 xmonad-contrib 和外部管理器 nv-stack, nh-stack, max 可变边框,无标题 通过 XMonad-Hooks-ServerMode Xlib n 区域,9 个工作区在任何区域都可见 是 / 通过 XMonad-Hooks-EwmhDesktops 活跃
窗口管理器 编写语言 配置方式 管理风格 系统托盘支持 运行时重载 信息栏 合成 默认布局 像素占用 外部控制 多 (n) 显示器行为 ICCCM/EWMH 兼容性 维护状态
提示: 外部控制也可以通过诸如 xdotool 等程序实现,这些程序可以模拟击键。

管理风格

动态管理强调自动管理窗口布局,以实现速度和简便性。手动管理强调手动调整布局和尺寸,可能实现更精确的控制,但代价是花费更多时间移动和调整窗口大小。

布局

许多常见的布局类型出现在几种平铺窗口管理器中,尽管术语略有不同。

  • max:一个窗口全屏显示(带或不带状态栏、标题和边框)。别名:monocle (dwm, monsterwm)。
  • h-stack:主区域在上半部分,其他窗口在下半部分水平堆叠。主区域可以调整大小。可以上下颠倒 (wmfs)。别名:bottom stack (dwm), bstack(monsterwm)。
  • v-stack:主区域在左半部分,其他窗口在右半部分垂直堆叠。主区域可以调整大小。可以左右颠倒 (wmfs)。别名:tile (dwm, monsterwm)。
  • nh-stack:h-stack 允许主区域中包含 >=1 个窗口。别名:nbstack (dwm)
  • nv-stack:v-stack 允许主区域中包含 >=1 个窗口。别名:ntile (dwm)
  • mirror-h:nh-stack,堆叠在主区域的上方和下方
  • mirror-v:nv-stack,堆叠在主区域的左侧和右侧
  • h-tab:一个窗口全屏显示,所有窗口标题水平显示(如浏览器标签页)
  • v-tab:一个窗口全屏显示,所有窗口标题垂直显示。别名:stack (wmii)。
  • h-split:快捷键绑定水平分割当前窗口,为另一个窗口创建空间
  • v-split:快捷键绑定垂直分割当前窗口,为另一个窗口创建空间
  • columns:手动布局风格,将窗口视为属于垂直列
  • rows:手动布局风格,将窗口视为属于水平行
  • grid:基于规则的 NxM 网格的窗口位置和大小。可以是自动的(如 wmfs、monsterwm)或手动的(如 Subtle)。

快捷键绑定

平铺窗口管理器通常设计为完全通过键盘或键盘和鼠标一起使用。这是为了速度(伸手和移动鼠标很慢)和易用性。合理的快捷键绑定对于使工作流程快速高效至关重要。一些默认设置比其他设置更好,但通常按键可以根据用户的需要重新绑定。

参见