Window Layout Memory 是开源 macOS 窗口布局记忆工具,可按显示器组合保存窗口大小、位置和归属,并通过保守匹配、候选确认、历史回退与例外规则降低误恢复风险。
MacBook 从工位拔下外接屏、回家连接另一套显示器,或睡眠唤醒后,原本精心排好的窗口可能全部挤到主屏。Window Layout Memory 的目标不是强迫所有场景使用同一套布局,而是为每一种显示器组合分别保存窗口大小、位置和归属,并在重新连接后保守恢复。

Window Layout Memory 是什么
Window Layout Memory 是一款使用 Swift 与 AppKit 开发的开源 macOS 菜单栏工具,用于记住不同显示器组合下的普通窗口布局。 它通过 macOS 辅助功能读取和调整窗口,为单屏、双屏、多屏以及不同排列、缩放配置建立相互独立的布局基准。
它不是简单地在登录后把所有窗口搬到固定坐标,也不是传统的快捷键分屏工具。它关注的是“同一个工作空间在显示器拓扑变化后如何回来”,并将不确定性视为停止条件:窗口无法唯一匹配、目标屏幕不明确或状态异常时,不猜测跨屏恢复。
多显示器用户最常见的痛点
1. 拔掉外接屏后,窗口全部挤回笔记本屏幕
这是 macOS 的合理兜底,但重新接回显示器后,系统不一定恢复你原来的窗口分工。代码编辑器、终端、浏览器和通信工具需要再次逐个拖回,屏幕越多,重复劳动越明显。
2. 办公室和家里的显示器配置不同
同样是双屏,显示器身份、分辨率、缩放、旋转方向和左右排列都可能不同。只存一套全局坐标会把办公室布局错误套到家里。Window Layout Memory 按完整显示器组合隔离记录,目标是让每套环境拥有自己的基准。
3. 同一应用有多个窗口,自动化容易认错
浏览器、Finder、编辑器和微信可能同时打开多个窗口。如果工具只按应用名恢复,很容易把窗口互换。项目采用保守匹配,并提供候选保存、锁定、历史回退、排除和手动修正;存在歧义时,不把“看起来像”当成“已经确认”。
4. 台前调度的缩略图会干扰窗口识别
仅依赖屏幕上的图层矩形,可能把 Stage Manager 侧边栏缩略图、浮层或面板当成真实普通窗口。项目要求使用辅助功能核对前台普通窗口,并明确排除未知类型、对话框和浮动面板,避免学习错误几何。
它如何工作
一个可靠的窗口恢复流程至少包含四层:
- 识别显示器拓扑:区分显示器身份、排列、缩放和方向,为不同组合建立独立配置。
- 核对普通窗口:通过辅助功能确认窗口身份和几何,而不是只看屏幕图层。
- 保存可信基准:鼠标拖动或缩放后,在证据稳定且不处于切屏保护期时学习;无法确认的变化只进入候选。
- 恢复后再次核验:移动或调整尺寸后检查实际结果,失败时停止并报告,不用连续猜测掩盖问题。
这种设计比“扫描到窗口就搬动”更慢一点,却能减少错误布局被永久学习、错误窗口被跨屏移动的风险。
对工作流的实际价值
| 场景 | Window Layout Memory 的作用 |
|---|---|
| MacBook 单独使用 | 恢复适合小屏的窗口位置与尺寸 |
| 工位双屏或三屏 | 按完整显示器组合恢复应用分工 |
| 家庭与办公室切换 | 两套硬件分别保存,不共用错误坐标 |
| 显示器旋转为竖屏 | 可选竖屏横向撑满,并保留纵向几何 |
| Stage Manager 开启 | 区分普通窗口与侧边缩略图 |
| 某些窗口不应移动 | 使用应用级或窗口级例外规则 |
| 恢复结果不合适 | 使用历史、撤销或锁定基准修正 |
台前调度与竖屏功能
项目包含默认关闭的 Stage Manager 铺满能力。横屏模式可以在激活前台窗口后避开菜单栏和 Dock,并保留可配置的左侧留白。竖屏横向撑满是独立开关:保留窗口的纵向位置和高度,只调整水平方向,并复用现有显示器留白与排除规则。
这些能力默认关闭很重要。窗口自动移动属于高影响操作,用户应先核对基准和例外,再逐项启用,而不是安装后立即让所有窗口参与自动布局。
适合哪些人
- 每天在 MacBook 单屏和外接屏之间切换的开发者、设计师和内容创作者。
- 在办公室、家里和移动工位使用不同显示器组合的人。
- 使用竖屏显示器或 Stage Manager,并希望保留特定留白的人。
- 同一应用经常打开多个窗口,需要保守匹配与例外规则的人。
- 希望布局数据保存在本地、不上传窗口标题和文档路径的人。
如果你只是偶尔把两个窗口左右分屏,macOS 原生平铺或快捷键窗口工具会更直接。Window Layout Memory 更适合“已经手动排好,但切换硬件后需要自动找回”的场景。
安装后的正确使用顺序
项目需要 macOS、Swift Command Line Tools 以及辅助功能权限。普通用户应优先从 Window Layout Memory Releases 获取已有预览包;开发者可以从源码构建。
1 | |
首次使用不要立即打开自动恢复,建议按以下顺序建立可信基准:
- 在系统设置中授予辅助功能权限。
- 依次激活需要记录的目标窗口,每个停留约 2 秒。
- 在菜单中执行重新核对,检查候选窗口和显示器归属。
- 点击保存已核对窗口,并使用只读布局预览确认结果。
- 先锁定关键基准,再开启自动恢复。
- 对图片窗、聊天记录、浮动面板或特殊工具窗建立例外。
- 切换一套显示器组合做小范围实测,确认后再扩大覆盖。
当前版本为什么要特别说明
截至 2026 年 9 月 14 日,GitHub 已发布的最新预览为 v0.3.0-preview.19 / build 26。公开资产包含 macOS arm64 ZIP 和 SHA256 校验文件,远端重新下载后已通过校验与解压检查;当前没有 Intel 通用包。下载安装时应以 Releases 页面实际资产为准。
项目还明确保留辅助功能实机、真实显示器插拔、睡眠/重启、长时间驻留、压力和能耗等验收门禁。当前构建为 arm64、ad-hoc 签名、未公证;部署目标版本不等于所有低版本和 Intel 机器都已验证。因此,它更适合愿意先备份布局、逐步启用自动化的测试用户。
多屏布局之外,如果你需要减少图片发布前的重复编辑,可阅读 WatermarkFlow:Mac 剪贴板图片一键加水印;如果担心电脑空闲后下一次播放突然外放,可以查看 Sound Guard:Mac 自动归零音量。
常见问题
它会保存或上传窗口标题吗?
项目设计为本地持久化与私人备份,不计划遥测或云端上传。仓库还明确要求测试和报告不得提交真实窗口标题、文档路径、显示器序列号、截图或布局导出。
为什么需要辅助功能权限?
macOS 辅助功能接口用于读取普通窗口身份和几何,并执行经过确认的移动与缩放。仅凭屏幕图层无法可靠区分普通窗口、缩略图和浮层。
它能恢复 Spaces、全屏窗口和 Stage Manager 分组吗?
不能。项目当前明确把 Spaces、原生全屏窗口和 Stage Manager 分组恢复排除在范围之外,也不承诺重建应用文档、标签页或未保存内容。
自动恢复会不会把窗口移错屏幕?
项目通过显示器组合隔离、唯一匹配、候选确认和失败停止来降低风险,但开发预览仍不能替代你自己的实机验证。首次使用应先保存、预览和锁定小范围基准,再开启自动恢复。