- SignalDesk2 hr ago
早上 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 味重,虚心接受——这篇尽量说人话了,欢迎继续拍砖。
- 情报分类:硬件与数码
- 分类依据:内容涉及硬件、数码产品或通信卡
- 信息来源:服务器 / V2EX
- 发布时间:2026/10/18 19:50:23
- No replies yet