Automator 不具备窗口位置记忆恢复能力,因其不参与 macOS 的 NSWindowRestoration 系统机制;它仅能通过 AppleScript 强制设窗、模拟操作触发保存或终端命令清除记录,但无法可靠恢复上次位置。

Automator 本身不直接处理 macOS 窗口位置记忆恢复逻辑。
窗口记忆由系统和应用自身控制
macOS 的窗口位置与尺寸记忆是系统级行为,由 NSWindowRestoration 机制驱动。大多数原生及适配良好的应用(如 Safari、TextEdit、Preview)会在退出时自动保存 NSWindow Frame 坐标到其 plist 文件中(路径如 ~/Library/Preferences/com.apple.Safari.plist),下次启动时由 Cocoa 框架自动读取还原。Automator 并未参与该流程,它不具备访问或修改窗口坐标数据的能力,也无法触发系统级的窗口状态恢复。
Automator 能做的间接操作有限
虽然 Automator 无法“管理”窗口记忆,但可通过以下方式间接影响窗口状态:
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
-
调用 AppleScript 控制窗口位置:使用“运行 AppleScript”操作,执行类似
tell application "Safari" to set bounds of front window to {100, 100, 1200, 800}的脚本,强制设置坐标。这属于覆盖式重置,不依赖记忆机制,且需目标应用支持 AppleScript 窗口控制。 - 模拟用户操作触发保存:结合“键盘快捷键”或“鼠标点击”操作,让 Automator 在退出前模拟拖动、缩放、点击绿色按钮等动作,再执行“退出应用程序”。前提是窗口已处于理想状态,且应用确实在退出时写入偏好——但这不可靠,因部分应用仅在用户主动关闭窗口(而非菜单退出)时保存。
-
配合终端命令重置记忆:用“运行 Shell 脚本”操作执行
defaults delete com.apple.Safari NSWindow\ Frame\ BrowserWindowFrame等命令,清空特定应用的窗口记录,使其下次启动回归默认位置。这属于清除记忆,而非恢复记忆。
真正有效的窗口记忆恢复方案不在 Automator 范围内
若目标是可靠恢复上次位置,应优先采用系统原生或专用工具方案:
- 确保应用以标准方式退出(关闭窗口或使用菜单“退出”);
- 对异常应用,用终端命令重置其 plist 中的窗口键值;
- 借助 Rectangle、Maccy 或 AutoRaise 等工具实现规则化定位或悬停激活;
- 启用 macOS 全局“窗口还原”选项(系统设置 > 桌面与程序坞 > 关机和重启时重新打开窗口)。
Automator 不是窗口记忆管理的合适工具。它缺乏底层权限和接口,无法读写窗口坐标、监听应用生命周期,也难以稳定干预 Cocoa 的恢复流程。需要精确控制窗口位置时,AppleScript 或专用窗口管理器更直接有效。

















