一天插拔两次外接屏:家里的屏和公司的屏,我的窗口现在分得清了

tumk 2026-10-18 19:50 1

早上 9 点到公司插上外接屏,晚上 7 点拔线回家,第二天早上再插家里那台。一天两次,每次 macOS 都把窗口全挤回内建屏,以前我都要花几分钟一个个拖回去。


我的外接屏上常年是三个桌面:一个写代码,一个挂通讯(邮件和 IM ),一个放浏览器查文档。内建屏就扔点音乐和小工具。


之前试过 Stay ,能把窗口放回原来的位置,但回不到原来的桌面——编辑器该在桌面 1 ,通讯该在桌面 2 ,结果全堆在一块。位置对了桌面错了,对我来说还是乱的。


所以有了 LayoutKeeper (开源,GPL-3.0 )。它就做三件事:



  • 认屏:用显示器的 EDID (厂商、型号、序列号)区分家里和公司的屏,每块屏各存一份布局,不用手动切场景。

  • 连桌面一起记:保存时记下每个窗口在外接屏的第几个桌面,恢复时一起放回去。这部分要 macOS 26+,用的是 SkyLight 的私有接口,只需要"辅助功能"一个权限,不用关 SIP 、不用注入 Dock 。

  • 插上自动恢复:每块屏第一次会先问我,之后插线就自己跑。


这周连发的 0.6.7 和 0.6.8 ,基本都是被我自己的一天两次插拔逼出来的:


0.6.7 把自动恢复重写了。以前插屏偶尔会跑两轮,现在一次插屏只跑一轮恢复会话;换一台没见过的显示器也能恢复; Chrome 窗口改按用户配置( profile )匹配——我公司和家里登的是不同 profile ,以前经常认错窗口。


0.6.8 把通知从应用内 toast 换成了 macOS 系统通知,点一下直接打开恢复结果。另外砍掉了两个我之前"自以为是"的功能:拔线后自动删空桌面,和"桌面已移到内建屏"的提示。删桌面那个尤其打脸:macOS 把桌面挪到内建屏之后再删,会导致桌面重新编号,之前版本里写"删了安全"是错的。错了就认,功能直接砍掉,旧版本升级上来的也强制关闭。


局限还是那几条,老实写在前面:



  • 只支持一块外接屏,多屏用户先别试。

  • 跨桌面恢复要 macOS 26+(同一桌面内的位置恢复 macOS 14+ 就行);依赖私有 API ,系统大更新后可能失效,启动时会自动检测,失效就自动关掉这个功能。

  • Finder 窗口没法跨桌面移动。


仓库: https://github.com/tumingke0/LayoutKeeper


每天插拔外接屏的同学可以试试,提 Issue 记得附上"设置 → 诊断 → 一键自检"的报告。上一帖有朋友说我文案 AI 味重,虚心接受——这篇尽量说人话了,欢迎继续拍砖。

最新回复 (2)
  • zenoven 10-18 22:30
    1楼
    这个有用,明天回去试下
  • kestrelBright 10-19 08:10
    2楼
    不知道远程桌面可以不
    每次远程桌面息屏后就乱跑
* 帖子来源V2EX
返回