Windows多显示器用户有个公开的秘密:切一次布局,手要点13下鼠标。一天切3次,一年就是14235次点击——足够把鼠标左键磨出包浆。
开发者@koddr(Dmitry)的4屏工作站就是典型受害者。超宽屏主屏写代码,24寸副屏打游戏,竖屏刷文档,还有个便携屏应急。每天"工作模式"和"游戏模式"来回横跳,Windows的显示设置界面成了他的第二故乡。
他搜遍了GitHub,MonitorSwitcher、DisplayFusion、NirSoft的MultiMonitorTool……要么年久失修,要么功能臃肿,要么收费还不好用。最后他算了笔账:自己写一个,可能比找现成工具更快。
1小时从0到1,AI当副驾
工具叫wsm(Windows Screen Manager),核心功能就两句命令:`wsm save work`存配置,`wsm load game`一键还原。整个开发周期不到60分钟,副驾是Claude。
但别急着喊"AI取代程序员"。Dmitry的复盘很实在:AI写了80%的脚手架代码,但剩下20%的坑全得自己踩。Windows显示API的文档像迷宫,设备名`\\.\DISPLAY1`和"友好名称"GS34WQCA的映射关系,Claude第一次就搞混了。原子化配置切换(atomic changes)的实现——也就是避免中间态闪屏——更是来回改了3遍。
最终方案是用Windows的`SetDisplayConfig` API,先把所有显示器目标状态算好,一次性提交。比逐个调整显示器少了中间帧,肉眼几乎看不到闪烁。
配置文件长什么样
wsm把布局存成YAML,结构比Windows注册表人性化十倍:
每个显示器记录9个参数:设备路径、分辨率、刷新率、位深、方向、是否主屏,以及最关键的——坐标位置。坐标系以主屏左上角为原点,负值表示向左/向上延伸。Dmitry的"游戏模式"里,24寸1080p屏放在(0,0)当主屏,超宽屏被挤到左上角的负坐标区,物理上相当于"降级"为副屏。
这种坐标游戏是Windows多屏的底层逻辑。系统不关心你的显示器物理摆放,只认数字化的虚拟桌面。wsm的聪明之处是把这套抽象封装成了人话:"save"和"load"。
为什么大厂不做?
微软不是没能力。Windows 10/11的显示设置界面年年小改,但多布局记忆功能始终缺席。可能的解释是:多屏重度用户占比太低,ROI(投资回报率)划不来。
但边缘需求恰恰是独立开发者的机会土壤。Dmitry把wsm开源后,GitHub星标48小时破200。评论区成了多屏用户的诉苦大会:有人用6屏做视频剪辑,有人笔记本外接3屏出差,还有人显示器型号相同但序列号不同导致Windows认错——wsm用设备路径而非型号名识别,正好绕过这个坑。
更意外的反馈来自Linux用户。他们表示Xrandr和KScreen早就支持类似功能,"Windows用户终于不用羡慕了"。
工具背后的产品思维
wsm的设计有几个值得抄作业的细节:默认配置路径放在用户目录的隐藏文件夹`~/.wsm-profiles`,不污染系统盘;命令行输出带颜色区分,主屏标绿、副屏标灰;list命令直接打印分辨率+刷新率+坐标,调试时一眼定位问题。
这些不是AI生成的,是Dmitry作为产品经理的本能——他自己就是用户,知道痛点在哪。
项目依赖两个Rust库:windows-sys调用原生API,serde处理YAML序列化。总代码量不到400行,其中1/3是错误处理。Dmitry说如果重来,会把"原子化切换"的逻辑抽得更干净,现在这部分和Windows API耦合太紧,移植到Mac/Linux基本要重写。
说到移植,评论区已经有开发者 fork 了 macOS 分支。DisplayKit 的 API 比 Windows 友好些,但"保存/加载"的抽象层设计几乎照搬 wsm。开源社区的经典剧本:一个痛点被验证,解决方案就会像蒲公英一样散开。
最后留个开放问题:你的多屏工作流里,最烦人的手动操作是什么?如果有个"wsm for XX"的工具,你希望它先解决哪个场景——是Dmitry的"工作/游戏"切换,还是笔记本插拔显示器时的自动识别,或者是不同分辨率显示器的DPI缩放对齐?
热门跟贴