爱意满满的作品展示区。
tumk

Rectangle、Stay 我都用, LayoutKeeper 是第三种东西:说说窗口工具的三分法

  •  
  •   tumk · 15h 38m ago · 642 views
    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 里提,我看路线图怎么排。
    8 replies  •  2026-10-22 22:23:55 +08:00
    fds
        1
    fds  
       14h 31m ago
    我是用 hammerspoon 写了个脚本,监控窗口和显示屏的情况,如果位置大小不对自动移动。比如可以实现把 slack 通知栏固定在屏幕左上角,其他窗口如果覆盖到了,都强行右移开,这样方便我观察有没有新通知。
    ffalex
        2
    ffalex  
       14h 4m ago via Android
    有软件能 3 个功能全要吗?
    bearbest
        3
    bearbest  
       10h 36m ago
    macOS 的窗口管理真的是一坨,明明应该系统层面解决的问题,靠各种衍生工具🤦,我甚至也自己写了个工具用来保存多应用多窗口的预设布局,用来一键唤起多个应用多窗口并按照指定布局自动排列,类似窗口绑定的那种东西
    本来期望 stage manager 能解决这个问题的,不过等了几年,感觉 macOS 团队已经不再维护更新这个功能了,失望。
    Morgan2
        4
    Morgan2  
       6h 57m ago
    hammerspoon 可以按照各人不同的需求自己解决。都 ai 时代了
    tongyuelong
        5
    tongyuelong  
       5h 16m ago
    越来越多人自己打造自己的工具了,第三方工具开发者,用户量在减少。

    我也有很多用户在自己写工具了,哈哈,我反正也接受了这个事实了。
    Dik3047
        6
    Dik3047  
       4h 40m ago
    三分法讲得很清楚,LayoutKeeper 这种「场景恢复」和单纯贴边分屏确实不是一类需求。

    也是做独立软件的,我在做 TV Tracker (追剧进度/日历/提醒,不正片): https://tv-tracker.uk/go?c=v2ex
    tumk
        7
    tumk  
    OP
       3h 56m ago
    @ffalex 据我所知没有一个能全包的。最接近的是 Moom 和 Rectangle Pro:能分屏,也能存布局、接上显示器时自动套用,但管的只是位置大小,窗口回不到原来的那个桌面。LayoutKeeper 反过来,不做分屏,只管后两件。我自己是 Rectangle 免费版 + LayoutKeeper 一起开,一个管平时摆,一个管插拔那一下,互不打架。
    tumk
        8
    tumk  
    OP
       3h 56m ago
    @bearbest 你那个按预设一键拉起多个应用再排好的思路挺实用。LayoutKeeper 不管启动应用,只把已经开着的窗口放回原位和原桌面,算是两个方向。台前调度这几年确实没怎么动过了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1354 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 18:20 · PVG 02:20 · LAX 11:20 · JFK 14:20
    ♥ Do have faith in what you're doing.