macOS 到现在仍然没有一个明确、可靠、官方支持的开关,用来彻底关闭“全屏应用”和“普通桌面/普通窗口”之间切换时的 Space 动画。这个问题看起来像小事,但长期使用下来非常折磨:它不是单纯的视觉风格,而是系统强制把用户的注意力拖进一段无法取消的过渡动画里。对于追求低延迟、频繁 Cmd-Tab、容易被动画打断或者单纯不想看动画的人来说,这就是一个很神经病的设计。用户已经打开“减少动态效果”,已经明确表达“不想要动画”,系统仍然坚持保留这段切换效果,这个决策很反用户。
截至 2026-05-06,公开页面里最新稳定版本是 macOS Tahoe 26.4.1。Apple 官方有“减少动态效果”选项,也有一些系统默认值可以减少窗口、Dock、Finder、Mission Control 的动画。但这里的关键限制是:这些设置只能减少一部分动态效果,不能彻底关掉原生 Spaces/全屏应用之间的切换动画。
两类方案的本质区别
当前比较现实的路线主要是 yabai 和 AeroSpace。它们解决问题的层次不一样。
yabai 的思路是接管或修补 macOS 原生窗口/Spaces 机制。
yabai 正常能力依赖 Accessibility API,用来管理窗口、聚焦、布局等。更深的 Spaces 能力过去主要依赖 scripting addition,也就是向 Dock.app 注入扩展,从而控制原生 Spaces 行为。这也是 yabai 以前经常和“部分关闭 SIP”绑在一起的原因。
对“Cmd-Tab 从普通桌面切到全屏 app 时不要动画”这个需求来说,yabai 更对口,因为它处理的正是 macOS 原生 Space focus 这条路径。新版 yabai 文档里还有一个配置项:
yabai -m config skip_window_focus_animation on
它的描述就是:当 inactive Space 上的应用或窗口被聚焦时,绕过 macOS 的 Space 动画。文档还说明,如果你不用 scripting addition,才应该开这个;scripting addition 实现同类能力,而且更 robust。换句话说,如果你的核心诉求就是保留原生全屏、保留 Cmd-Tab 行为、但去掉切换动画,yabai 仍然是更贴近问题本身的工具。
AeroSpace 的思路是绕开 macOS 原生 Spaces。
AeroSpace 不试图深度修补 Apple 的 Spaces。它提供自己的 workspace 模型:inactive workspace 的窗口会被移动到可见区域外,切回时再恢复。这样做的好处很直接:不需要关闭 SIP,workspace 切换天然没有原生 Space 动画,整体更干净,也更不容易被系统更新破坏。
但代价同样明确:AeroSpace 的推荐使用方式是只保留一个 macOS Space,不再深度依赖原生 Mission Control/Spaces 工作流。如果你继续使用绿色按钮的原生全屏,那个 app 仍然会进入 macOS 原生 full-screen Space;Cmd-Tab 跳过去时,仍然可能触发 Apple 那套全屏/Space 切换机制。AeroSpace 不是为了修这条路径,而是让你尽量别走这条路径。
所以怎么选
如果你坚持使用 macOS 原生全屏,并且主要痛点是 Cmd-Tab 在全屏 app 和普通 app 之间切换时的动画,那么优先选 yabai。最小化方案就是只运行 yabai,配置 skip_window_focus_animation on,不一定需要 skhd。skhd 是键盘绑定工具,不是去动画的关键。
如果你愿意放弃原生全屏,把工作流改成“普通窗口最大化 + tiling/workspace”,那么 AeroSpace 更干净。它绕开了 Apple 最顽固的那条动画路径,不需要关 SIP,长期维护成本更低。
如果你只是想减少普通系统动画,可以用系统设置里的“减少动态效果”,再加上一些 defaults:
defaults write -g NSAutomaticWindowAnimationsEnabled -bool false
defaults write -g NSScrollAnimationEnabled -bool false
defaults write -g NSWindowResizeTime -float 0.001
defaults write com.apple.finder DisableAllAnimations -bool true
defaults write com.apple.dock expose-animation-duration -float 0
killall Finder
killall Dock
这套开销最低,因为没有常驻进程。但它不能彻底解决原生全屏 Space 切换动画。
真正的问题在 Apple
这里最荒谬的地方是:用户不是要求一个复杂能力,只是要求一个明确的开关:
当用户开启 Reduce Motion,或者单独打开 “Disable Space transition animations” 时,Cmd-Tab、Dock 点击、Mission Control、全屏 app 与普通桌面之间的切换都应该允许立即完成,不要强制播放动画。
这不是审美问题,是控制权问题。动画对一部分用户是美感,对另一部分用户是延迟、干扰、眩晕和效率损耗。macOS 允许用户调整大量细枝末节,却在这种高频交互上不给彻底关闭选项,逼用户在 yabai、scripting addition、SIP、或者完全改变工作流之间做选择。这个设计非常不合理。
理想状态应该很简单:Apple 提供官方、稳定、无副作用的设置项。用户可以保留原生全屏、原生 Cmd-Tab、原生 Spaces,同时把切换动画完全关闭。不要把“减少动态效果”做成一个含糊的折中,不要让第三方工具承担系统本该提供的控制权。
参考:
- Apple 最新 macOS 版本页面:Find out which macOS your Mac is using - Apple Support
- Apple macOS 反馈页面:Feedback - macOS - Apple
- yabai 文档:yabai/doc/yabai.asciidoc at master · asmvik/yabai · GitHub
- AeroSpace:GitHub - nikitabobko/AeroSpace: AeroSpace is an i3-like tiling window manager for macOS · GitHub
- AeroSpace Guide:AeroSpace Guide