[GH-ISSUE #1781] Preserve the relative offsets so the actual perceived brightness remains consistent within different display #982

Open
opened 2026-05-05 06:59:18 -06:00 by gitea-mirror · 2 comments
Owner

Originally created by @jingshi-ant on GitHub (Aug 21, 2025).
Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/1781

Before opening the issue, have you...?

  • Searched for existing issues

My external monitor is less bright than my Mac's built-in display. As a result, under normal settings, the brightness slider on the external monitor appears longer (i.e., set to a higher level) to match the perceived brightness.

Image

However, when ambient light changes trigger automatic brightness adjustment—especially when the external monitor reaches its maximum brightness and then scales back—the brightness sliders often end up aligned. At that point, the external monitor actually appears slightly dimmer.

Describe the solution you'd like

Is it possible to remember the user's preferred relative brightness relationship between the displays and try to maintain it?

Describe alternatives you've considered

none

Anything else?

No response

Originally created by @jingshi-ant on GitHub (Aug 21, 2025). Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/1781 ### Before opening the issue, have you...? - [x] Searched for existing issues ### Is your feature request related to a problem? Please describe My external monitor is less bright than my Mac's built-in display. As a result, under normal settings, the brightness slider on the external monitor appears longer (i.e., set to a higher level) to match the perceived brightness. <img width="472" height="432" alt="Image" src="https://github.com/user-attachments/assets/1bbdcb65-1702-4171-9b80-f7e3a6363b44" /> However, when ambient light changes trigger automatic brightness adjustment—especially when the external monitor reaches its maximum brightness and then scales back—the brightness sliders often end up aligned. At that point, the external monitor actually appears slightly dimmer. ### Describe the solution you'd like Is it possible to remember the user's preferred relative brightness relationship between the displays and try to maintain it? ### Describe alternatives you've considered none ### Anything else? _No response_
Author
Owner
<!-- gh-comment-id:3208792895 --> @jingshi-ant commented on GitHub (Aug 21, 2025): https://github.com/user-attachments/assets/86006bf2-c597-49f5-81ce-24f7908f8de2
Author
Owner

@mcandre commented on GitHub (Aug 23, 2026):

I believe display true brightness is likely to be highly varied from hardware model to model.

However, we still have an opportunity to implement basic, linear, scaling brightness sync between native and external displays: Add a brightness sync calibration UI.

Any two real ranges can be scaled by assigning matching pairs of minimum and maximum brightness levels between the devices. A video game style UI would prompt the user to temporarily set the external display so that both devices are at their brightest, and then both devices at their darkest.

The brightness range of a device is the difference; max - min.

Once configured, the ControlMonitor sync operation should read the current native brightness level as a percentage. The linearly scaled external brightness is the product of the internal display brightness percentage with the external brightness range. The final external brightness level takes min as an offset.

external brightness = external min + current internal brightness * (external max - external min).

Some displays will turn out to scale exceptionally nonlinearly, in which case, the current internal brightness factor could take more advanced shapes as well.

Many displays have very different caps on their maximum brightness. And true darkness is very different from displaying a black image on a powered on screen. So this is all best effort.

But I think even the simple linear design would be really helpful. Until then, it's a manual mess to find brightness levels for both displays, in that perfect range of readable without too much glare.

<!-- gh-comment-id:5384458433 --> @mcandre commented on GitHub (Aug 23, 2026): I believe display true brightness is likely to be highly varied from hardware model to model. However, we still have an opportunity to implement basic, linear, scaling brightness sync between native and external displays: Add a brightness sync calibration UI. Any two real ranges can be scaled by assigning matching pairs of minimum and maximum brightness levels between the devices. A video game style UI would prompt the user to temporarily set the external display so that both devices are at their brightest, and then both devices at their darkest. The brightness range of a device is the difference; max - min. Once configured, the ControlMonitor sync operation should read the current native brightness level as a percentage. The linearly scaled external brightness is the product of the internal display brightness percentage with the external brightness range. The final external brightness level takes min as an offset. ```text external brightness = external min + current internal brightness * (external max - external min). ``` Some displays will turn out to scale exceptionally nonlinearly, in which case, the `current internal brightness` factor could take more advanced shapes as well. Many displays have very different caps on their maximum brightness. And true darkness is very different from displaying a black image on a powered on screen. So this is all best effort. But I think even the simple linear design would be really helpful. Until then, it's a manual mess to find brightness levels for both displays, in that perfect range of readable without too much glare.
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#982
No description provided.