A scrollable-tiling Wayland compositor.
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 6 天前 | ||
| 5 小时前 | ||
| 5 小时前 | ||
| 6 天前 | ||
| 2 个月前 | ||
| 5 小时前 | ||
| 5 小时前 | ||
| 7 个月前 | ||
| 6 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 3 年前 | ||
| 17 天前 | ||
| 9 个月前 | ||
| 2 年前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 5 个月前 | ||
| 3 年前 | ||
| 10 个月前 |
一款可滚动平铺式 Wayland 合成器。
关于
窗口在向右无限延伸的条带上按列排列。 打开新窗口时,现有窗口不会重新调整大小。
每个显示器都有自己独立的窗口条带。 窗口永远不会“溢出”到相邻显示器。
工作区是动态的,并呈垂直排列。 每个显示器都有独立的一组工作区,并且最下方始终保留一个空工作区。
在合理的情况下,工作区布局会在显示器断开与重新连接时保留。 当某个显示器断开连接时,其工作区会转移到另一台显示器;重新连接后,它们会移回原来的显示器。
功能
- 专为可滚动平铺从头构建
- 类似 GNOME 的动态工作区
- 一个可拉远视角以总览工作区与窗口的概览
- 内置截图界面
- 通过 xdg-desktop-portal-gnome 实现显示器与窗口投屏
- 触摸板 与 鼠标 手势
- 将窗口分组为标签页
- 可配置布局:间隙、边框、struts、窗口大小
- 支持 Oklab 与 Oklch 的渐变边框
- 窗口与 layer-shell 表面的背景模糊
- 支持自定义着色器的动画
- 配置实时重载
- 支持屏幕阅读器
视频演示
https://github.com/niri-wm/niri/assets/1794388/bce834b0-f205-434e-a027-b373495f9729
也可以观看这些视频,它们展示了 niri 的许多功能:
- 《Niri 已成为我最喜爱的 Wayland 合成器》,作者:Brodie Robertson
- 《niri 怎么做到这么好用?实时演示 + 配置》,作者:Nick Janetakis
状态
Niri 已足够稳定,可用于日常使用,并具备通常期望于 Wayland 合成器的大多数功能。 许多人已将 niri 用作日常主力,并乐于在我们的 Matrix channel 中提供帮助。
快来试试吧! 请按照 快速开始 页面中的说明进行操作。 再搭配一个桌面外壳,例如 DankMaterialShell 或 Noctalia(或者自行搭建更传统的桌面配置):niri 本身并不是一个完整的桌面环境。 也可以看看 awesome-niri,这是一个收录 niri 相关链接和项目的清单。
以下是一些你可能会有疑问的地方:
- 多显示器:支持,这是从最初设计起就确立的核心功能。支持混合 DPI。
- 分数缩放:支持,并且 niri 的全部 UI 都会保持像素级完美。
- NVIDIA:看起来运行正常。
- 浮动窗口:支持,自 niri 25.01 版本开始。
- 输入设备:niri 支持数位板、触摸板和触摸屏。 你可以将数位板映射到指定显示器,或使用 OpenTabletDriver。 我们支持触摸板手势,但暂不支持触摸屏手势。
- Wlr 协议:支持,我们实现了大多数重要协议,例如 layer-shell、gamma-control、screencopy。 你可以在 wayland.app 每个协议页面的底部查看。
- 性能:虽然我在性能强劲的机器上运行 niri,但我会尽量关注性能。 我也见过有人在 2008 年的 Eee PC 900 上正常使用它,这着实令人惊讶。
- Xwayland:自 niri 25.08 起,通过 xwayland-satellite 实现集成。
媒体
niri:用 Rust 打造 Wayland 合成器 · 2024 年 12 月
这是我在 2024 年莫斯科 RustCon 上的演讲,介绍了 niri,以及我如何进行随机属性测试、性能剖析,并测量输入延迟。 演讲以俄语进行,但我准备了完整的英文字幕,你可以在 YouTube 的字幕语言选择器中找到。
对 Niri 背后开发者 Ivan 的访谈 · 2025 年 6 月
这是德国科技播客 Das Triumvirat 进行的一场访谈(使用英语)。 我们聊了 niri 的开发历程,以及我构建和维护 niri 的经验。
niri 可滚动平铺 Wayland 合成器巡礼 · 2025 年 7 月
一篇 LWN 文章,对 niri 提供了出色的概览和介绍。
如何测试 Wayland 合成器? · 2026 年 10 月
我的演讲介绍了 niri 中使用的一些测试技术:基于属性的测试、快照测试、客户端-服务器测试。 前半部分与我在 RustCon 上的演讲有重叠,后半部分是全新内容。 演讲以俄语进行,但我准备了完整的英文字幕,你可以在 YouTube 的字幕语言选择器中找到。
贡献
如果你想为 niri 提供帮助,无论是参与代码开发,还是从事非代码相关工作,都有很多途径。 概览可参阅 CONTRIBUTING.md。
灵感
Niri 深受 PaperWM 的启发,后者在 GNOME Shell 之上实现了可滚动平铺。
促使我尝试编写自己的合成器的原因之一,是能够妥善地将各显示器独立处理。 作为 GNOME Shell 扩展,PaperWM 必须在 Shell 的全局窗口坐标空间中运作,以防止窗口溢出。
其他可滚动平铺实现
以下是一些实现类似工作流的其他项目:
- PaperWM:基于 GNOME Shell 的可滚动平铺。
- karousel:基于 KDE 的可滚动平铺。
- scroll 和 papersway:基于 sway/i3 的可滚动平铺。
- Hyprland 内置了 滚动布局。
- Paneru 和 PaperWM.spoon:基于 macOS 的可滚动平铺。
联系方式
我们的主要沟通渠道是 Matrix 聊天,欢迎加入并提问:https://matrix.to/#/#niri:matrix.org
我们还有一个社区 Discord 服务器:https://discord.gg/vT8Sfjy7sx