[GH-ISSUE #539] Proper support for Apple (or LG-Apple) branded external displays #413

Closed
opened 2026-05-05 05:57:32 -06:00 by gitea-mirror · 8 comments
Owner

Originally created by @waydabber on GitHub (Aug 25, 2021).
Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/539

Originally assigned to: @waydabber on GitHub.

Before opening the issue, have you...?

  • Searched for existing issues

Currently Apple branded displays are not supported properly by MonitorControl. Some displays (like LG UltraFine) might somewhat work since it has DDC support as well.

Describe the solution you'd like

For Apple branded external displays standard DisplayService calls (DisplayServicesGetBrightness() and DisplayServicesSetBrightness()) should work (this is now limited to the internal display only). The following could be used to detect such displays using a whitelist method (display name substring and vendor id matching) and direct them to use DisplayService instead of DDC:

let ULTRAFINE_NAME = "LG UltraFine"
let THUNDERBOLT_NAME = "Thunderbolt"
let LED_CINEMA_NAME = "LED Cinema"
let CINEMA_NAME = "Cinema"
let CINEMA_HD_NAME = "Cinema HD"
let COLOR_LCD_NAME = "Color LCD"
let APPLE_DISPLAY_VENDOR_ID = 0x05AC

Describe alternatives you've considered

n/a

Anything else?

No response

Originally created by @waydabber on GitHub (Aug 25, 2021). Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/539 Originally assigned to: @waydabber on GitHub. ### Before opening the issue, have you...? - [X] Searched for existing issues ### Is your feature request related to a problem? Please describe Currently Apple branded displays are not supported properly by MonitorControl. Some displays (like LG UltraFine) might somewhat work since it has DDC support as well. ### Describe the solution you'd like For Apple branded external displays standard DisplayService calls (`DisplayServicesGetBrightness()` and `DisplayServicesSetBrightness()`) should work (this is now limited to the internal display only). The following could be used to detect such displays using a whitelist method (display name substring and vendor id matching) and direct them to use DisplayService instead of DDC: let ULTRAFINE_NAME = "LG UltraFine" let THUNDERBOLT_NAME = "Thunderbolt" let LED_CINEMA_NAME = "LED Cinema" let CINEMA_NAME = "Cinema" let CINEMA_HD_NAME = "Cinema HD" let COLOR_LCD_NAME = "Color LCD" let APPLE_DISPLAY_VENDOR_ID = 0x05AC ### Describe alternatives you've considered n/a ### Anything else? _No response_
gitea-mirror 2026-05-05 05:57:32 -06:00
Author
Owner

@waydabber commented on GitHub (Sep 3, 2021):

Here is an unsigned test build (you need to click 'Open Anyway' under System Preferences/Security - if you are not comfortable with this, you can build the version yourself from the feat/beta branch) that should support displays using Apple's DisplayServices to change brightness. This should include Apple Thunderbolt, Pro XDR, LG UltraFine etc. displays. For these displays only a brightness slider is available (volume can be controlled via normal means).

A brightness slider for the built-in display is also added in this build.

Since Apple displays and built-in displays can be controlled via the standard control center slider as well, there will be an option to disable the slider these displays in a future version as it might bother some.

I'd be great if somebody with an actual Apple display would try if it works (I don't have one). :)

Thank you!

<!-- gh-comment-id:912826766 --> @waydabber commented on GitHub (Sep 3, 2021): Here is [an unsigned test build](https://www.dropbox.com/s/w1md5rjyll0lsyo/MonitorControl.zip?dl=1) (you need to click 'Open Anyway' under System Preferences/Security - if you are not comfortable with this, you can build the version yourself from the `feat/beta` branch) that should support displays using Apple's DisplayServices to change brightness. This should include Apple Thunderbolt, Pro XDR, LG UltraFine etc. displays. For these displays only a brightness slider is available (volume can be controlled via normal means). A brightness slider for the built-in display is also added in this build. Since Apple displays and built-in displays can be controlled via the standard control center slider as well, there will be an option to disable the slider these displays in a future version as it might bother some. I'd be great if somebody with an actual Apple display would try if it works (I don't have one). :) Thank you!
Author
Owner

@vadimtrifonov commented on GitHub (Sep 4, 2021):

I did a quick test with LG UltraFine 4K 24MD4KL-B, it appears to work properly, thank you!

<!-- gh-comment-id:912888302 --> @vadimtrifonov commented on GitHub (Sep 4, 2021): I did a quick test with LG UltraFine 4K 24MD4KL-B, it appears to work properly, thank you!
Author
Owner

@waydabber commented on GitHub (Sep 4, 2021):

Great, thanks for the info!

<!-- gh-comment-id:912924837 --> @waydabber commented on GitHub (Sep 4, 2021): Great, thanks for the info!
Author
Owner

@akaSurreal-bl commented on GitHub (Sep 4, 2021):

Not sure if related to this issue or not, but I have 3 x LG Ultrafine Displays. One 5K and 2 x 4K. I have been using Monitor Control for probably a year or so to be able to control the brightness on all 3 at once and it was working great until the last few months. No idea what changed. I did not update the software until today, tried the latest 3.0 RC2 to see if that helped, but did not. I was using 1.7.1 prior.

Now when I use the keyboard controls, it just seems to randomly pick 1 of the monitors to adjust brightness on, even when I have the setting to control all at once selected (also tried toggling). I noticed even if I close Monitor Control, it still just adjusts that same monitor, its as if its ignoring any keyboard controls for Monitor Control? It is setup under Accessibility and all that.

Note: I can still manually adjust all 3 just fine by using the sliders in the menu dropdown. I am on macOS 10.15.7

If this isn't the right place to post this, please let me know where, thanks! I really miss the ability to adjust all three at once.

<!-- gh-comment-id:913047039 --> @akaSurreal-bl commented on GitHub (Sep 4, 2021): Not sure if related to this issue or not, but I have 3 x LG Ultrafine Displays. One 5K and 2 x 4K. I have been using Monitor Control for probably a year or so to be able to control the brightness on all 3 at once and it was working great until the last few months. No idea what changed. I did not update the software until today, tried the latest 3.0 RC2 to see if that helped, but did not. I was using 1.7.1 prior. Now when I use the keyboard controls, it just seems to randomly pick 1 of the monitors to adjust brightness on, even when I have the setting to control all at once selected (also tried toggling). I noticed even if I close Monitor Control, it still just adjusts that same monitor, its as if its ignoring any keyboard controls for Monitor Control? It is setup under Accessibility and all that. Note: I can still manually adjust all 3 just fine by using the sliders in the menu dropdown. I am on macOS 10.15.7 If this isn't the right place to post this, please let me know where, thanks! I really miss the ability to adjust all three at once.
Author
Owner

@waydabber commented on GitHub (Sep 5, 2021):

Hi @FizzPow-Michael, your issue seems to be unrelated with Apple display support. For some reason key taps are not recorded anymore by MonitorControl so you experience the default system behavior. It might be that your privacy permissions database is corrupted and the OS blocks Accessibility features in regards with MonitorControl which is required for key taps to be handled by the app.

Here is how you can reset the privacy database:

https://www.techrepublic.com/article/how-to-reset-a-users-privacy-permissions-on-macos-and-ios/

You can also try to clicking the unlock icon under System Preferences/Security/Privacy (bottom left corner) and then manually drag MonitorControl to the list under 'Accessibility' (it does not matter if the app is already listed there as the entry is probably corrupted). You might want to click 'Reset Preferences' under MonitorControl also just to be sure everything works as intended.

<!-- gh-comment-id:913096740 --> @waydabber commented on GitHub (Sep 5, 2021): Hi @FizzPow-Michael, your issue seems to be unrelated with Apple display support. For some reason key taps are not recorded anymore by MonitorControl so you experience the default system behavior. It might be that your privacy permissions database is corrupted and the OS blocks Accessibility features in regards with MonitorControl which is required for key taps to be handled by the app. Here is how you can reset the privacy database: https://www.techrepublic.com/article/how-to-reset-a-users-privacy-permissions-on-macos-and-ios/ You can also try to clicking the unlock icon under System Preferences/Security/Privacy (bottom left corner) and then manually drag MonitorControl to the list under 'Accessibility' (it does not matter if the app is already listed there as the entry is probably corrupted). You might want to click 'Reset Preferences' under MonitorControl also just to be sure everything works as intended.
Author
Owner

@akaSurreal-bl commented on GitHub (Sep 7, 2021):

Thanks, will give that a shot! What's strange is that on reboots it sometimes fixes itself for awhile, so thats why I didn't think it was anything like this.

<!-- gh-comment-id:914605918 --> @akaSurreal-bl commented on GitHub (Sep 7, 2021): Thanks, will give that a shot! What's strange is that on reboots it sometimes fixes itself for awhile, so thats why I didn't think it was anything like this.
Author
Owner

@waydabber commented on GitHub (Sep 7, 2021):

Well, that is strange indeed. It might be that some other app is interfering with the keyboard capture mechanism. The solution I mentioned probably does not apply in this case (but still no harm in trying it). Sorry that I can't be more help with this.

<!-- gh-comment-id:914608090 --> @waydabber commented on GitHub (Sep 7, 2021): Well, that is strange indeed. It might be that some other app is interfering with the keyboard capture mechanism. The solution I mentioned probably does not apply in this case (but still no harm in trying it). Sorry that I can't be more help with this.
Author
Owner

@waydabber commented on GitHub (Sep 15, 2021):

a quick note - the implemented solution is not based on display name or vendor list (above) but we try to detect if Apple's own APIs work with the display or not and this is the deciding factor.

<!-- gh-comment-id:919828925 --> @waydabber commented on GitHub (Sep 15, 2021): a quick note - the implemented solution is not based on display name or vendor list (above) but we try to detect if Apple's own APIs work with the display or not and this is the deciding factor.
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#413
No description provided.