Skip to content

Repository files navigation

Display Pilot

一款 macOS 菜单栏应用,用一次点击切换整套多显示器配置。

下载最新版本 · English

功能

  • 保存两套可命名的显示器预设
  • 为每块显示器记录开关、亮度、对比度、分辨率与旋转方向
  • 从菜单栏或 ⌘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=arm64DISPLAYPILOT_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 发布。个人品牌和素材不在许可范围内。详见 许可范围

About

A macOS menu bar app for switching complete per-display presets with one click.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages