一款 macOS 菜单栏应用,用一次点击切换整套多显示器配置。
- 保存两套可命名的显示器预设
- 为每块显示器记录开关、亮度、对比度、分辨率与旋转方向
- 从菜单栏或
⌘1、⌘2快速切换 - 记住暂时离线的显示器,并在重新连接后恢复配置
- 禁止关闭最后一块活动屏幕,减少黑屏风险
- 可选开机自启动
- macOS 13 或更高版本
- 调整亮度与对比度时,需要运行并启用 BetterDisplay 集成功能
- 从源码构建需要 Xcode Command Line Tools
git clone https://github.com/wyfang/display-pilot.git
cd display-pilot
./build.sh应用生成在 dist/Display Pilot.app,默认构建当前 CPU 架构,最低部署版本固定为 macOS 13。使用 DISPLAYPILOT_ARCH=arm64 或 DISPLAYPILOT_ARCH=x86_64 可指定架构。
运行 ./Tests/run.sh 执行隔离回归测试;运行 ./scripts/generate-icon.sh 重新生成应用图标。
应用使用本地临时签名且未经 Apple 公证,首次启动可能需要右键选择“打开”。
Display Pilot 将两套常用多显示器配置变成菜单栏中的一次点击。显示器开关、分辨率和旋转由 macOS 控制;亮度与对比度通过 BetterDisplay 的通知集成接口设置,该接口与其 CLI 使用同一协议。
切换时先连接目标屏幕,处理指定旋转与分辨率,再关闭不需要的屏幕,等待拓扑稳定后应用并读回亮度、对比度。旋转或分辨率暂不可用时,仍完成其他可用设置并分别报告结果。结束后核验身份、连接、指定显示模式和视觉设置,不把部分完成标记为全部成功。
“应用分辨率与旋转”独立于亮度:显式勾选时,亮度为 0 也执行保存的显示模式;旧息屏预设没有该选项时,默认只切换连接、亮度和对比度。“跟随当前”不会主动改变方向;升级旧预设不会自动把当时的屏幕角度变成新约束。已有明确保存的设置保持不变。
亮度滑块按整数百分比保存,显示 0% 时保存为精确的零;已有的小数亮度会保留,低于 1% 的非零值会单独显示。指定旋转由 macOS 原生接口完成,不依赖 BetterDisplay 的旋转权限,90° 与 270° 始终分别核验。
连接和显示模式已匹配时,跳过无操作的固定等待,仍核验亮度与对比度;实际连接变化保留稳定等待。
- 显示器开关使用 macOS 私有接口
CGSConfigureDisplayEnabled,旋转使用系统MonitorPanel接口;不适合发布到 Mac App Store,也可能受系统更新影响 - 旋转需要系统与显示器支持;不支持时会报告该项未完成,其他可用设置仍继续执行
- BetterDisplay 未运行、集成被关闭或读回结果不符时,会提示未完成,而不会把预设标记为成功
- 软件无法重新连接物理断开的显示器;无法确认身份的设备不会执行开关操作
- 升级保留旧预设数据;无法唯一确认的旧设备条目需要重新配置。需要主动旋转时请选择明确角度,应用不会根据分辨率猜测方向
- 线材、扩展坞、镜像、HDR 或系统变化可能使已保存模式失效
原创代码依据 Apache License 2.0 发布。个人品牌和素材不在许可范围内。详见 许可范围。