类 Windows Alt+Tab 的 macOS 窗口切换器:窗口预览、一键退出应用、跨桌面跳转,菜单栏还能看到藏在后台运行的应用。
⬇️ 下载最新版 · macOS 14 及以上 · Apple 芯片 / Intel 通用
- ⌘⇥ 窗口切换:按住 ⌘ 连按 ⇥,按窗口(而不是按应用)切换,松开 ⌘ 跳转;快速按一下直接回到上一个窗口。也可以改成 ⌥⇥,保留系统自带的 ⌘⇥。
- 实时预览:每个窗口都有缩略图,右下角是应用图标。
- 在预览里退出应用:鼠标悬停点 ×,或按住 ⌘ 时按 Q;按住 ⇧ 则强制退出。
- 跨桌面 / 全屏:其他桌面和全屏空间里的窗口也会列出,标明「桌面 N」或「全屏」,点击直接切过去。全屏 Chrome 这种拆成多个窗口的应用会合并成一张卡片。
- 最小化、已隐藏、没有窗口的应用也能切换。
- 搜索:面板打开后直接打字,支持拼音全拼和首字母(
wx→ 微信)。 - 菜单栏:隐藏运行的应用:列出正在运行、但不在程序坞里显示的应用(菜单栏工具、后台助手等),可以打开、在访达中显示、退出或强制退出。
- 设置窗口:显示激活状态、一键授权和重置权限,可以选快捷键、显示选项,以及登录时启动。
-
在 Releases 下载
TabSwitcher-x.x.zip,解压后把 TabSwitcher.app 拖进「应用程序」。 -
第一次打开:应用没有经过 Apple 公证,直接双击会被系统拦下。任选一种方法打开:
- 在「应用程序」里右键 TabSwitcher → 打开 → 打开;或者
- 在终端里执行:
xattr -dr com.apple.quarantine /Applications/TabSwitcher.app
-
打开后会弹出设置窗口,按提示授权:
- 辅助功能(必需):用于监听快捷键、切换到指定窗口。
- 屏幕录制(可选):用于显示窗口缩略图和标题,授权后需要重新启动 TabSwitcher。
设置窗口顶部变成绿色的「已激活」,就可以用 ⌘⇥ 了。
| 按键 | 作用 |
|---|---|
| ⌘ ⇥ | 按住 ⌘ 连按 ⇥ 选择,松开 ⌘ 跳转 |
| ⌘ ⇧ ⇥ | 反向选择 |
| ⌃ ⌥ ⇥ | 打开并保持,松开也不关闭(没授权时也能用) |
| 直接打字 | 搜索应用 / 窗口,支持拼音 |
| ← → ↑ ↓ | 移动选择 |
| ⌘ + Q | 退出选中的应用(⇧Q 强制退出) |
| 悬停 → × | 退出该应用(⇧ 点击强制退出) |
| esc | 清空搜索 / 关闭 |
在启动台或「应用程序」里再次打开 TabSwitcher,或者点菜单栏菜单里的「设置…」,都能回到设置窗口。
按 ⌘⇥ 还是系统自带的切换器? 说明还没拿到「辅助功能」权限。打开设置窗口,点「去授权」。如果系统设置里开关显示已打开,却没有生效,就点「开关已打开却没生效?重置权限…」,再把开关重新打开。
系统自带的 ⌘⇥ 会被永久改掉吗? 不会。TabSwitcher 只在运行期间接管 ⌘⇥,退出时自动恢复。只有在「活动监视器」里强制结束进程时,系统的 ⌘⇥ 才可能失灵,重新打开 TabSwitcher 再正常退出,或者注销重新登录,都能恢复。
调试日志在哪?
~/Library/Logs/TabSwitcher.log,记录每次打开切换器时列出的窗口和跳转结果。
需要 Xcode 命令行工具(Swift 6)。
./build.sh # 编译到 build/TabSwitcher.app
./build.sh install # 编译并安装到 /Applications,然后启动
./build.sh release # 打包 dist/TabSwitcher-<版本>.zip图标由 swift Tools/make_icon.swift Resources/AppIcon.png 生成。
- 纯 AppKit + SwiftUI(设置窗口),不依赖第三方库。
- 快捷键通过
CGEventTap拦截。系统自带的 ⌘⇥ 用私有接口CGSSetSymbolicHotKeyEnabled临时关闭。 - 窗口缩略图来自 ScreenCaptureKit。
- 跨桌面窗口用 SkyLight 私有接口(
CGSCopySpacesForWindows、_SLPSSetFrontProcessWithOptions)和_AXUIElementCreateWithRemoteToken实现,做法参考了 AltTab。 - 用了私有接口,所以无法上架 Mac App Store,以后的 macOS 版本也可能不兼容。

