Rift 是一款 macOS 平铺窗口管理器,Rust 编写,支持 5 种布局模式(i3/BSP/dwm/niri),自带菜单栏、任务控制视图、窗口拖拽交换、动画效果。最大亮点是无需关闭 SIP、支持多显示器独立 Space,适合追求效率的 macOS 进阶用户。
🎤 引言
用 Mac 的程序员/极客圈子里,窗口管理器是个永恒话题。Rectangle、Raycast、Mosaic 这些靠边站,真要效率拉满还得平铺(tiling)流派——窗口自己找位置,不用鼠标拖来拖去。
macOS 上平铺方案有两个老大哥:yabai 和 Aerospace。yabai 强但是要关 SIP,Aerospace 简单但缺动画。后来有人在 HN 上发了个新项目 Rift,212 个 upvote,122 条讨论,有人直接说"这是我等了三年的东西"。
Rust 写的,fork 自 glide-wm,用了 yabai 逆向工程的私有 API,最大卖点是不需要关 SIP,而且支持「每个显示器独立 Space」——这个坑 yabai 和 Aerospace 都踩过。
⭐ 核心功能
5 种布局模式
| 布局 | 类似 | 适合场景 |
|---|---|---|
| Tiling | i3/sway | 经典平铺,窗口等大排列 |
| BSP | bspwm | 二叉树分割,更灵活 |
| Master-stack | dwm | 主窗口 + 侧边栏叠加 |
| Scrolling columns | niri | 列滚动式,适合长窗口 |
| Stack | accordion | 手风琴叠加,适合标签页多的 App |
实际用的时候可以切,每个 workspace 独立记忆布局,切换workspace 自动恢复,不用每次重新调。
Mission Control 视图
Rift 给你塞了一个 macOS 原生的任务控制界面——视觉化管理 workspace,不用记快捷键就能直观导航切换。Aerospace 只能显示缩略图,Rift 这个体验更接近原生。
窗口拖拽交换
鼠标拖着一个窗口"飘"到另一个窗口上,松手就换位。不需要快捷键,手势直觉,社群里有人专门安利这个功能。
动画支持
这是 Aerospace 用户最大的痛点——Aerospace 切 workspace 是"咔嗒"一下冷跳转,Rift 加了流畅动画,视觉体验完全不一样。官方 demo.gif 演示的就是这套动画。
Trackpad 手势
切 next/previous workspace 的手势跟原生 macOS 完全一样,Mission Control 那套 swipe 体验无缝继承。
热点 & Focus follows mouse + auto raise
窗口聚焦跟鼠标走,支持 auto raise,不用点一下就能切过去。
📥 安装与使用
前期准备
项目 README 特别强调:暂时没有正式 Release,代码在 active 开发中。想尝鲜的直接拉源码编译,或者蹲 GitHub Releases 等官方打包。
Wiki 有 Quick Start 和 Config 两篇,照着走就行。
布局切换(快捷键示例,config 里自定义)
# 默认 keybindings 示例(实际以 config.toml 为准)
Super + l # 切换到下一个 workspace
Super + h # 切换到上一个 workspace
Super + e # 切换到下一个布局
Super + w # 聚焦跟随鼠标(开/关)
Super + 1-5 # 直接跳到指定 workspace热重载配置
config.toml 改完不用重启 Rift,直接 reload 生效。这是比 yabai 方便的地方——yabai 改 config 要 skhd --reload,Rift 连这一步都省了。
Sketchybar 联动
正在用 Sketchybar 做状态栏?Rift 支持发信号给第三方程序:
- workspace 切换时发信号
- 窗口变动时发信号
- 用 rift-cli 或者 Lua 客户端(rift.lua)发命令
# rift-cli 示例
rift-cli set-layout tiling
rift-cli workspace 2Matrix 社区
遇到 bug 或想讨论功能,加入 #rift:matrix.org,作者本人在上面活跃。
🎯 适用场景
- 多显示器用户:每个显示器独立 Space,Rift 是目前唯一原生支持这个的平铺 WM,不用折腾 yabai 的 space/display 映射
- i3/sway 移民:从 Linux 过来的开发者,Rift 的 Tiling 布局模式几乎是无缝切换
- 效率强迫症:窗口大小固定、位置固定,专注于内容而不是整理窗口
- Trackpad 重度用户:手势切 workspace,跟 macOS 原生操作习惯一致,不用学新东西
- 设计师/多 App 切换:Master-stack 模式主窗口展示设计稿,侧边栏放参考图和工具栏
不适合:刚接触 Mac 不久、窗口管理需求简单的用户(Rectangle 免费功能够用);对稳定性要求极高、不能接受 active 开发期 bug 的用户。
🔍 对比/替代方案
| 工具 | 语言 | SIP | 多显示器独立 Space | 动画 | 布局种类 |
|---|---|---|---|---|---|
| Rift | Rust | ❌ 不需要 | ✅ 原生支持 | ✅ 有 | 5 种 |
| yabai | Rust | ⚠️ 需要关 SIP | ❌ 不支持 | ❌ 无 | 4 种 |
| Aerospace | Swift | ✅ 不需要 | ❌ 不支持 | ⚠️ 有限 | 2 种 |
| Rectangle | Swift | ✅ 不需要 | ✅ 支持 | ❌ 无 | 多窗格 |
最大的差异化:Rift 是目前唯一同时满足「不关 SIP + 多显示器独立 Space + 有动画」的 macOS 平铺 WM。yabai 用户想要动画?目前没有解决方案。
⚠️ 注意事项
1. 无正式 Release
README 白纸黑字:"There is no official release yet; expect ongoing changes." 要稳定生产用等正式版,当前跑代码可能遇到 breaking change。
2. SIP 的真相
"不需要关闭 SIP" 这个说法要拆开看——Rift 用的是 yabai 逆向工程的私有 API,这些 API 本身就存在于 macOS 里,只是没文档。SIP 禁的是对系统完整性保护的修改,Rift 不改系统文件所以能过。但这也意味着:苹果系统更新可能让私有 API 失效,yabai 踩过这个坑。
3. 多显示器独立 Space 的局限
虽然文档说支持,但 GitHub Issues 里有人反馈 MacBook 合盖接外接显示器时 workspace 行为会有点怪——这跟 macOS 本身对多显示器的处理逻辑有关,不是 Rift 的锅但需要了解。
4. 配置门槛
对比 Rectangle 的"下载即用",Rift 要写 config.toml,快捷键、布局规则、显示器配置都要自己填。Linux i3 用户觉得简单,Mac 原生用户可能觉得麻烦。
5. 和 yabai 的取舍
如果你已经在用 yabai 且对动画没执念,没必要换——yabai 成熟度高、社区大、踩过的坑 Rift 可能还没踩过。
✅ 总结
优点:
- 唯一同时支持「不关 SIP + 多显示器独立 Space + 动画」的方案
- Rust 写的,性能和内存占用应该不错
- 5 种布局模式覆盖主流需求,可玩性高
- 热重载配置,改完不用重启
- Sketchybar 联动,状态栏玩家狂喜
缺点:
- 没有正式 Release,开发期 bug 不可避免
- 配置有门槛,小白上手比 Rectangle 难
- 社区还小(Matrix 几百人),遇到奇 bug 搜不到解法
- 依赖私有 API,系统更新可能炸
推荐指数:⭐⭐⭐⭐(macOS 效率进阶用户)
如果你被 yabai 的"SIP 必须关"卡住,或者眼馋 Aerospace 的动画但受不了它不支持独立 Space,Rift 是目前最优解。Linux 过来的 i3/sway 用户也能无痛迁移。追求开箱即用的普通用户,Rectangle 够用。