macOS 原生不支持一键备份窗口布局,但可通过轻量级(App-Space绑定记录)和增强型(displayplacer+窗口快照)两类方案实现近似效果,小智桌面等第三方工具提供可视化备份还原功能。

轻量方案:用 AppleScript 记录 App 与 Space 的绑定关系
适用于日常多任务切换,不依赖额外工具,只保存“哪个 App 默认打开在哪个 Space”,恢复时靠 macOS 自动调度。运行以下脚本可导出当前所有已打开 App 及其所在 Space 编号(需配合 Mission Control 逻辑):
osascript -e '
set appSpaces to {}
repeat with i from 1 to (count of (system info))
try
set appName to name of (item i of (application processes))
set spaceID to do shell script "pgrep -f '" & appName & "' | head -1 | xargs ps -o pid=,ppid= 2>/dev/null | awk '\''{print $2}'\'' | xargs ps -o args= 2>/dev/null | grep -q 'launch' && echo 1 || echo 0"
set end of appSpaces to {app:appName, space:spaceID}
end try
end repeat
return appSpaces
'
更实用的做法是直接导出「App 分配规则」:
- 用 Automator + AppleScript 调用:
defaults read com.apple.spaces(部分信息存在该 plist 中) - 或借助开源工具 Amethyst / Rectangle 的配置导出功能(需提前启用)
- 手动备份关键配置文件:
~/Library/Preferences/com.apple.spaces.plist和~/Library/Preferences/com.apple.displayplacer.plist(后者需装 displayplacer)
增强方案:displayplacer + 窗口快照脚本(推荐)
这是目前最接近「完整布局备份」的可行路径,覆盖显示器排列、主屏设定、Space 绑定、甚至外接屏启停状态。
macOS 微信消息自动化工具。通过 GUI 自动化实现:发送消息给指定联系人、读取聊天内容、监控新消息。适用于需要自动化微信操作的场景,如定时发送、批量回复、消息备份等。依赖 peekaboo 进行屏幕截图和 UI 交互。仅支持 macOS。开源地址:https://github.com/chairmanmia...
- 先确保已安装
displayplacer:brew install jakehilborn/tap/displayplacer - 执行
displayplacer list获取当前显示器 ID 和分辨率等元数据 - 用脚本保存两层状态:
✓ 显示器物理布局:displayplacer list > ~/Desktop/layout-backup-$(date +%Y%m%d).txt
✓ 预设布局脚本:displayplacer "id:ABC123 res:2560x1440 origin:(0,0)" "id:DEF456 res:1920x1080 origin:(2560,0)" > ~/scripts/backup-work.sh - 同时备份 Space 绑定:运行
defaults read com.apple.spaces | grep -A 5 "application"提取关键键值,另存为 JSON 或文本
小智桌面用户:直接用内置备份功能
如果你使用第三方工具如「小智桌面」,它已封装好可视化备份流程:
- 打开软件 → 点击左上角「三横线」→「设置中心」→ 左侧选「桌面备份」
- 点「添加备份」→ 输入名称(如「会议模式」)→ 确认即完成当前图标+窗口位置快照
- 恢复时,在同一界面选择备份项 → 点「还原」,图标与窗口会按原坐标回归(依赖其注入的窗口管理权限)
注意事项与局限
macOS 对窗口坐标和大小的读取受限于沙盒机制,Safari、Notes 等系统应用的精确位置通常无法完整捕获;全屏 App 会脱离 Space 管理逻辑;合盖后外接屏的 Dock 锚点变化也需手动校准。因此,真正可靠的「一键备份」仍是「显示器配置 + App 分配规则 + 手动微调」的组合策略。

















