前言
Wayland 下的选择实在太多,每个方案都有鲜明的取舍。这篇文章把我在 折腾过的几个管理器摊开来聊聊。
我之前的文章 在 Niri 中实现 Hyprland 风格的 Master 自动布局 讲了一种具体的布局实现方案,这篇侧重选型对比。
如果你对轻量级桌面环境(而非纯窗口管理器)的对比也感兴趣,可以看看另一篇 Linux 下轻量级桌面对比和选择,涵盖 XFCE、KDE/GNOME、dwm/i3、 Awesome、Openbox 等。
Sway —— 稳如老狗,但也真的素
作为 i3 在 Wayland 下的正统继承者,Sway 的生态成熟度无人能及。
优点
- 生态极度成熟,几乎遇不到 bug。作为 Wayland 平铺桌面的 №1,经历过足够多用户的考验
- 逻辑与 i3 几乎完全一致,i3 用户迁移过来零学习成本
- 非常求稳的最佳选择,适合"装好就别折腾了"的心态
- 理论上支持在 WSLg 内运行(我没亲自测过,但架构上可行)
缺点
- 真的太简陋了。不是说功能上缺什么,而是视觉上完全没有质感
- 没有毛玻璃效果,连圆角都需要靠
swayfx补丁才能实现 - 没有特效,各种细节功能不足,想自己补的话实现难度大
- 类似hyprland的master自动布局功能实现起来比较困难
小结
Sway 就像一把没有涂装的工具——功能扎实,握在手里什么事都能干,但你不会没事就想把它拿起来看两眼。如果 i3 已经满足了你的需求且你对视觉效果毫不在意,那 Sway 就是终点。
Hyprland —— 好看且顺手,但有硬伤
Hyprland 是近两年 Wayland 社区最火的平铺管理器,热度不是没理由的。
优点
- Master 布局非常舒适。一个主窗口占大半,其余窗口自动堆叠在侧边,鼠标少拖了 80%。对非带鱼屏用户,尤其是习惯开一个 IDE + 浏览器 + 笔记 + 若干终端随时开关的开发者,极度友好
- 自带特效——毛玻璃、圆角、动画,开箱即有质感。视觉效果是所有平铺管理器里最好的
缺点
- 右窗口空间紧张。单工作区窗口一多,虽然一眼能全看到,但副窗口被挤压到几乎无法使用,需要不停地拖拽出来用
- 对 Wayland nested 嵌套支持不好。准确地说,Hyprland 强制要求底层硬件 DRM/KMS,导致在 WSLg 下完全无法运行。这对双系统或依赖 WSL 的用户是致命一击
- 经过多年发展,bug 已经很少,这点倒不用太担心
小结
如果只在纯 Linux 环境工作,Hyprland 是目前体验天花板。但如果你有 WSLg 需求,它直接出局。
Wayfire —— 方向不对
Wayfire 本质上是堆叠式窗口管理器,虽然带了平铺功能,但用起来非常别扭和简陋。
Workspace 在 Waybar 和其他 dock 下都无法直接支持,需要单独做插件。它自带的 wf-panel 丑得像 1980 年代的东西。
不推荐。除非你对堆叠式有执念且无法接受 GNOME/KDE/XFCE/Openbox等。
Niri —— 最有争议的那个
Niri 在之前那篇 Master 自动布局 里已经详细讲过自动布局的实现,这里从选型角度聊聊它的定位。
优点
- 接近开箱即用。对堆叠式桌面迁移过来的用户非常友好——默认把窗口都堆叠到右侧,会滑动就能切换窗口,不会有窗口被挤压到无法显示的问题
- 对触摸板支持良好(笔记本用户狂喜)
- 自带特效尚可,观感介于 Sway 和 Hyprland 之间
- 支持 WSLg 下运行(虽然无法避免被 Windows 劫持部分窗口焦点),这是 Hyprland 做不到的
- 可扩展性不错:
niri msg action xxx的 IPC 机制非常强大,可以用 shell 或 Python 实现很多扩展功能。我之前写的自动布局脚本就是基于这套 IPC
缺点
- 整体窗口管理效率远低于传统的 i3 / Sway / Hyprland 逻辑。Niri 的滚动平铺(scrollable tiling)在带鱼屏上体验极佳,但在普通屏幕上,可视屏幕区域内窗口很少,大量窗口处于不可见状态,需要频繁滑动/切换/预览,效率大打折扣
- 双屏幕模式切换到对应工作区操作繁琐,也不直观。无论操作还是直觉都是熔断
- 我写过一个用脚本模拟实现的自动 master 布局(即上一篇),但即便完成,也只能是对 Hyprland 的拙劣模仿,实际体验完全不在一个层面。而且 Niri 官方已经明确拒绝了新建窗口改变已有列大小的相关 PR,短期内不可能期待官方实现
- 个人认为 Niri 有平铺式桌面的形式,但没有平铺式桌面的效率,更像是一个作者自我取悦的产品——但这不代表它不好,只是定位不同
小结
Niri 是一个新手极度友好,也是新手体验平铺窗口的很好的方式,而不是"让你高效操作几十个窗口"的工具。
关于niri的一些个人评价: niri更像是作者的"自我取悦"工具,用他自己的舒适区强行定义niri的正确性。 从“单位时间内的信息吞吐量”和“多任务并视效率”这两个视角来看,niri有一些不伦不类
横向对比
| 项目 | Sway | Hyprland | Niri |
|---|---|---|---|
| 布局模型 | 手动/树形平铺 | 动态布局(Master 等) | 滚动平铺(Scrollable Tiling) |
| 美观度 | 素 | 最佳 | 尚可 |
| 窗口管理效率 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 生态成熟度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 学习成本 | 中高(i3 用户→零) | 中高 | 低(新手用户友好) |
| 特效 | ❌(需 swayfx) | ✅ 开箱即用 | ✅ 基本特效 |
| WSLg 兼容 | 理论上可行 | ❌ 不支持 | ✅ |
| Bug 率 | 稳定 | 已很少 | 稳定 |
| 触摸板 | 普通 | 还算不错 | 优秀 |
| 脚本扩展 | 有限 | 一般 | 强(IPC 丰富) |
| 适合人群 | 求稳的 i3 遗老 | 追求体验的纯 Linux 用户 | - |