[PR #1924] Add Equal Brightness Support for Displays #1336

Open
opened 2026-10-04 22:01:12 -06:00 by gitea-mirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/MonitorControl/MonitorControl/pull/1924
Author: @qingye0312-cpu
Created: 10/5/2026
Status: 🔄 Open

Base: main ← Head: pr/equal-brightness-support


📝 Commits (10+)

  • eb922d4 feat: add equal brightness support for displays
  • 46b7932 docs: add equal brightness usage guidance
  • 106746c fix: localize equal brightness button
  • add07fa fix: keep equal brightness guidance visible
  • c37255b refactor equal brightness editor layout
  • 2f505be docs: polish bilingual equal brightness guidance
  • b51e5c2 fix: restore original display menu labels
  • f8afbcc fix: restore display names and tune menu slider width
  • b5ed554 fix: persist equal brightness by stable display identity
  • 51ad942 fix: restore legacy equal brightness references

📊 Changes

45 files changed (+2040 additions, -3 deletions)

View changed files

📝 MonitorControl.xcodeproj/project.pbxproj (+8 -0)
📝 MonitorControl/Support/AppDelegate.swift (+5 -2)
📝 MonitorControl/Support/SliderHandler.swift (+6 -1)
📝 MonitorControl/UI/Base.lproj/Main.storyboard (+14 -0)
📝 MonitorControl/UI/cs.lproj/Localizable.strings (+19 -0)
📝 MonitorControl/UI/cs.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/de.lproj/Localizable.strings (+19 -0)
📝 MonitorControl/UI/de.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/en.lproj/Localizable.strings (+19 -0)
📝 MonitorControl/UI/en.lproj/Main.strings (+6 -0)
📝 MonitorControl/UI/es.lproj/Localizable.strings (+19 -0)
📝 MonitorControl/UI/es.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/fr.lproj/Localizable.strings (+19 -0)
📝 MonitorControl/UI/fr.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/hi.lproj/Localizable.strings (+19 -0)
📝 MonitorControl/UI/hi.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/hu.lproj/Localizable.strings (+19 -0)
📝 MonitorControl/UI/hu.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/it.lproj/Localizable.strings (+19 -0)
📝 MonitorControl/UI/it.lproj/Main.strings (+3 -0)

...and 25 more files

📄 Description

This PR adds a standalone, localized equal-brightness calibration editor for multiple displays. It provides one aligned live slider per display, keeps display colors consistent across the graph and controls, and applies calibration changes immediately while the user works with reference points.

Changes / 变更

  • Standalone calibration page: Rebuilds the equal-brightness editor as an independent AppKit page with explicit, function-oriented layout components.
  • Aligned live sliders: Creates one continuously updating slider for every connected display. Dragging a slider immediately changes that physical display's brightness.
  • Per-display colors: Uses blue for the reference display and a distinct stable color for each target display. The target curve, reference points, and slider use the same color.
  • Reference-point guides: Draws a gray vertical guide for every reference point. Clicking a guide selects the point, moves all sliders to the corresponding values, applies the brightness changes, and refreshes the full curve preview.
  • Curve editing: Supports piecewise-linear and smooth monotone-cubic previews, independent target-display calibration, adding reference points, removing editable points, and saving or cancelling the current session.
  • Bilingual guidance: Replaces the usage section with localized Chinese and English instructions. The guidance uses the same typography and color as the point summary and is separated from it by one blank line.
  • Bilingual code comments: Documents the new layout, interaction, color, and calibration behavior in Chinese and English.

Testing / 测试

  • Release build with code signing disabled: passed.
  • Swift syntax parse for EqualBrightnessSettingsViewController.swift: passed.
  • plutil -lint for both localizations and bundle property lists: passed.
  • git diff --check: passed.
  • The generated app is unsigned and located at build/DerivedData/Build/Products/Release/MonitorControl.app.
  • Brightness mapping and physical multi-display interaction: verified successfully on hardware.

中文说明

本 PR 新增了一个独立的多显示器等亮度校准页面。页面为每台显示器提供对齐的实时滑块,统一图表与控件中的显示器颜色,并在编辑参考点时立即应用亮度变化。

变更内容

  • 独立校准页面: 使用独立的 AppKit 页面重写等亮度编辑器,并将布局拆分为多个功能组件。
  • 对齐的实时滑块: 每台已连接显示器对应一个连续更新的滑块,拖动时会立即修改实际显示器亮度。
  • 每台显示器独立颜色: 参考显示器使用蓝色,每台目标显示器使用稳定且不同的颜色;目标曲线、参考点和对应滑块保持同色。
  • 参考点引导线: 每个参考点绘制一条灰色纵向引导线。点击引导线后,会选中该点、移动所有滑块、应用对应亮度,并刷新整条曲线预览。
  • 曲线编辑: 支持分段线性和平滑单调曲线预览,可分别校准不同目标显示器,并支持添加参考点、删除可编辑点、保存或取消当前会话。
  • 双语使用说明: 整体替换为中文和英文本地化说明,使用与参考点摘要相同的字体和颜色,并在摘要与说明之间保留一个空行。
  • 双语代码注释: 为新增的布局、交互、颜色和校准逻辑补充中英双语注释。

测试结果

  • Release 构建(关闭代码签名):通过。
  • EqualBrightnessSettingsViewController.swift Swift 语法解析:通过。
  • 中英文本地化文件及 bundle plist 的 plutil -lint:通过。
  • git diff --check:通过。
  • 生成的未签名应用位于 build/DerivedData/Build/Products/Release/MonitorControl.app。
  • 亮度映射及多显示器实体机交互:已完成实体机验证,结果正常。

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/MonitorControl/MonitorControl/pull/1924 **Author:** [@qingye0312-cpu](https://github.com/qingye0312-cpu) **Created:** 10/5/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `pr/equal-brightness-support` --- ### 📝 Commits (10+) - [`eb922d4`](https://github.com/MonitorControl/MonitorControl/commit/eb922d41253e33b318783c88fed88509f5da3735) feat: add equal brightness support for displays - [`46b7932`](https://github.com/MonitorControl/MonitorControl/commit/46b793245f20619250e0c519f46e812e42b0128d) docs: add equal brightness usage guidance - [`106746c`](https://github.com/MonitorControl/MonitorControl/commit/106746cbcf7e1109d968aa45bc12660eb80cae0d) fix: localize equal brightness button - [`add07fa`](https://github.com/MonitorControl/MonitorControl/commit/add07fa76995f4198a9012b3456eb2038df3c045) fix: keep equal brightness guidance visible - [`c37255b`](https://github.com/MonitorControl/MonitorControl/commit/c37255b0a070597b4d6d0169471bc6f443ba4f09) refactor equal brightness editor layout - [`2f505be`](https://github.com/MonitorControl/MonitorControl/commit/2f505be2919fa52ed2165ba1584b536fbb6a31c5) docs: polish bilingual equal brightness guidance - [`b51e5c2`](https://github.com/MonitorControl/MonitorControl/commit/b51e5c26ad9d69d842b000e5a8ba752ad9369054) fix: restore original display menu labels - [`f8afbcc`](https://github.com/MonitorControl/MonitorControl/commit/f8afbcc6106cc89776a3ca678e6ba358842e809e) fix: restore display names and tune menu slider width - [`b5ed554`](https://github.com/MonitorControl/MonitorControl/commit/b5ed55482b8b5c10b63c33102b00e68a90962260) fix: persist equal brightness by stable display identity - [`51ad942`](https://github.com/MonitorControl/MonitorControl/commit/51ad942fe0bcefdcfa82e78b7e954c874b2ac1e5) fix: restore legacy equal brightness references ### 📊 Changes **45 files changed** (+2040 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `MonitorControl.xcodeproj/project.pbxproj` (+8 -0) 📝 `MonitorControl/Support/AppDelegate.swift` (+5 -2) 📝 `MonitorControl/Support/SliderHandler.swift` (+6 -1) 📝 `MonitorControl/UI/Base.lproj/Main.storyboard` (+14 -0) 📝 `MonitorControl/UI/cs.lproj/Localizable.strings` (+19 -0) 📝 `MonitorControl/UI/cs.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/de.lproj/Localizable.strings` (+19 -0) 📝 `MonitorControl/UI/de.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/en.lproj/Localizable.strings` (+19 -0) 📝 `MonitorControl/UI/en.lproj/Main.strings` (+6 -0) 📝 `MonitorControl/UI/es.lproj/Localizable.strings` (+19 -0) 📝 `MonitorControl/UI/es.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/fr.lproj/Localizable.strings` (+19 -0) 📝 `MonitorControl/UI/fr.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/hi.lproj/Localizable.strings` (+19 -0) 📝 `MonitorControl/UI/hi.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/hu.lproj/Localizable.strings` (+19 -0) 📝 `MonitorControl/UI/hu.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/it.lproj/Localizable.strings` (+19 -0) 📝 `MonitorControl/UI/it.lproj/Main.strings` (+3 -0) _...and 25 more files_ </details> ### 📄 Description This PR adds a standalone, localized equal-brightness calibration editor for multiple displays. It provides one aligned live slider per display, keeps display colors consistent across the graph and controls, and applies calibration changes immediately while the user works with reference points. ## Changes / 变更 - **Standalone calibration page:** Rebuilds the equal-brightness editor as an independent AppKit page with explicit, function-oriented layout components. - **Aligned live sliders:** Creates one continuously updating slider for every connected display. Dragging a slider immediately changes that physical display's brightness. - **Per-display colors:** Uses blue for the reference display and a distinct stable color for each target display. The target curve, reference points, and slider use the same color. - **Reference-point guides:** Draws a gray vertical guide for every reference point. Clicking a guide selects the point, moves all sliders to the corresponding values, applies the brightness changes, and refreshes the full curve preview. - **Curve editing:** Supports piecewise-linear and smooth monotone-cubic previews, independent target-display calibration, adding reference points, removing editable points, and saving or cancelling the current session. - **Bilingual guidance:** Replaces the usage section with localized Chinese and English instructions. The guidance uses the same typography and color as the point summary and is separated from it by one blank line. - **Bilingual code comments:** Documents the new layout, interaction, color, and calibration behavior in Chinese and English. ## Testing / 测试 - Release build with code signing disabled: passed. - Swift syntax parse for `EqualBrightnessSettingsViewController.swift`: passed. - `plutil -lint` for both localizations and bundle property lists: passed. - `git diff --check`: passed. - The generated app is unsigned and located at `build/DerivedData/Build/Products/Release/MonitorControl.app`. - Brightness mapping and physical multi-display interaction: verified successfully on hardware. --- ## 中文说明 本 PR 新增了一个独立的多显示器等亮度校准页面。页面为每台显示器提供对齐的实时滑块,统一图表与控件中的显示器颜色,并在编辑参考点时立即应用亮度变化。 ### 变更内容 - **独立校准页面:** 使用独立的 AppKit 页面重写等亮度编辑器,并将布局拆分为多个功能组件。 - **对齐的实时滑块:** 每台已连接显示器对应一个连续更新的滑块,拖动时会立即修改实际显示器亮度。 - **每台显示器独立颜色:** 参考显示器使用蓝色,每台目标显示器使用稳定且不同的颜色;目标曲线、参考点和对应滑块保持同色。 - **参考点引导线:** 每个参考点绘制一条灰色纵向引导线。点击引导线后,会选中该点、移动所有滑块、应用对应亮度,并刷新整条曲线预览。 - **曲线编辑:** 支持分段线性和平滑单调曲线预览,可分别校准不同目标显示器,并支持添加参考点、删除可编辑点、保存或取消当前会话。 - **双语使用说明:** 整体替换为中文和英文本地化说明,使用与参考点摘要相同的字体和颜色,并在摘要与说明之间保留一个空行。 - **双语代码注释:** 为新增的布局、交互、颜色和校准逻辑补充中英双语注释。 ### 测试结果 - Release 构建(关闭代码签名):通过。 - `EqualBrightnessSettingsViewController.swift` Swift 语法解析:通过。 - 中英文本地化文件及 bundle plist 的 `plutil -lint`:通过。 - `git diff --check`:通过。 - 生成的未签名应用位于 `build/DerivedData/Build/Products/Release/MonitorControl.app`。 - 亮度映射及多显示器实体机交互:已完成实体机验证,结果正常。 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
github-starred/MonitorControl#1336
No description provided.