LayoutKeeper 发布十天了,评论区和 Issue 里被问得最多的一句话是:"这和 Rectangle / Stay 有什么区别?这个问题我自己当年也问过——准确说,我是把它们仨都装上、逐个试了一遍,才决定自己写一个的。
所以今天不吹自家东西,就把这三类工具的分工捋清楚,帮你选对的。 LayoutKeeper 是个 macOS 菜单栏小工具(开源 GPL-3.0 ):记住外接屏上每个窗口的位置和它所在的 Mission Control 桌面,拔线再插回来时一键还原。
先放结论:**这三类工具管的是三件不同的事,不是谁替代谁。 ** **第一类:分屏工具,代表是 Rectangle 、Magnet 。
** 管的是"此时此刻、这块屏幕上,怎么把窗口摆整齐"。快捷键一按,窗口贴左半、右半、四分之一。
它的时间维度是"现在",空间维度是"当前屏幕"。我每天都在用 Rectangle ,它解决的是"摆"的效率问题。
但它不管"记住"。你拔了线再插回来,Rectangle 帮不了你——它从没记过你原来的样子。
**第二类:显示器配置恢复,代表是 Stay 、Display Maid 。 ** 管的是"这套显示器配置下,窗口应该在什么位置"。
你存一份配置:这块屏上 Chrome 放左边、终端放右边。下次接上同一套显示器,它把窗口按位置摆回去。
时间维度是"配置切换时",空间维度是"屏幕+坐标"。我认真试过 Stay ,位置恢复做得不错。
但它有个我过不去的坎:**窗口回不到原来的 Mission Control 桌面**。我一个桌面写代码、一个桌面通讯、一个桌面看文档,Stay 把窗口都摆回了外接屏,但全堆在当前桌面上——位置对了,桌面错了,我还是得一个个拖回去。
对我来说等于问题只解决了一半。 **第三类:布局快照恢复,LayoutKeeper 在这里。
** 管的是"把一切放回拔线之前的那一刻":位置、大小,连同窗口所在的桌面序号一起记,恢复时一起放回去。时间维度是"拔线前 vs 插线后",空间维度是"屏幕+坐标+桌面"。
为了做到"连桌面一起",技术上走了条野路子:跨桌面移动用的是 macOS 26 的 SkyLight 私有接口,不用关 SIP 、不用注入 Dock ,只要"辅助功能"一个权限。系统大更新后可能失效,应用启动时会自动检测,失效就自动关掉这个功能,不会乱移窗口。
前面几篇开发日志写过这段,有兴趣可以翻我主页。所以我的真实用法是三个一起装:Rectangle 管日常摆,Stay 那类我后来没再用(因为 LayoutKeeper 覆盖了它的场景还多记了桌面),LayoutKeeper 只管拔插线那一下。
如果你从不用外接屏,或者不用多桌面,那你大概率不需要 LayoutKeeper ,Rectangle 一个就够了——工具选对场景比选"功能多"重要。局限照例写前面,不藏着: - 只支持**一块**外接屏,多屏用户先别试。
- 跨桌面恢复要 macOS 26+(同桌面内的位置恢复 macOS 14+ 就行)。 - Finder 窗口没法跨桌面移动(拿不到进程启动时间,过不了身份校验)。
- 数据只存本机 `~/Library/Application Support/LayoutKeeper/`,不收集任何东西,唯一的联网是去 GitHub 查更新(可关)。仓库: /ai-market-guide/ 如果你也在用这几类工具,欢迎聊聊你的组合——我特别想知道还有哪些"位置对了但桌面错了"之类的半截子痛点,Issue 里提,我看路线图怎么排。