topit是目前在macos上实现跨桌面窗口始终置顶最可靠方案:安装后授予权限,通过菜单栏选择窗口并点击“立即置顶”,即可让目标窗口严格位于所有非系统级窗口之上,无论切换桌面、全屏或使用mission control均不被遮盖。

macOS 原生不支持“窗口跨所有桌面始终显示”这一功能——也就是说,没有系统级开关能让某个窗口像 Windows 的“始终在最前”那样,在每个桌面空间都固定可见。但你可以通过组合策略,实现**视觉上等效的效果**:让该窗口在你切换到任意桌面时,自动跟随或保持前置,且不被其他应用遮挡。
用 Topit 实现真正意义上的跨桌面置顶
这是目前最可靠、兼容性最好的方案,尤其适合需要长期保持可见的工具类窗口(如备忘录、终端、监控面板)。
- 安装 Topit:打开终端,运行 brew install lihaoyun6/tap/topit
- 首次启动后,前往系统设置 → 隐私与安全性 → 辅助功能 & 屏幕录制,勾选 Topit 权限
- 点击菜单栏 Topit 图标 → 在活跃窗口列表中选择目标应用 → 点击“立即置顶”
- 置顶后,该窗口会严格位于所有非系统级窗口之上,无论你切换到哪个桌面、是否全屏、是否使用 Mission Control,它都不会消失或被遮盖
配合“分配给所有桌面”提升稳定性
虽然 macOS 不提供“分配给所有桌面”的图形选项,但可通过 Dock 设置 + 行为调整,减少窗口意外跳转:
- 确保该应用未设置为“分配给此桌面”(右键 Dock 图标 → 选项 → 分配给 → “所有桌面”不可选,所以需取消已有绑定**)
- 关闭系统偏好中的“切换到某个应用程序时,会切换到包含该应用程序的打开窗口的空间”**(系统设置 → 桌面与程序坞 → 调度中心)
- 这样可避免系统自动把你带到它上次所在的桌面,让 Topit 置顶效果更自然地生效
替代方案:AppleScript + 快捷键快速唤回
如果你倾向零依赖、轻量操作,可用 Automator 创建一个“强制激活当前窗口”的快捷服务:
- 新建 Automator 快速操作,插入“运行 AppleScript”,粘贴:
tell application "System Events" to set frontmost of first process whose frontmost is true to true - 保存后,在键盘快捷键中为其分配组合键(如 Ctrl+Opt+T)
- 每次切到其他桌面后,按快捷键即可秒级将目标窗口拉回前台——虽非自动,但响应极快,适合高频切换场景
注意 Electron 应用等特殊窗口的处理
部分基于 Electron 构建的应用(如 VS Code、Slack、Notion)可能忽略常规置顶逻辑。此时可尝试:
- 在终端中执行命令强制指定窗口层级:
defaults write com.microsoft.VSCode NSWindowShouldStayOnTop -bool true(将 VSCode 替换为对应 Bundle ID) - 修改后需完全退出再重启应用才生效
- Bundle ID 可通过 osascript -e 'id of app "AppName"' 查询











