OmniWM 是一款 macOS 平铺窗口管理器,致敬 Linux Niri 与 Hyprland,采用 Swift 原生开发。支持滚动列布局、BSP/Dwindle 多种平铺模式、Quake 终端与命令面板,完全签名公证无需关闭 SIP,企业环境可用,722 次 commit 活跃维护中。
🎤 引言
用 macOS 的程序员和设计师,多多少少都折腾过窗口管理。
macOS 自带的窗口管理太原始——要么手动拖拽调整,要么 Mission Control 多桌面切换效率低。第三方工具像 Rectangle、AltTab、Raycast 都是「手动挡」,固定好位置就不会再动。而 Linux 那边早就玩上了平铺窗口管理器(tiling WM):窗口自动填满屏幕、键盘切换工作区、拖拽改变布局比例,一个键盘快捷键搞定一切。
Linux 上最有名的平铺 WM 是 Niri(Rust 写的,滚动列布局)和 Hyprland(Wayland Compositor,动画丝滑)。但这两个都是 Linux only。
macOS 用户想体验平铺 WM,之前只能装 X11 环境或者虚拟机,延迟和体验都打折扣。
现在,OmniWM 把 Niri 的核心体验带到了 macOS——原生 Swift 开发,完全不需要虚拟机或者 X11 模拟层。更重要的是,它通过了 Apple 开发者签名和公证(notorized),企业环境也能装,IT 部门不用皱眉头。
⭐ 核心功能
OmniWM 的功能覆盖非常全面,不是简单的「窗口排列」工具,而是一套完整的平铺 WM 体验。
1. 多种平铺布局:Niri 列布局 + BSP/Dwindle
这是 OmniWM 最核心的卖点——一套工具,三种平铺模式:
Niri 滚动列布局:类似 Linux Niri,每个工作区是一列垂直滚动的窗口,窗口自动从上往下排列,适合大屏多任务工作流。
BSP(二叉树分割):经典平铺模式,把屏幕不断递归分割成两个区域,窗口按二叉树结构填满空间。
Dwindle: Spiral 布局的变体,窗口按螺旋顺序排列,适合喜欢紧凑布局的用户。
三种模式可以随时切换,通过快捷键或者命令面板操作。
2. Quake 终端(Ghostty 原生支持)
Linux 玩家熟悉的 Quake 风格下拉终端——按一个快捷键,终端从屏幕顶部滑入,再按一次收回去。
OmniWM 的 Quake 终端是真正用 libghostty 实现的,不是模拟。Ghostty 是 macOS 上性能极佳的终端模拟器,延迟极低,打字跟本地终端一样跟手。开发者自称「超过一个月在多显示器支持上卡住,但 Quake 终端体验是完美的」。
快捷键默认:Option + Esc
3. 命令面板(Command Palette)
一个统一的搜索面板,可以搜索所有窗口、App 菜单命令、OmniWM 快捷键设置。
macOS 原生菜单栏的菜单位置不固定,App 多了找起来费劲。命令面板把这些全部索引了,Control + Option + Space 调出,输入关键词直接跳。
4. App 菜单任意位置唤出
macOS 的 App 菜单只能在屏幕顶部 menubar 点,窗口多了要把鼠标移到顶部很麻烦。
OmniWM 支持在任何位置唤出 App 菜单,Control + Option + M 即可调出当前焦点 App 的完整菜单。
5. 工作区与多显示器管理
- per-monitor 独立工作区:每个显示器有自己独立的工作区集合,显示器之间不会互相干扰(这是 Niri 最初的设计动机)
- Niri Overview:类似 macOS Mission Control 的总览视图,可以看到所有窗口分布
- 工作区栏:可显示所有工作区状态,支持隐藏
6. 浮动窗口与 Simi Bar(状态栏图标管理)
- 任意窗口可以标记为浮动(floating),不受平铺规则约束
- 类似 Linux 的「保持唤醒」(Caffeine)功能
- 状态栏图标可以隐藏/显示(类似 Ice Bar)
7. 原生 macOS 特性集成
- native-tab 支持:尝试复刻 macOS 原生的 tab 行为(尽最大努力)
- SIP 无需关闭:这是企业用户最关心的——不需要关闭 System Integrity Protection,安全策略不受影响
- 开发者签名 + 公证:通过 Apple 审核流程,可以在 App Store 之外的分发渠道正常安装
📥 安装与使用
下载与安装
直接从 GitHub Releases 下载最新版本:
- 官方 Release 页面:github.com/BarutSRB/OmniWM/releases
- 最新稳定版:v0.5.2(截至 2026-07-05)
下载 OmniWM-vX.X.X.zip 后解压,双击 .app 即可安装。第一次运行会在「系统设置 → 隐私与安全性」里弹窗请求辅助功能权限(这是所有窗口管理器的要求)。
核心快捷键
| 功能 | 默认快捷键 |
|---|---|
| 聚焦窗口 ← → ↑ ↓ | Option + 方向键 |
| Quake 终端 | Option + Esc |
| 命令面板 | Control + Option + Space |
| App 菜单 | Control + Option + M |
| Overview(Niri 风格) | Option + Shift + O |
| 切换浮动窗口 | Option + Space |
| 全屏 | Option + Return |
| 平衡窗口大小 | Option + Shift + B |
部分快捷键默认是 Unassigned,需要去 Settings → Hotkeys 手动绑定。
编译源码(开发者)
OmniWM 是开源项目,有能力可以自己编译:
# 需要 macOS 14+ 和 Xcode 15+
git clone https://github.com/BarutSRB/OmniWM.git
cd OmniWM
make官方用 Swift Package Manager 管理依赖,不需要 CocoaPods 或 Carthage。
技术架构一览
| 类别 | 技术 |
|---|---|
| 语言 | Swift 5.9+ |
| 目标平台 | macOS 14+ (Sonoma/Ventura) |
| 架构 | 原生 macOS 应用,无 X11/虚拟机 |
| 依赖 | libghostty(终端)、私有 API |
| 构建工具 | Swift Package Manager |
| 签名 | Apple Developer ID + Notarization |
🎯 适用场景
OmniWM 不是给所有人的工具,以下场景才值得折腾:
1. macOS 深度用户 + Linux 平铺 WM 爱好者:已经在 Linux 上习惯了 Niri/Hyprland 的工作流,不想换回 Linux 或者装虚拟机。
2. 大屏/多显示器用户:27 寸以上显示器 + 外接显示器,窗口管理需求密集,平铺 WM 可以把屏幕空间利用率最大化。
3. 开发者/写作者:需要同时打开 IDE、文档、浏览器、终端,多任务并行工作流。平铺 WM 比 Mission Control 更高效。
4. 企业 macOS 用户:公司 IT 限制不能关闭 SIP,但有平铺 WM 需求。OmniWM 是少数可以在企业合规环境下运行的平铺 WM。
5. Vim/键盘流玩家:平铺 WM 的精髓在于键盘操作,对快捷键有执念的用户会发现 OmniWM 的效率提升是质的飞跃。
🔍 对比/替代方案
macOS 上做窗口管理的工具很多,但平铺 WM 赛道几乎只有 OmniWM:
| 工具 | 类型 | 平铺 | 多布局 | SIP 关闭 | 企业安全 |
|---|---|---|---|---|---|
| OmniWM | 平铺 WM | ✅ 原生 | ✅ Niri/BSP/Dwindle | ❌ 不需要 | ✅ 签名公证 |
| Rectangle | 窗口吸附 | ❌ | ❌ | 不需要 | ✅ |
| AltTab | 窗口切换 | ❌ | ❌ | 不需要 | ✅ |
| Magnet | 窗口吸附 | ❌ | ❌ | 不需要 | ✅ |
| Amethyst | 平铺 WM | ✅ X11 来源 | ❌ BSP | 不需要 | ❌ 未签名 |
| kwm | 平铺 WM | ✅ | ❌ | ⚠️ 部分需要 | ❌ |
| SizeUp | 窗口吸附 | ❌ | ❌ | 不需要 | ✅ |
- Rectangle / Magnet:最流行的窗口吸附工具,操作简单,但本质是「手动排列」,不是平铺
- Amethyst:macOS 上最早的平铺 WM,但基于 X11 代码,多年没有大的架构更新
- kwm:曾经最接近 Linux 体验的 macOS 平铺 WM,但项目已停止维护
OmniWM 的核心差异:唯一同时满足「原生 Swift」「多平铺布局」「Niri 风格」「企业级签名」的 macOS 平铺 WM。
⚠️ 注意事项
用 OmniWM 之前,有些坑需要提前知道:
1. 多显示器仍有视觉闪烁
开发者在 Swift Forum 坦言,这是他最头疼的问题。当在多显示器之间移动或重排窗口时,会短暂看到窗口在错误显示器上「泄漏」一下才回到正确位置。最终结果是正确的,但中间状态可见。目前已经尝试了序列化/批量更新、延迟帧变化、Accessibility 调用重排序等方法,仍未完全解决。
2. Magic Mouse/触控板手势未本地验证
官方文档明确写了「Magic Mouse 和触控板手势在没有对应硬件的情况下无法本地验证,但没有收到问题报告」。如果你用妙控板/妙控鼠标,某些手势可能体验不佳。
3. 需要辅助功能权限
macOS 所有窗口管理器都需要在「系统设置 → 隐私与安全性 → 辅助功能」里授权,否则无法控制窗口位置。这是系统级限制,不是 bug。
4. macOS 14+ 才支持
根据 Swift 代码和构建配置,OmniWM 需要 macOS Sonoma(14.0)或更新版本。旧系统装不上。
5. 不支持 iPad(现阶段)
OmniWM 是 macOS 专用工具,mac Catalyst 方案暂不考虑,iPad 用户只能等未来版本。
6. 快捷键默认不完整
GitHub README 里很多快捷键显示 Unassigned,需要用户自己去设置里绑定。如果习惯开箱即用,可能要折腾一下。
✅ 总结
OmniWM 把 Linux 上最流行的平铺窗口管理体验带到了 macOS,而且做到了企业级可用——签名公证,不需要关闭 SIP,IT 部门不会把你踢出去。
优点:
- Niri + Hyprland 风格的多布局平铺(BSP/Dwindle/滚动列)
- Ghostty 原生 Quake 终端,延迟极低
- 命令面板 + App 菜单任意位置唤出
- 企业级签名公证,无需关闭 SIP
- 722 次 commit,65 个 release,活跃维护
缺点:
- 多显示器切换时窗口有短暂视觉闪烁
- Magic Mouse 手势未完全验证
- 需要 macOS 14+
- 快捷键默认不完整,需要手动配置
推荐指数:⭐⭐⭐⭐(4/5)
如果你用 macOS + 大屏 + 多任务工作流,习惯了 Linux 平铺 WM 或者想从手动窗口管理升级,OmniWM 是目前 macOS 上体验最完整的平铺 WM 方案。2.1k Stars 和持续迭代的 release 说明项目还在健康维护。
GitHub 仓库:BarutSRB/OmniWM
官方文档:barutsrb.github.io/OmniWM
演示视频:youtube.com/watch?v=WcHjGkuD2Fc