niri:可滚动平铺窗口管理器
niri 是一个基于 Wayland 的可滚动平铺窗口管理器,其独特之处在于提供了无限水平滚动的窗口排列方式。
用铁轨和车厢做一个类比(我可能是第一个使用这个类比的):
一个 workspace 就像是一条长度无限的铁轨,你可以在铁轨上:
- 放置无限数量的车厢(应用窗口)
- 交换两车厢的位置
- 在任意位置插入新的车厢
- 随意改变车厢长度、宽度(无上限)
以及,将车厢移动到其他铁轨(workspace)上。
是的,铁轨并不止一条,workspaces 是动态的,无上限的,可以想象成是无数条水平排列的铁轨集群。
当你将一个车厢移动到下一条铁轨时,如果那条铁轨不存在,niri 将会动态创建那条铁轨(动态铁轨)。
你可以给铁轨命名,那么它将会一直存在,且会排列在『动态铁轨』之前。通过按键绑定,实现随意切换铁轨、将车厢转移到指定铁轨。
核心特点
- 使用 Rust 编写
- 可滚动平铺:所有窗口在一个无限横向延展的条带上排列,打开新窗口不会影响现有窗口的大小。
- 动态工作区:每个显示器有独立的动态工作区,工作区可纵向排列并且支持自动调整。
- 监视器智能管理:断开或重新连接显示器时,工作区会根据需要自动迁移并复位。
- 内置功能:支持内置截图工具、监视器和窗口录屏支持(xdg-desktop-portal-gnome),并提供触控板和鼠标手势。
- 高级自定义:可配置窗口布局、间隙、边框、窗口尺寸,支持渐变边框与动画效果。
使用
niri 目前已实现了大部分核心功能,适合尝试。详细的安装和配置指南请参阅 niri 的 Wiki 页面。
存在的问题
- 不支持 electron 类应用输入法(text-input-v1),chromium、vscode、obsidian 等应用可能无法输入中文
- 不支持 floating window
- 无内置 Xwayland 支持
个人体验
我使用 NixOS,安装起来比较便捷,从 tty 启动,体验了一天,相当流畅丝滑,非常适合我的工作流,然后果断将 Hyprland (Hyprbug) 删除了。