给 macOS 外接显示器一键开启 HiDPI 缩放档位("看起来像 1920×1080" 等),菜单栏小工具。
为 MacBook Air M4 + 27" 2K 显示器这类场景打造:2K 屏在 macOS 上默认只有 LoDPI 模式,文字发糊;BetterDisplay 的"虚拟屏 HiDPI"又太吃 GPU。ClearScale 用 EDID 显示覆盖 让系统把 HiDPI 模式当作物理屏的原生模式来用——没有虚拟屏、没有镜像、没有额外帧缓冲,GPU 开销远低于虚拟屏方案。
- 2K/准4K 外接屏在 macOS 上糊:系统不给 HiDPI 选项
- BetterDisplay 的 1080p HiDPI = 虚拟屏 + 镜像 + 2160p 帧缓冲,WindowServer/GPU 常驻高占用
- ClearScale 引擎A 直接在物理屏上启用原生 HiDPI 模式,桌面合成一趟完成
| 引擎A · EDID 覆盖(推荐) | 引擎B · 虚拟屏镜像 | |
|---|---|---|
| 原理 | 写 /Library/Displays/.../Overrides/,暴露原生 HiDPI 模式 |
运行时创建虚拟屏并镜像 |
| GPU 开销(2K 屏实测) | ~38%(LoDPI 基线 ~28%) | ~47% |
| 生效方式 | 需重连显示器(自动尝试休眠唤醒,失败拔插一次) | 即时 |
| 可渲染档位 | 面板原生 2× 以内的所有缩放档 | 任意档(含"看起来像原生分辨率") |
菜单里每个档位自动路由:能走引擎A 的走引擎A,超出缩放器预算的(如 2K 屏上的 2560×1440 "看起来像")标注(虚拟屏)并走引擎B。
2560×1440(虚拟屏)· 2400×1350 · 2304×1296 · 2160×1215 · 2048×1152 · 1920×1080 · 1706×960 · 1280×720
档位按面板原生分辨率自动生成,4K/5K 屏同样适用。
- 下载 Releases 里的
ClearScale-x.y.z.dmg,拖进 Applications - 首次打开若被 Gatekeeper 拦截:右键 → 打开(构建未做开发者公证)
- 菜单栏显示器图标 → 你的显示器 → 引擎A·EDID覆盖(会弹管理员授权)
- 等待自动重连(屏幕闪黑);若提示未生效,拔插一次显示器
- HiDPI 档位 → 选一个,完成。顶部实时显示 GPU / WindowServer CPU 占用
移除:菜单点"引擎A·EDID覆盖"(已写入状态)→ 确认移除,拔插后恢复原状。原始覆盖文件自动备份为 .csbak。
- macOS 14+(Apple Silicon 与 Intel 通用二进制)
- 管理员权限(仅安装/移除覆盖时需要)
git clone https://github.com/lrylnx/ClearScale.git
cd ClearScale
./build.sh # 宿主架构 -> build/ClearScale.app
./build.sh --dmg # 通用二进制 + DMG -> build/ClearScale-<ver>.dmg无 Xcode 工程,swiftc + clang 直接编译(含一个私有 API 的 ObjC 桥接头)。
- EDID 覆盖是 macOS 自 10.10 起的官方机制(hidpi-switcher 等项目同源),不需要关 SIP
- "看起来像原生分辨率"的 HiDPI 档(backing = 2× 面板)会被 macOS 缩放器预算过滤,EDID 机制给不了——这类档由引擎B 补位
- 覆盖文件按 vendor/product ID 匹配,换显示器不受影响;重启后依旧生效
MIT