小类随手记

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 本质上是堆叠式窗口管理器,虽然带了平铺功能,但用起来非常别扭和简陋。

  • 很多应用的边框/标题无法隐藏也无法被wm接管,然后就感觉布局混乱且丑
  • 它的工作区对大部分bar(waybar dms)都不兼容,你需要自己写插件/脚本实现(如果你用 DMS,可以参考我写的 DMS 工作区插件 解决这个问题)

Workspace 在 Waybar 和其他 dock 下都无法直接支持,需要单独做插件。它自带的 wf-panel 丑得像 1980 年代的东西。

不推荐。除非你对堆叠式有执念且无法接受 GNOME/KDE/XFCE/Openbox等。


Niri —— 最有争议的那个

Niri 在之前那篇 Master 自动布局 里已经详细讲过自动布局的实现,这里从选型角度聊聊它的定位。niri有一个颠覆性的窗口布局方式,同时成熟度又不错。这导致它相当有争议性。

优点

  • 成熟度和易用性不错。接近开箱即用,对堆叠式桌面迁移过来的用户非常友好——默认把窗口都堆叠到右侧,会滑动就能切换窗口,不会有窗口被挤压到无法显示的问题
  • 支持 WSLg 下运行(虽然无法避免被 Windows 劫持部分窗口焦点),这是 Hyprland 做不到的
  • 可扩展性不错:niri msg action xxx 的 IPC 机制非常强大,可以用 shell 或 Python 实现很多扩展功能。我之前写的自动布局脚本就是基于这套 IPC

缺点

  • Niri 因为它颠覆性的布局方式,它有平铺式桌面的形式,但没有传统平铺式桌面的高效
  • 整体窗口管理效率远低于传统的 i3 / Sway / Hyprland 逻辑。Niri 的滚动平铺(scrollable tiling)在带鱼屏上体验极佳,但在普通屏幕上,可视屏幕区域内窗口很少,大量窗口处于不可见状态,需要频繁滑动/切换/预览,效率大打折扣,双屏幕模式切换到对应工作区操作繁琐,也不直观。无论操作还是直觉都是熔断
  • 我写过一个用脚本模拟实现的自动 master 布局(即上一篇),但即便完成,也只能是对 Hyprland 的拙劣模仿,实际体验完全不在一个层面。而且 Niri 官方已经明确拒绝了新建窗口改变已有列大小的相关 PR,短期内不可能期待官方实现。而我没有找到能在单工作区“品字/倒品字”形布局的方法。

小结

Niri 是一个新手极度友好,也是新手体验平铺窗口的很好的方式,而不是"让你高效操作几十个窗口"的工具。

关于niri的一些个人评价: niri更像是作者的"自我取悦"工具,用他自己的舒适区强行定义niri的正确性,拒绝了很多优秀的pr和isue,你必须学会接受他的设计哲学。用他认为的高效的方式来管理窗口。 但同时: niri也很强大完成度也很高。如果你没有被i3/sway/hyprland这些传统的平铺桌面“毒害”过,直接从niri开始也是一个不错的选择


cosmic – 有分量的一个

不得不说 cosmic的成熟度已经很高了,尤其是平铺模式 可用性也非常好,尤其是不同动作区可以配置为堆叠/平铺 这点很舒适。 我也用过相当长的一段时间。 但是,对比 hyprland/niri/wayfire + dms 的方案,真的太丑太呆了。

横向对比

项目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