小类随手记

Wayland 窗口管理器选型:从 Sway hyprland Niri

前言

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有一些不伦不类


横向对比

项目SwayHyprlandNiri
布局模型手动/树形平铺动态布局(Master 等)滚动平铺(Scrollable Tiling)
美观度最佳尚可
窗口管理效率⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
生态成熟度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
学习成本中高(i3 用户→零)中高低(新手用户友好)
特效❌(需 swayfx)✅ 开箱即用✅ 基本特效
WSLg 兼容理论上可行❌ 不支持
Bug 率稳定已很少稳定
触摸板普通还算不错优秀
脚本扩展有限一般强(IPC 丰富)
适合人群求稳的 i3 遗老追求体验的纯 Linux 用户-

参考资料

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Theme Stack