- tumk3天前3384
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 查更新(可关)。
仓库: https://github.com/tumingke0/LayoutKeeper
如果你也在用这几类工具,欢迎聊聊你的组合——我特别想知道还有哪些"位置对了但桌面错了"之类的半截子痛点,Issue 里提,我看路线图怎么排。
主楼 - fds3天前2450
我是用 hammerspoon 写了个脚本,监控窗口和显示屏的情况,如果位置大小不对自动移动。比如可以实现把 slack 通知栏固定在屏幕左上角,其他窗口如果覆盖到了,都强行右移开,这样方便我观察有没有新通知。
- ffalex3天前1486
有软件能 3 个功能全要吗?
- bearbest3天前2421
macOS 的窗口管理真的是一坨,明明应该系统层面解决的问题,靠各种衍生工具🤦,我甚至也自己写了个工具用来保存多应用多窗口的预设布局,用来一键唤起多个应用多窗口并按照指定布局自动排列,类似窗口绑定的那种东西

本来期望 stage manager 能解决这个问题的,不过等了几年,感觉 macOS 团队已经不再维护更新这个功能了,失望。
- Morgan23天前2948
hammerspoon 可以按照各人不同的需求自己解决。都 ai 时代了
- tongyuelong3天前3385
- Dik30473天前2801
三分法讲得很清楚,LayoutKeeper 这种「场景恢复」和单纯贴边分屏确实不是一类需求。
也是做独立软件的,我在做 TV Tracker (追剧进度/日历/提醒,不正片): https://tv-tracker.uk/go?c=v2ex
- tumk3天前3384
- tumk3天前3384