不是所有平铺窗口管理器,都能做到像 niri 这么流畅

发布日期:June 11, 2025, 8:51 a.m.
摘要:

在越来越多的桌面用户追求效率与极简的今天,传统的“窗口重叠+鼠标拖动”的界面操作方式逐渐显得笨重。你是否曾想过:打开新窗口,原有窗口却毫无影响;多显示器之间井然有序,不再混乱?这并不是幻想,niri,作为一款可滚动的平铺窗口管理器,正悄然改变我们的使用方式。

什么是“可滚动的平铺窗口管理器”?

在了解 niri 之前,我们先来聊聊“平铺窗口管理器”是怎么一回事。传统的桌面环境允许窗口自由摆放和重叠,但效率常常取决于手动调整。而“平铺窗口管理器”则另辟蹊径:每个新窗口自动被安排在合适的位置,避免重叠,提升效率。

但 niri 更进一步:它引入了“可滚动”的概念。想象一下,每个显示器上不再是一个固定格子的窗口矩阵,而是像网页一样可以“横向滚动”的窗口带。新窗口不会挤占老窗口的位置,只会延展在右侧,形成一条“无限长”的横向时间线。这让窗口的打开顺序变得有机、连贯,而且极其直观。

niri 的窗口排列逻辑:水平列 + 垂直工作区

niri 将窗口组织成横向滚动的“列”,每个新窗口都被安排在右侧新的一列中,现有窗口的位置完全不受影响。这不仅意味着打开新窗口不会打扰当前操作,也让回顾过去操作变得像滑动照片一样简单。

每个显示器有独立的“窗口带”,窗口不会跨越显示器——你在副屏打开的内容不会“越界”干扰主屏。这对多显示器用户来说是一大福音,尤其是在工作区切换时,内容更清晰,注意力更集中。

同时,niri 的“工作区”(workspace)是动态的、垂直排列的——这和 GNOME 类似,但更灵活。你可以一直向下切换到一个空工作区,随时保持整洁感。

连接显示器,不再是桌面混乱的代名词

很多人用过双屏、甚至三屏设置都知道,一个屏幕断开重连后,窗口常常回到混乱状态,排列被打乱。而 niri 则对这一问题做了非常优雅的设计。

在 niri 中,显示器的工作区状态是可以“记住”的。当你拔掉副屏时,它的窗口会自动迁移到主屏上,但如果再连接回来,它们又能“原地复原”——就像什么都没发生一样。这种“空间记忆感”,让临时更换工作环境不再是一场灾难。

动态窗口分组与标签式管理

niri 不仅能自动平铺窗口,还支持将多个窗口“分组”成标签页的形式。这类似浏览器标签页,把多个相关窗口(比如浏览器、笔记、参考文档)合并在一列中,通过标签切换,大大节省了屏幕空间,也让逻辑组织更清晰。

对于程序员来说,这种方式堪称生产力神器:你可以将调试终端、代码编辑器、文档分组在一个标签组里,按需切换,而不是堆在一起混战。

可自定义的外观与交互体验

在视觉上,niri 支持边框渐变、动画、间距、透明度等精细调节,连边框颜色都可以使用 Oklab 或 Oklch 模型实现自然过渡。同时,niri 支持用自定义着色器来调整动画细节,对喜欢 DIY 的用户来说非常友好。

交互方面,niri 提供完整的触控板和鼠标手势支持,甚至还能识别绘图板和触摸屏(虽然目前还没有完整的触屏手势),你甚至可以用手势来快速切换工作区、分组窗口。

截图、录屏、投屏,全靠自己搞定

niri 内置了截图 UI,并支持通过 xdg-desktop-portal-gnome 实现窗口录屏和投屏。它还允许“屏蔽”敏感窗口,不让它们出现在投屏中,这对远程演示和会议分享尤为重要。

投屏时你还能实时切换“投影窗口”,比如一边投屏演示 PPT,一边偷偷打开参考笔记,不被别人看到。这种灵活的控制方式,是传统桌面难以实现的。

和传统 X11 应用兼容吗?

虽然 niri 原生是 Wayland 架构,原则上不直接支持 X11,但通过一个名叫 xwayland-satellite 的工具,可以轻松运行传统 X11 应用——比如 Steam 游戏、JetBrains 系列 IDE、Electron 应用(如 Discord、Slack)甚至 Ghidra 都能良好运行。

需要注意的是,一些对窗口坐标依赖较强的老旧 X11 程序,在 niri 中可能无法精确定位,适合使用嵌套环境(如 labwc)或 rootful 模式解决。

谁适合使用 niri?

niri 并不是一个“完整的桌面环境”,它更像是一个组件型的“窗口引擎”。它需要你搭配状态栏(如 waybar)和启动器(如 fuzzel)等工具一起使用。因此,它并不适合刚接触 Linux 桌面的用户,而是面向有一定配置能力、希望构建个人化使用环境的高级用户。

如果你追求极致效率、注重窗口组织,并且愿意花点时间配置系统,那么 niri 无疑是一个非常值得尝试的新选择。