发布时间

我的 Wayland 窗口管理器之旅:从 i3wm 到 River


我的 Wayland 窗口管理器之旅:从 i3wm 到 River

近年来,Linux 桌面生态中最重要的变化之一,就是从 X11 向 Wayland 的过渡。作为一个重视效率和可定制性的人,我在不同 Wayland 窗口管理器之间的探索既充满挑战,也让我受益匪浅。下面就是我从想用 i3wm,到最终把 River 作为日常主力方案的全过程。

我的配置文件放在 dotfiles

起点:i3wm 与 X11 的现实检验

和很多 Linux 爱好者一样,我最初被 i3wm 优雅的平铺式窗口管理吸引。窗口能够自动以逻辑清晰、空间高效的方式排列,这正是我工作流需要的东西。不过有一个关键问题:i3wm 是构建在 X11 之上的,而 X11 已经显露疲态。

到了 2025 年,X11 基本已经处于维护模式,几乎没有活跃开发。它的架构在当年确实具有革命性,但已经缺少现代桌面环境所需的安全特性与性能优化。Wayland 则提供了:

  • 更好的安全性:应用之间无法互相窥探,也不能捕获其他窗口内容
  • 更好的性能:输入延迟更低,图形处理更高效
  • 更现代的架构:为今天的硬件和使用场景而设计
  • 持续活跃的开发:不像 X11 那样基本停滞

形势已经很明确了:如果我想要一个面向未来的桌面环境,就必须拥抱 Wayland,并找到合适的 i3wm 替代品。

第一次尝试:Sway 与 NVIDIA 噩梦

顺理成章的下一步就是 Sway。它基本可以看作是 i3wm 在 Wayland 时代的精神续作。Sway 提供了几乎和 i3wm 一样的功能,但原生运行在 Wayland 上。看起来它是理想方案——直到我撞上 NVIDIA 这堵墙。

我的显卡是一张虽然有点老、但仍然能用的 RTX 1080,而 Sway 官方并不支持 NVIDIA 专有驱动。当你用 NVIDIA 驱动启动 Sway 时,会直接看到这句提示:"Proprietary Nvidia drivers are NOT supported. Use Nouveau."

虽然可以通过 --unsupported-gpu 参数绕过去,但这种做法有不少问题:

  • Bug 或故障得不到官方支持
  • 可能存在稳定性问题
  • 性能可能不够理想
  • 参数名字本身(--my-next-gpu-wont-be-nvidia)也多少带点羞辱意味

后来也出现过 --ignore-gpu 启动选项,但它更像是一块创可贴,而不是正式解决方案。我需要一个更可靠、适合日常使用的选择。

Hyprland 实验:功能丰富,但有些过头

因为受够了 Sway 在 NVIDIA 上的限制,我决定尝试 Hyprland。这个合成器承诺提供不一样的体验——它从一开始就是为 Wayland 构建的,而且比 Sway 具备更好的 NVIDIA 兼容性。

Hyprland 的功能非常吸引人:

  • 动态平铺和流畅动画
  • 圆角与模糊效果
  • 非常丰富的自定义能力
  • 活跃开发、更新频繁
  • 相比 Sway 更好的 NVIDIA 支持

一开始,Hyprland 看起来几乎就是完美解法。动画流畅、配置灵活,而且在我的 RTX 1080 上确实能正常工作,不需要任何“不受支持”的启动参数。

但用了 一段时间后,我意识到 Hyprland 对我来说可能还是 太多了。它显得比较重,塞满了我并不会真正使用的功能。大量动画虽然视觉上很酷,但对我这种更偏向效率的工作流来说,有时反而显得没必要。我开始怀念一种更简单、更轻量的方案。

最终选择:River —— 简单、高效、可靠

在感受到 Hyprland 的功能膨胀之后,我开始寻找一种既能保留简洁性、又能较好支持 NVIDIA 硬件的替代方案。最终我找到了 River

River 是一个基于 wlroots 的动态平铺式 Wayland 合成器,它在很多方面都达到了我想要的平衡:

为什么 River 适合我

轻量理念:River 专注于核心功能,不追求多余的堆砌。它受 dwm 和 xmonad 启发,强调简洁与效率。

NVIDIA 兼容性:同样基于 wlroots,River 在 NVIDIA GPU 上的体验比 Sway 好得多。虽然也谈不上官方支持,但稳定性明显更高。

灵活配置:River 通过 riverctl 工具进行运行时配置,可以动态调整,而不必频繁重启。

基于标签的组织方式:不同于传统工作区,River 使用 tags,允许窗口同时属于多个标签,灵活性更高。

持续活跃开发:项目一直在维护,更新频繁,也会持续修复 bug。

River 的实际体验

River 的配置过程非常直接。它通过 shell 脚本调用 riverctl 命令来完成设置,结构清晰,也容易修改。性能表现很出色——比 Hyprland 更灵敏,同时又提供了我所需要的全部平铺功能。

最重要的是,River 在我的 RTX 1080 上一直很稳定。虽然 NVIDIA 用户依旧没有官方支持,但基于 wlroots 的方案总体上比 Sway 的方式更兼容。

学到的经验

这段 Wayland 窗口管理器探索让我得到几个很重要的结论:

1. 硬件兼容性真的很重要

不要低估 GPU 兼容性的影响。软件再优雅,如果不能在你的硬件上稳定运行,也没有意义。

2. 功能更多 ≠ 更好

Hyprland 的功能非常丰富,也确实令人印象深刻,但对我的工作流来说,最终并没有那么必要。有时候,更简单的方案反而更有效。

3. Wayland 生态正在成熟

虽然兼容性挑战依然存在,尤其是在 NVIDIA 硬件上,但 Wayland 生态已经进步了很多。大多数使用场景如今都有可行解。

4. 社区方案会填补空白

像 River 这样的项目说明,开源社区正在积极填补 Wayland 生态中的空缺,而且很多时候做出的方案比官方替代品还更适合实际使用。

展望未来

Linux 桌面环境还会继续演进,而 Wayland 显然就是未来。我从 i3wm 走到 River 的过程,其实也映射了整个 Linux 社区从 X11 走向 Wayland 的大趋势。

如果你也考虑进行类似迁移,我会建议:

  • 先看你的硬件:在选择方案前,先确认 GPU 兼容性
  • 结合自己的工作流:窗口管理器的理念要和你的实际需求匹配
  • 别怕尝试:Wayland 生态里有很多值得探索的替代方案
  • 提前考虑 NVIDIA 问题:如果你用的是 NVIDIA,务必把兼容性挑战纳入评估

River 证明了它就是适合我这套环境的方案——轻量、稳定、高效。它说明最好的解决方案不一定是最热门的,而是最适合你自身需求与限制的那个。

从 X11 走到 Wayland 看起来也许有些吓人,但只要方法和工具选对了,不仅完全可行,而且很值得。Wayland 在安全性、性能和现代架构上的提升,足以让这段迁移过程变得有意义,即使途中确实要跨过一些兼容性障碍。