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 下载最新版本:

下载 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