niri:基于 Rust 的 Wayland 平铺窗口管理器项目

A scrollable-tiling Wayland compositor.

分支11Tags23
文件最后提交记录最后更新时间
6 天前
5 小时前
5 小时前
6 天前
2 个月前
5 小时前
5 小时前
7 个月前
6 天前
11 天前
11 天前
3 年前
17 天前
9 个月前
2 年前
2 个月前
1 个月前
5 个月前
3 年前
10 个月前

niri

一款可滚动平铺式 Wayland 合成器。

Matrix GitHub License GitHub Release

快速开始 | 配置 | 配置展示

niri with a few windows open

关于

窗口在向右无限延伸的条带上按列排列。 打开新窗口时,现有窗口不会重新调整大小。

每个显示器都有自己独立的窗口条带。 窗口永远不会“溢出”到相邻显示器。

工作区是动态的,并呈垂直排列。 每个显示器都有独立的一组工作区,并且最下方始终保留一个空工作区。

在合理的情况下,工作区布局会在显示器断开与重新连接时保留。 当某个显示器断开连接时,其工作区会转移到另一台显示器;重新连接后,它们会移回原来的显示器。

功能

视频演示

https://github.com/niri-wm/niri/assets/1794388/bce834b0-f205-434e-a027-b373495f9729

也可以观看这些视频,它们展示了 niri 的许多功能:

状态

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 的全局窗口坐标空间中运作,以防止窗口溢出。

其他可滚动平铺实现

以下是一些实现类似工作流的其他项目:

联系方式

我们的主要沟通渠道是 Matrix 聊天,欢迎加入并提问:https://matrix.to/#/#niri:matrix.org

我们还有一个社区 Discord 服务器:https://discord.gg/vT8Sfjy7sx

项目介绍

一个可滚动平铺的Wayland合成器。【此简介由AI生成】

定制我的领域
8628.67 K1.23 K访问 GitHub