各位好,我是个人开发者,分享一个自己写的小工具。
起因很简单:在家和公司各有一台外接显示器,每次拔掉再接上,或者合盖睡眠再唤醒,窗口就全挤回了笔记本屏幕,只能一个个拖回去,好几个桌面( Space )来回切。这个问题由来已久,不少人反映 macOS 15.4 之后更明显。
我试过一些现有方案:大多是付费闭源;有的要自己写 Hammerspoon 脚本;有的只恢复当前桌面的位置和大小,或者窗口跨桌面时放错。所以自己写了一个 LayoutKeeper 。
功能
按外接屏记住窗口布局。用显示器 EDID 区分屏幕,家里和公司的屏各存一份,不用手动选“场景”
重新接上屏幕时恢复,能把窗口放回原来的第几个 Mission Control 桌面,而不只是位置和大小( macOS 26+)
恢复模式三选一:关闭 / 先询问 / 自动。自动恢复会等屏幕和窗口稳定后再动
同一块屏幕可存多套命名版式(如“写代码”“开会”),菜单栏一键切换
每块屏幕保留最近 5 个历史版本,可重命名永久保留
恢复前可预览,每次恢复可一键撤销。每个窗口移动后回读确认,失败回滚。同名窗口分不清时让你选,不瞎猜
内置自动更新( Sparkle ),提供 Apple 芯片和 Intel 两个版本
不用注册账号,没有任何统计。唯一的联网是到 GitHub 检查更新,可关闭
局限(先说清楚)
需要 macOS 14+。跨桌面恢复需要 macOS 26+,依赖私有 API ,系统更新后可能失效。应用启动时会检测,缺失就自动关掉这项,同桌面内的恢复不受影响
目前只支持一块外接屏
访达窗口无法跨桌面移动。全屏、最小化的窗口会跳过
自签名、未公证,第一次打开请右键 → 打开。需要“辅助功能”权限
Intel 版本没有在真机上测过,有 Intel Mac 的朋友如果能试一下并反馈,非常感谢
GPL-3.0 开源,免费:
GitHub:
https://github.com/tumingke0/LayoutKeeper下载 v0.6.1:
https://github.com/tumingke0/LayoutKeeper/releases/tag/v0.6.1欢迎提意见和 bug ,回帖或开 Issue 都行。提 Issue 时附上 macOS 版本号和“设置 → 诊断 → 一键自检”的报告会很有帮助。自检报告不含窗口标题,只有短哈希。