在普通 Windows 笔记本上复刻 iPhone Duo 的开合效果:桌面像一块绕屏幕底边转开的玻璃。
合上上盖时,桌面会实时地折叠起来 —— 靠近屏幕底边的地方始终清晰,越往上越模糊、越暗, 视线出屏幕之外的部分接近纯黑,像一块磨砂玻璃正在从你眼前转开。
角度由笔记本自带的摄像头感知(就是上盖那颗会跟着开合转动的摄像头), 不需要任何外接硬件、不需要串口、不需要额外传感器。
叠加层是全屏透明的,鼠标可以穿透点击,键盘照常输入,不影响正常使用; 不折叠时它自动隐藏,桌面保持原本的清晰。
- Windows 10 / 11 笔记本,带摄像头(必须是上盖那颗,它会随开合转动)
- 显卡支持 OpenGL 3.3
- 从源码运行还需要 Python 3.10 以上
方式一:双击 EXE。 如果你拿到的是打包好的 WindowsDuo.exe,双击即可运行,
不用装 Python,也没有任何安装步骤。
方式二:从源码运行。
pip install -r requirements.txt
python main.py
也可以双击 run_overlay.bat(效果一样)。没有摄像头、或者只是想先看看效果长什么样,
用 python main.py --manual 启动手动模式,用面板的「浓度清零 / 拉满」预览折叠效果。
- 上盖完全展开,让摄像头对着一个有纹理的静止场景(书架、贴画的墙都行; 对着纯白墙或者对着自己会识别不到)。
- 启动程序。屏幕左上角会出现一个小窗口 —— 控制面板,看不到它说明程序没起来。
- 点面板上的 「标定基准帧」,把当前这一帧设为 0° 基准。 面板状态变成「追踪中」就成功了。
- 慢慢合上上盖,桌面就会跟着折叠成磨砂玻璃。合得越深,玻璃转开越多。
方向反了或跟手幅度不合适,随时在面板上就地调,改动立即生效,可以边调边看。
面板是左上角那个小窗口,所有操作都有按钮,鼠标直接点,不依赖控制台、不依赖键盘。
它是普通窗口,Alt+Tab 能找到它;标题栏的图钉按钮可以让它保持置顶。
| 按钮 | 作用 |
|---|---|
| 标定基准帧 | 把当前画面设为 0° 基准(上盖完全展开时点) |
| 翻转方向 | 合盖时效果方向反了按它 |
| 灵敏度 −/+ | 调整开合幅度到效果的换算比例 |
| 切手动 / 切自动 | 跟随上盖角度,或切换成手动控制 |
| 浓度清零 / 拉满 | 手动快速设置效果强度,便于预览 |
| 设置… | 打开参数设置窗口 |
| 退出 | 结束程序 |
如果你是从控制台(或 .bat)启动的,键盘也能用:↑``↓ 或 W``S 微调强度、
←``→ 或 A``D 清零/拉满、+``- 调灵敏度、ESC 或 Q 退出。
但打包版没有控制台,键盘收不到按键,请一律用面板按钮(功能完全一致)。
点面板的 「设置…」 打开。这是 Windows 11 设置应用风格的窗口,左侧是图标导航, 右侧是分组参数卡片。改完立即生效并自动保存,可以边拖边看屏幕上的效果; 「恢复默认」把参数退回出厂值。
| 页面 | 内容 |
|---|---|
| 折叠效果 | 最大转角、眼距、浓度平滑 —— 决定折叠的幅度和跟手手感 |
| 模糊质感 | 模糊强度、变暗程度、采样次数 —— 决定磨砂玻璃的观感 |
| 摄像头与识别 | 摄像头索引、角度灵敏度、方向反向、识别阈值,以及标定说明 |
| 性能与显示 | 抓屏频率、显示阈值,以及卡顿时该调哪里 |
| 关于 | 版本、运行环境、配置文件位置、快速上手、控制面板按钮对照、开源致谢 |
窗口外观与动画会跟随 Windows 的明暗模式和主题色自动变化(1.5 秒内刷新,不用重启)。
所有运行参数集中在程序旁边的 config.json,推荐用设置窗口改(即时生效、自动保存),
也可以直接编辑文件后重启。没有这个文件时程序会按出厂默认值自动生成一份。
打包版把它和 EXE 放在一起即可;配置丢了也不影响启动,程序会自己重建。
看不到任何效果? 先看左上角有没有控制面板。没有的话程序没起来。有面板但状态一直是「未标定」, 说明还没点上一步的「标定基准帧」。
识别不到角度 / 状态一直「未标定」? 摄像头要对着有纹理的东西,纯白墙面、天花板、正对镜头的人脸都很难识别。 换一个场景或者把摄像头对着书架再标定一次即可。
合盖时效果方向反了 / 幅度太小? 点「翻转方向」;幅度不够就点几次「灵敏度 +」,或者到设置窗口的「折叠效果」页 调大「最大转角」。
开合时有点卡? 到「性能与显示」页降低「抓屏频率」,或者到「模糊质感」页降低「采样次数」。 抬高「显示阈值」也能让叠加层少出现一会儿。
用的不是笔记本自带的摄像头? 必须是随上盖一起转动的那颗摄像头。外接摄像头不会跟着动,识别不到开合。 多个摄像头时可以在设置里换索引,改动需要重启程序。
想确认是程序问题还是环境问题?
用 python main.py --selftest 做一次无窗口自检,它会依次检查摄像头、
特征识别、截屏和 OpenGL 是否可用,并把结果弹窗给你。
本项目以 GNU GPL-3.0 发布,见 LICENSE。
渲染与工程化部分移植自 WindowsDuo(MIT), 本项目与它的区别只有一处:角度来源从「外接传感器」换成了「摄像头」。 逆投影模型源自 DuoLikeAnimation / iphone-duo / MacDuo / FrostFold 等开源复刻; 界面基于 RinUI 组件库与 Windows 官方的 Fluent System Icons。