ocjvandijk / brightness-sync Goto Github PK
View Code? Open in Web Editor NEWSynchronize the brightness of your built-in display with your LG UltraFine display(s)
License: MIT License
Synchronize the brightness of your built-in display with your LG UltraFine display(s)
License: MIT License
System:
MacBook Pro (13-inch, M1, 2020)
macOS Big Sur, Version 11.0.1 (20B29)
Brightness Sync v2.3.1
External display:
LG UltraFine (RB22MD4KA-B)
With this setup, changing the brightness on the MacBook Pro (using βπ/π
) doesn't change the brightness on the LG UltraFine. Brightness Sync shows as "Activated" in the menu bar:
I've noticed that this doesn't seem to work for me with my LG UltraFine since I updated to Monterey.
It probably isn't specific to Brightness-Sync (I have trouble even in the Display Settings panel) but I was hoping this could help!
If you turn the internal display brightness all the way down, then the brightness stops syncing until you relaunch the app.
Otherwise it's working really well for me, thanks for the great app that really should be provided by LG!
I have a Mac mini with 2x LG UltraFine monitors so I've got nothing to read from. It would be really cool to be able to get the ambient light reading from a close by iPhone/iPad to be able to adjust the brightness of my monitors. Certainly beyond my capabilities, but thinking it wouldn't be too difficult for someone who knows what they are doing.
I've just rebooted my MacBook Pro. When I adjust the brightness with my touchbar, I now get 3 sliders, one for the internal display, and one for each of the external 5k ultrafine displays. However, when this app is running, the brightness flickers up and down on both monitors. If I "pause" this app, it stops flickering.
I seem to remember that the first time I plugged in the monitors, I could adjust their brightness on the touchbar. But after the first time they were unplugged, the option no longer appeared, and I could only adjust the brightness on 1. If you have any suggestions as to how I can investigate what the issue is, post logs, etc, I'll be happy to try.
Thanks again for this app. :-)
Hi,
First, great tool. I hope I can make it work for me. Unfortunately after installing it from the pkg provided, it doesn't seem to work at all on a MBPr 16'Big Sur + LG 27UL850
How can I debug it and maybe help you out with more info? I'm not a macos dev, but might be able to help with some simple code.
Thanks!
When I run this application the brightness of the monitor is always a little bit lower than my macbook, therefore the brightness of the monitor couldn't reach the highest value.
The model of my 2019 MacBook pro with 2 Thunderbolt ports mac is A2159, and the model of my 22-inch LG Ultrafine monitor is 22MD4KA. My system version is 10.15.4.
The app versions I had tried are 2.1.1 and 2.2.0.
Here's the brightness shown in touch bar.
Thank you!
Hey I have the latest Ultrafine. Here are the diagnostics.
I found your app because my display occasionally seems to adjust the brightness when no discernible ambient light as changed. I'm currently in my home office, all the lights on, windows open, and without your app running I can watch the Brightness slider oscillate between 60-80% on its own. The MBP brightness does not change.
I don't have the inclination to debug it too much, so your app at least keeps it in sync with my MBP.
Thank you!
[458682133: Optional({
ContainerID = "FEC1E8FD-2454-4733-9AF2-DEB112A48AE1";
DisplayBluePointX = "0.1503906";
DisplayBluePointY = "0.05957031";
DisplayBrightnessAffectsGamma = 1;
DisplayBundleURL = "/System/Library/Displays/";
DisplayGreenPointX = "0.2646484";
DisplayGreenPointY = "0.6904297";
DisplayHasHardwareBrightnessSmoothing = 1;
DisplayHorizontalImageSize = 600;
DisplayPort = {
PowerValue = 5;
};
DisplayProductID = 23412;
DisplayProductName = {
ar = "LG UltraFine";
"ca_ES" = "LG UltraFine";
"cs_CZ" = "LG UltraFine";
"da_DK" = "LG UltraFine";
"de_DE" = "LG UltraFine";
"el_GR" = "LG UltraFine";
"en_AU" = "LG UltraFine";
"en_GB" = "LG UltraFine";
"en_US" = "LG UltraFine";
"es_ES" = "LG UltraFine";
"es_XL" = "LG UltraFine";
"fi_FI" = "LG UltraFine";
"fr_CA" = "LG UltraFine";
"fr_FR" = "LG UltraFine";
"he_IL" = "LG UltraFine";
"hi_IN" = "LG UltraFine";
"hr_HR" = "LG UltraFine";
"hu_HU" = "LG UltraFine";
id = "LG UltraFine";
"it_IT" = "LG UltraFine";
"ja_JP" = "LG UltraFine";
"ko_KR" = "LG UltraFine";
ms = "LG UltraFine";
"nb_NO" = "LG UltraFine";
"nl_NL" = "LG UltraFine";
"pl_PL" = "LG UltraFine";
"pt_BR" = "LG UltraFine";
"pt_PT" = "LG UltraFine";
"ro_RO" = "LG UltraFine";
"ru_RU" = "LG UltraFine";
"sk_SK" = "LG UltraFine";
"sv_SE" = "LG UltraFine";
"th_TH" = "LG UltraFine";
"tr_TR" = "LG UltraFine";
"uk_UA" = "LG UltraFine";
"vi_VN" = "LG UltraFine";
"zh_CN" = "LG UltraFine";
"zh_TW" = "LG UltraFine";
};
DisplayRedPointX = "0.6796875";
DisplayRedPointY = "0.3203125";
DisplaySerialNumber = 340494;
DisplayVendorID = 7789;
DisplayVerticalImageSize = 340;
DisplayWeekManufacture = 6;
DisplayWhiteGamma = "2.2";
DisplayWhitePointX = "0.3125";
DisplayWhitePointY = "0.3291016";
DisplayYearManufacture = 2019;
IODisplayAttributes = {length = 40, bytes = 0x67617476 00000000 73676c66 04000000 ... 676c6664 00000000 };
IODisplayConnectFlags = {length = 4, bytes = 0xc4410000};
IODisplayEDID = {length = 256, bytes = 0x00ffffff ffffff00 9e6d745b 0e320500 ... 00000000 0000c090 };
IODisplayEDIDOriginal = {length = 256, bytes = 0x00ffffff ffffff00 9e6d745b 0e320500 ... 00000000 0000c090 };
IODisplayIsDigital = 1;
IODisplayIsHDMISink = 0;
IODisplayLocation = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG0@1/IOPP/GFX0@0/ATY,Palena@3/AMDFramebufferVIB/display0/AppleDisplay";
IODisplayPrefsKey = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG0@1/IOPP/GFX0@0/ATY,Palena@3/AMDFramebufferVIB/display0/AppleDisplay-9e6d-5b74";
IOFBTransform = 0;
IOGFlags = 4;
"display-icon" = "/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b74.icns";
"display-resolution-preview-icon" = "/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b74.tiff";
"graphic-options" = 12;
"resolution-preview-height" = 114;
"resolution-preview-width" = 202;
"resolution-preview-x" = 11;
"resolution-preview-y" = 47;
"scale-resolutions" = (
{length = 8, bytes = 0x0000190000000e10},
{length = 8, bytes = 0x0000168000000ca8},
{length = 8, bytes = 0x0000140000000b40},
{length = 8, bytes = 0x0000100000000900},
{length = 8, bytes = 0x00000c8000000708},
{length = 16, bytes = 0x00001000000008700000000100200000},
{length = 16, bytes = 0x00000f00000008700000000100200000},
{length = 16, bytes = 0x00000a00000006400000000100200000},
{length = 16, bytes = 0x00000780000004b00000000100200000},
{length = 16, bytes = 0x000006900000041a0000000100200000},
{length = 16, bytes = 0x00000500000003200000000100200000},
{length = 12, bytes = 0x00000b400000065400000001},
{length = 12, bytes = 0x00000a00000005a000000001},
{length = 12, bytes = 0x000008000000048000000001},
{length = 12, bytes = 0x000007800000043800000001},
{length = 12, bytes = 0x00000640000004b000000001},
{length = 12, bytes = 0x000006400000038400000001},
{length = 12, bytes = 0x000005a00000032a00000001},
{length = 12, bytes = 0x00000540000002f400000001},
{length = 12, bytes = 0x000005000000040000000001},
{length = 12, bytes = 0x00000500000002d000000001},
{length = 12, bytes = 0x000004000000030000000001},
{length = 12, bytes = 0x000004000000024000000001},
{length = 12, bytes = 0x000003c00000025800000001},
{length = 12, bytes = 0x000003c00000021c00000001},
{length = 12, bytes = 0x000003480000020c00000001},
{length = 12, bytes = 0x000003200000025800000001},
{length = 12, bytes = 0x00000280000001e000000001},
{length = 16, bytes = 0x0000190000000e100000000900a00000},
{length = 16, bytes = 0x0000168000000ca80000000900a00000},
{length = 16, bytes = 0x0000140000000b400000000900a00000},
{length = 16, bytes = 0x00001000000009000000000900a00000},
{length = 16, bytes = 0x00000c80000007080000000900a00000}
);
slopeLimitGamma = 0;
}), 69734406: Optional({
DisplayBacklight = 500;
DisplayBluePointX = "0.1494141";
DisplayBluePointY = "0.05175781";
DisplayBrightReflection = 505;
DisplayBundleURL = "/System/Library/Displays/";
DisplayDarkReflection = "1.1";
DisplayFixedPixelFormat = 1;
DisplayGreenPointX = "0.2646484";
DisplayGreenPointY = "0.6904297";
DisplayHorizontalImageSize = 330;
DisplayLeakage = "0.333";
DisplayLowestLevel = 1;
DisplayLowestMeasured = "0.4323";
DisplayProductID = 41024;
DisplayProductName = {
ar = "\U200fLCD \U0645\U0644\U0648\U0646\U0629";
"ca_ES" = "LCD en color";
"cs_CZ" = "Barevn\U00fd LCD";
"da_DK" = "LCD-farvesk\U00e6rm";
"de_DE" = "Farb-LCD";
"el_GR" = "\U0388\U03b3\U03c7\U03c1\U03c9\U03bc\U03b7 \U03bf\U03b8\U03cc\U03bd\U03b7 LCD";
"en_AU" = "Colour LCD";
"en_GB" = "Colour LCD";
"en_US" = "Color LCD";
"es_ES" = "LCD color";
"es_XL" = "LCD color";
"fi_FI" = "V\U00e4ri-LCD";
"fr_CA" = "ACL couleur";
"fr_FR" = "LCD couleur";
"he_IL" = "\U200fLCD \U05e6\U05d1\U05e2\U05d5\U05e0\U05d9";
"hi_IN" = "\U0930\U0902\U0917\U0940\U0928 LCD";
"hr_HR" = "LCD u boji";
"hu_HU" = "Sz\U00ednes LCD";
id = "LCD Warna";
"it_IT" = "LCD colori";
"ja_JP" = "\U30ab\U30e9\U30fcLCD";
"ko_KR" = "\Uceec\Ub7ec LCD";
ms = "Warna LCD";
"nb_NO" = "Farge-LCD";
"nl_NL" = "Kleuren-LCD";
"pl_PL" = "Kolor LCD";
"pt_BR" = "LCD Colorido";
"pt_PT" = "LCD a Cores";
"ro_RO" = "LCD color";
"ru_RU" = "\U0426\U0432\U0435\U0442\U043d\U043e\U0439 \U0416\U041a-\U0434\U0438\U0441\U043f\U043b\U0435\U0439";
"sk_SK" = "Farebn\U00fd LCD";
"sv_SE" = "F\U00e4rg-LCD";
"th_TH" = "LCD \U0e2a\U0e35";
"tr_TR" = "Renkli LCD";
"uk_UA" = "\U041a\U043e\U043b\U044c\U043e\U0440\U043e\U0432\U0438\U0439 LCD";
"vi_VN" = "LCD M\U00e0u";
"zh_CN" = "\U5f69\U8272LCD";
"zh_TW" = "\U5f69\U8272LCD";
};
DisplayRedPointX = "0.6796875";
DisplayRedPointY = "0.3203125";
DisplaySubPixelLayout = 1;
DisplayVendorID = 1552;
DisplayVerticalImageSize = 210;
DisplayViewAngleAffectsGamma = 1;
DisplayWeekManufacture = 16;
DisplayWhiteGamma = "2.2";
DisplayWhitePointX = "0.3125";
DisplayWhitePointY = "0.3291016";
DisplayYearManufacture = 2017;
IODisplayAttributes = {length = 40, bytes = 0x67617476 00000000 73676c66 04000000 ... 676c6664 00000000 };
IODisplayConnectFlags = {length = 4, bytes = 0xc4490000};
IODisplayEDID = {length = 256, bytes = 0x00ffffff ffffff00 061040a0 00000000 ... 00000000 0000af90 };
IODisplayEDIDOriginal = {length = 256, bytes = 0x00ffffff ffffff00 061040a0 00000000 ... 00000000 0000af90 };
IODisplayHasBacklight = 1;
IODisplayIsDigital = 1;
IODisplayIsHDMISink = 0;
IODisplayLocation = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG0@1/IOPP/GFX0@0/ATY,Palena@0/AMDFramebufferVIB/display0/AppleBacklightDisplay";
IODisplayMobileBLTable = {length = 36, bytes = 0x00110000 0290034c 045105b6 079f0a3e ... 5cd280ff b3c7f8b4 };
IODisplayPrefsKey = "Alias:0/AppleBacklightDisplay-610-a040";
IOFBTransform = 0;
IOGFlags = 4;
"display-resolution-preview-icon" = "/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-9d9da0.tiff";
"graphic-options" = 12;
"resolution-preview-height" = 92;
"resolution-preview-width" = 147;
"resolution-preview-x" = 40;
"resolution-preview-y" = 62;
"scale-resolutions" = (
{length = 9, bytes = 0x00000f000000096000},
{length = 9, bytes = 0x00000d200000083400},
{length = 9, bytes = 0x00000b400000070800},
{length = 9, bytes = 0x00000a000000064000},
{length = 9, bytes = 0x000008000000050000},
{length = 16, bytes = 0x00000a00000006400000000100200000},
{length = 16, bytes = 0x00000a00000005a00000000100200000},
{length = 16, bytes = 0x00000780000004b00000000100200000},
{length = 16, bytes = 0x00000780000004380000000100200000},
{length = 16, bytes = 0x00000500000002d00000000100200000},
{length = 12, bytes = 0x000006720000041a00000001},
{length = 12, bytes = 0x000005a00000038400000001},
{length = 12, bytes = 0x000005000000032000000001},
{length = 12, bytes = 0x00000480000002d000000001},
{length = 12, bytes = 0x000004000000030000000001},
{length = 12, bytes = 0x000003480000020d00000001},
{length = 12, bytes = 0x000003200000025800000001},
{length = 12, bytes = 0x00000280000001e000000001},
{length = 16, bytes = 0x00000f00000009600000000900a00000},
{length = 16, bytes = 0x00000d20000008340000000900a00000},
{length = 16, bytes = 0x00000b40000007080000000900a00000},
{length = 16, bytes = 0x00000a00000006400000000900a00000},
{length = 16, bytes = 0x00000800000005000000000900a00000},
{length = 16, bytes = 0x00000780000004b00000000900a00000},
{length = 16, bytes = 0x00000780000004380000000900200000},
{length = 16, bytes = 0x00000500000002d00000000900200000}
);
slopeLimitGamma = 0;
"target-default-ppmm" = "10.1510574";
})]
I rarely change the screen brightness, so it makes little sense for the app to keep polling the brightness, which results in relatively high energy usage. It would be great to be able to change this frequency, as I'd be perfectly happy with the sync taking a second or two. Even allowing this to be changed from the terminal with defaults write
would be great for now.
v2.2.0 Beta 1
Everything else has been working great so far.
Hi
I have just bought the latest version of LG Ultrafine 5K, 27MD5KL-B. Im using it with my MacBook Pro 16" 2019.
But I cannot control the brightness of my LG screen at all, no matter what I do, it won't get brighter or darker. There are no overlay brightness-indicators showing up on the LG screen as it is on my Macbook when I adjust its brightness.
The LG screen is set on a very low-brightness so it's very frustrating not being able to increase it.
When I run the latest beta of your app.
[69734662: Optional({
DisplayBacklight = 500;
DisplayBluePointX = "0.1503906";
DisplayBluePointY = "0.05175781";
DisplayBrightReflection = 505;
DisplayBundleURL = "/System/Library/Displays/";
DisplayDarkReflection = "1.1";
DisplayFixedPixelFormat = 1;
DisplayGreenPointX = "0.2646484";
DisplayGreenPointY = "0.6904297";
DisplayHorizontalImageSize = 340;
DisplayLeakage = "0.419";
DisplayLowestLevel = 2;
DisplayLowestMeasured = "0.4323";
DisplayProductID = 41028;
DisplayProductName = {
ar = "\U200fLCD \U0645\U0644\U0648\U0646\U0629";
"ca_ES" = "LCD en color";
"cs_CZ" = "Barevn\U00fd LCD";
"da_DK" = "LCD-farvesk\U00e6rm";
"de_DE" = "Farb-LCD";
"el_GR" = "\U0388\U03b3\U03c7\U03c1\U03c9\U03bc\U03b7 \U03bf\U03b8\U03cc\U03bd\U03b7 LCD";
"en_AU" = "Colour LCD";
"en_GB" = "Colour LCD";
"en_US" = "Color LCD";
"es_ES" = "LCD color";
"es_XL" = "LCD color";
"fi_FI" = "V\U00e4ri-LCD";
"fr_CA" = "ACL couleur";
"fr_FR" = "LCD couleur";
"he_IL" = "\U200fLCD \U05e6\U05d1\U05e2\U05d5\U05e0\U05d9";
"hi_IN" = "\U0930\U0902\U0917\U0940\U0928 LCD";
"hr_HR" = "LCD u boji";
"hu_HU" = "Sz\U00ednes LCD";
id = "LCD Warna";
"it_IT" = "LCD colori";
"ja_JP" = "\U30ab\U30e9\U30fcLCD";
"ko_KR" = "\Uceec\Ub7ec LCD";
ms = "Warna LCD";
"nb_NO" = "Farge-LCD";
"nl_NL" = "Kleuren-LCD";
"pl_PL" = "Kolor LCD";
"pt_BR" = "LCD Colorido";
"pt_PT" = "LCD a Cores";
"ro_RO" = "LCD color";
"ru_RU" = "\U0426\U0432\U0435\U0442\U043d\U043e\U0439 \U0416\U041a-\U0434\U0438\U0441\U043f\U043b\U0435\U0439";
"sk_SK" = "Farebn\U00fd LCD";
"sv_SE" = "F\U00e4rg-LCD";
"th_TH" = "LCD \U0e2a\U0e35";
"tr_TR" = "Renkli LCD";
"uk_UA" = "\U041a\U043e\U043b\U044c\U043e\U0440\U043e\U0432\U0438\U0439 LCD";
"vi_VN" = "LCD M\U00e0u";
"zh_CN" = "\U5f69\U8272LCD";
"zh_TW" = "\U5f69\U8272LCD";
};
DisplayRedPointX = "0.6796875";
DisplayRedPointY = "0.3203125";
DisplaySubPixelLayout = 1;
DisplayVendorID = 1552;
DisplayVerticalImageSize = 220;
DisplayViewAngleAffectsGamma = 1;
DisplayWeekManufacture = 36;
DisplayWhiteGamma = "2.2";
DisplayWhitePointX = "0.3125";
DisplayWhitePointY = "0.3291016";
DisplayYearManufacture = 2019;
IODisplayAttributes = {length = 40, bytes = 0x67617476 00000000 73676c66 04000000 ... 676c6664 00000000 };
IODisplayConnectFlags = {length = 4, bytes = 0x00080000};
IODisplayEDID = {length = 256, bytes = 0x00ffffff ffffff00 061044a0 00000000 ... 00000000 00000490 };
IODisplayEDIDOriginal = {length = 256, bytes = 0x00ffffff ffffff00 061044a0 00000000 ... 00000000 00000490 };
IODisplayHasBacklight = 1;
IODisplayIsDigital = 1;
IODisplayIsHDMISink = 0;
IODisplayLocation = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG0@1/IOPP/EGP0@0/IOPP/EGP1@0/IOPP/GFX0@0/AMDRadeonX6000_AmdRadeonControllerNavi14/ATY,Boa@0/display0/AppleBacklightDisplay";
IODisplayMobileBLTable = {length = 36, bytes = 0x00110000 02900344 043d0592 076509e4 ... 583a7a96 aae1eeed };
IODisplayPrefsKey = "Alias:0/AppleBacklightDisplay-610-a044";
IOFBTransform = 0;
IOGFlags = 4;
"display-refresh-rate-policy" = {length = 8, bytes = 0x0000000000000001};
"display-resolution-preview-icon" = "/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a044-9d9da0.tiff";
"display-rotation-policy" = {length = 8, bytes = 0x0000000000000001};
dspc = (
{length = 18, bytes = 0xd5910050c08038700820980859d71000001a},
{length = 18, bytes = 0xe7910050c080c2710820980859d71000001a},
{length = 18, bytes = 0xdc910050c08024720820980859d71000001a},
{length = 18, bytes = 0xe4910050c08027720820980859d71000001a}
);
"edid-patches" = (
{
data = {length = 36, bytes = 0x00000010 00000000 00000000 00000000 ... 00000000 00000000 };
offset = 90;
}
);
"resolution-preview-height" = 96;
"resolution-preview-width" = 154;
"resolution-preview-x" = 36;
"resolution-preview-y" = 65;
"scale-resolutions" = (
{length = 8, bytes = 0x0000100000000a00},
{length = 8, bytes = 0x00000e00000008c0},
{length = 8, bytes = 0x00000c0000000780},
{length = 8, bytes = 0x00000a8000000690},
{length = 8, bytes = 0x00000900000005a0},
{length = 16, bytes = 0x00000a00000006400000000100200000},
{length = 16, bytes = 0x00000a00000005a00000000100200000},
{length = 16, bytes = 0x00000780000004b00000000100200000},
{length = 16, bytes = 0x00000780000004380000000100200000},
{length = 16, bytes = 0x00000500000002d00000000100200000},
{length = 12, bytes = 0x000006720000041a00000001},
{length = 12, bytes = 0x000005a00000038400000001},
{length = 12, bytes = 0x000005000000032000000001},
{length = 12, bytes = 0x00000480000002d000000001},
{length = 12, bytes = 0x000004000000030000000001},
{length = 12, bytes = 0x000003480000020d00000001},
{length = 12, bytes = 0x000003200000025800000001},
{length = 12, bytes = 0x00000280000001e000000001},
{length = 16, bytes = 0x00000f00000009600000000900a00000},
{length = 16, bytes = 0x00000d20000008340000000900a00000},
{length = 16, bytes = 0x00000b40000007080000000900a00000},
{length = 16, bytes = 0x00000a00000006400000000900a00000},
{length = 16, bytes = 0x00000800000005000000000900a00000},
{length = 16, bytes = 0x00000780000004b00000000900a00000},
{length = 16, bytes = 0x00000780000004380000000900200000},
{length = 16, bytes = 0x00000500000002d00000000900200000}
);
slopeLimitGamma = 0;
"target-default-ppmm" = "10.39";
}), 458635451: Optional({
ContainerID = "DC8846F4-4A9F-45B5-B4B9-B43D7DE1CA37";
DisplayBluePointX = "0.1503906";
DisplayBluePointY = "0.05957031";
DisplayBrightnessAffectsGamma = 1;
DisplayBundleURL = "/System/Library/Displays/";
DisplayGreenPointX = "0.2646484";
DisplayGreenPointY = "0.6904297";
DisplayHasHardwareBrightnessSmoothing = 1;
DisplayHorizontalImageSize = 600;
DisplayPort = {
PowerValue = 5;
};
DisplayProductID = 23412;
DisplayProductName = {
ar = "LG UltraFine";
"ca_ES" = "LG UltraFine";
"cs_CZ" = "LG UltraFine";
"da_DK" = "LG UltraFine";
"de_DE" = "LG UltraFine";
"el_GR" = "LG UltraFine";
"en_AU" = "LG UltraFine";
"en_GB" = "LG UltraFine";
"en_US" = "LG UltraFine";
"es_ES" = "LG UltraFine";
"es_XL" = "LG UltraFine";
"fi_FI" = "LG UltraFine";
"fr_CA" = "LG UltraFine";
"fr_FR" = "LG UltraFine";
"he_IL" = "LG UltraFine";
"hi_IN" = "LG UltraFine";
"hr_HR" = "LG UltraFine";
"hu_HU" = "LG UltraFine";
id = "LG UltraFine";
"it_IT" = "LG UltraFine";
"ja_JP" = "LG UltraFine";
"ko_KR" = "LG UltraFine";
ms = "LG UltraFine";
"nb_NO" = "LG UltraFine";
"nl_NL" = "LG UltraFine";
"pl_PL" = "LG UltraFine";
"pt_BR" = "LG UltraFine";
"pt_PT" = "LG UltraFine";
"ro_RO" = "LG UltraFine";
"ru_RU" = "LG UltraFine";
"sk_SK" = "LG UltraFine";
"sv_SE" = "LG UltraFine";
"th_TH" = "LG UltraFine";
"tr_TR" = "LG UltraFine";
"uk_UA" = "LG UltraFine";
"vi_VN" = "LG UltraFine";
"zh_CN" = "LG UltraFine";
"zh_TW" = "LG UltraFine";
};
DisplayRedPointX = "0.6796875";
DisplayRedPointY = "0.3203125";
DisplaySerialNumber = 320951;
DisplayVendorID = 7789;
DisplayVerticalImageSize = 340;
DisplayWeekManufacture = 6;
DisplayWhiteGamma = "2.2";
DisplayWhitePointX = "0.3125";
DisplayWhitePointY = "0.3291016";
DisplayYearManufacture = 2020;
IODisplayAttributes = {length = 40, bytes = 0x67617476 00000000 73676c66 04000000 ... 676c6664 00000000 };
IODisplayConnectFlags = {length = 4, bytes = 0x00000000};
IODisplayEDID = {length = 256, bytes = 0x00ffffff ffffff00 9e6d745b b7e50400 ... 00000000 00005490 };
IODisplayEDIDOriginal = {length = 256, bytes = 0x00ffffff ffffff00 9e6d745b b7e50400 ... 00000000 00005490 };
IODisplayIsDigital = 1;
IODisplayIsHDMISink = 0;
IODisplayLocation = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG0@1/IOPP/EGP0@0/IOPP/EGP1@0/IOPP/GFX0@0/AMDRadeonX6000_AmdRadeonControllerNavi14/ATY,Boa@1/display0/AppleDisplay";
IODisplayPrefsKey = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG0@1/IOPP/EGP0@0/IOPP/EGP1@0/IOPP/GFX0@0/AMDRadeonX6000_AmdRadeonControllerNavi14/ATY,Boa@1/display0/AppleDisplay-9e6d-5b74";
IOFBTransform = 0;
IOGFlags = 4;
"display-icon" = "/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b74.icns";
"display-resolution-preview-icon" = "/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b74.tiff";
"resolution-preview-height" = 114;
"resolution-preview-width" = 202;
"resolution-preview-x" = 11;
"resolution-preview-y" = 47;
"scale-resolutions" = (
{length = 8, bytes = 0x0000190000000e10},
{length = 8, bytes = 0x0000168000000ca8},
{length = 8, bytes = 0x0000140000000b40},
{length = 8, bytes = 0x0000100000000900},
{length = 8, bytes = 0x00000c8000000708},
{length = 16, bytes = 0x00001000000008700000000100200000},
{length = 16, bytes = 0x00000f00000008700000000100200000},
{length = 16, bytes = 0x00000a00000006400000000100200000},
{length = 16, bytes = 0x00000780000004b00000000100200000},
{length = 16, bytes = 0x000006900000041a0000000100200000},
{length = 16, bytes = 0x00000500000003200000000100200000},
{length = 12, bytes = 0x00000b400000065400000001},
{length = 12, bytes = 0x00000a00000005a000000001},
{length = 12, bytes = 0x000008000000048000000001},
{length = 12, bytes = 0x000007800000043800000001},
{length = 12, bytes = 0x00000640000004b000000001},
{length = 12, bytes = 0x000006400000038400000001},
{length = 12, bytes = 0x000005a00000032a00000001},
{length = 12, bytes = 0x00000540000002f400000001},
{length = 12, bytes = 0x000005000000040000000001},
{length = 12, bytes = 0x00000500000002d000000001},
{length = 12, bytes = 0x000004000000030000000001},
{length = 12, bytes = 0x000004000000024000000001},
{length = 12, bytes = 0x000003c00000025800000001},
{length = 12, bytes = 0x000003c00000021c00000001},
{length = 12, bytes = 0x000003480000020c00000001},
{length = 12, bytes = 0x000003200000025800000001},
{length = 12, bytes = 0x00000280000001e000000001},
{length = 16, bytes = 0x0000190000000e100000000900a00000},
{length = 16, bytes = 0x0000168000000ca80000000900a00000},
{length = 16, bytes = 0x0000140000000b400000000900a00000},
{length = 16, bytes = 0x00001000000009000000000900a00000},
{length = 16, bytes = 0x00000c80000007080000000900a00000}
);
slopeLimitGamma = 0;
})]
I want to support your work! Please add a menu item, or other obvious mechanic for compensation. I'm new to Github, so if there is some established way of giving I don't know about it.
Firstly, thanks for making this utility public!
Unfortunately the app doesn't work for me with my UltraFine 5k display as there is no serial number returned from the display info. I've got it working by simply ignoring the checks for the display, and simply setting brightness on all non built-in displays. It would be good to understand however why my display is not returning a serial number.
@OCJvanDijk, is this something you've come across before?
Thanks A LOT for this app. The usual story, brightness worked on the screen, then stopped, then wouldn't do anything. Googling around, what the hell, this is supposed to "just work", blah, blah, blah. The with one cask install, my brightness woes are a distant memory. A heroic contribution to open source, thank you kindly indeed.
I tried connecting to MacBook Pro 13" on Big Sur using provided USB-C cable, and I see this:
I also tried the same on Hackintosh running Catalina, connecting display via DisplayPort and also via USB-C, seeing the same result of "Deactivated".
Any ideas?
Update: I installed the Lunar app and it works there
brew cask install brightness-sync
is in README.md
as installation command, but this doesn't work now because API has changed.
homebrew blog: 2.6.0 β Homebrew
All brew cask commands have been deprecated in favour of brew commands (with --cask) when necessary
screenshot:
This isn't currently working on 11.0.1, will there be an update soon?
This is on macOS Big Sur 11.1 on an Intel Mac, connected to an LG Ultrafine 22". If I restart the app, it starts syncing brightness again.
Just to let you know, that it works with my old 22" Cinema HD display as well.
Thanks a lot!
I have 2 x 1st Gen 5K's and 1 x 2nd Gen 5K. Would this utility be able to sync the 2 x 1st Gen 5Ks' brightness levels with the single 2nd Gen 5K, since it's the only one of the three that can automatically adjust its own brightness based on its ambient light sensor? Thanks!
The package doesn't have its own icon. Consider adding an icon to the package so that it does not just have the generic package icon in applications.
I'm using the Apple Silicon beta version with an LG Ultrafine external display. When the light changes, the app causes the screen to flicker light and dark for a few seconds before it settles down.
I ran the app (which works great btw!) from the ~/Downloads
directory since safari extracted the zip by default, and later noticed some log spam repeating every few seconds:
Dec 10 09:34:36 kintsugi com.apple.xpc.launchd[1] (dev.vandijk.BrightnessSyncLauncher[59549]): Could not find and/or execute program specified by service: 107: Malformed bundle: dev.vandijk.BrightnessSyncLauncher
Dec 10 09:34:36 kintsugi com.apple.xpc.launchd[1] (dev.vandijk.BrightnessSyncLauncher[59549]): Service exited with abnormal code: 78
Dec 10 09:34:36 kintsugi com.apple.xpc.launchd[1] (dev.vandijk.BrightnessSyncLauncher): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
Dec 10 09:34:46 kintsugi com.apple.xpc.launchd[1] (dev.vandijk.BrightnessSyncLauncher[59553]): Could not find and/or execute program specified by service: 107: Malformed bundle: dev.vandijk.BrightnessSyncLauncher
Dec 10 09:34:46 kintsugi com.apple.xpc.launchd[1] (dev.vandijk.BrightnessSyncLauncher[59553]): Service exited with abnormal code: 78
Dec 10 09:34:46 kintsugi com.apple.xpc.launchd[1] (dev.vandijk.BrightnessSyncLauncher): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
I disabled "Launch At Login" on a hunch, and the log messages stopped.
Re-enabled "Launch At Login" and moved the App to /Applications
and the log messages did not reappear.
I did notice the App does not appear in System Preferences > Login Items, but also dont know if that has fallen out of style with macos apps π€
For reference, another app i use (mos) has a "launch at login" option inside it, and appears in syspref Login Items.
ex: https://github.com/Caldis/Mos/blob/master/Mos/Utils/LaunchStarter.swift
I don't do this very often, so I'm not sure how often this issue occurs:
panic(cpu 0 caller 0xffffff8018291b2c): Sleep transition timed out after 180 seconds while calling power state change callbacks. Suspected bundle: com.apple.driver.AppleIntelCFLGraphicsFramebuffer. Thread 0x1035d08.
Backtracing specified thread
Backtrace (CPU 0), Frame : Return Address
0xffffff922be53900 : 0xffffff8017c471e8
0xffffff922c52bbc0 : 0xffffff8017b433f1
0xffffff922c52bc30 : 0xffffff8017b41c2f
0xffffff922c52bc80 : 0xffffff8017b32800
0xffffff922c52bcc0 : 0xffffff801822d20c
0xffffff922c52bd00 : 0xffffff801822e6eb
0xffffff922c52bd30 : 0xffffff7f9b931d08
0xffffff922c52bdb0 : 0xffffff8018230048
0xffffff922c52be10 : 0xffffff7f9b9317a1
0xffffff922c52be30 : 0xffffff8018214e04
0xffffff922c52bea0 : 0xffffff8018214c0a
0xffffff922c52bec0 : 0xffffff8017b63545
0xffffff922c52bf40 : 0xffffff8017b63071
0xffffff922c52bfa0 : 0xffffff8017ac713e
Kernel Extensions in backtrace:
com.apple.driver.AppleIntelCFLGraphicsFramebuffer(14.0.5)[3A72441D-C2C5-3828-A5AB-B0EE077B7918]@0xffffff7f9b8c3000->0xffffff7f9baf5fff
dependency: com.apple.iokit.IOPCIFamily(2.9)[1B1F3BBB-9212-3CF9-94F8-8FEF0D3ACEC4]@0xffffff7f98511000
dependency: com.apple.iokit.IOACPIFamily(1.4)[9D1FF279-C4A2-3344-902F-E0B22B508689]@0xffffff7f98508000
dependency: com.apple.iokit.IOAcceleratorFamily2(438.4.5)[33DA860E-90A6-3224-A944-93FA125B054E]@0xffffff7f9b7f5000
dependency: com.apple.iokit.IOReportFamily(47)[337B24B2-0261-3521-8D1B-23387FC1D657]@0xffffff7f98449000
dependency: com.apple.AppleGraphicsDeviceControl(5.1.16)[56FDE242-D4A6-3E8F-A81C-CE9BA61E3828]@0xffffff7f9b8b9000
dependency: com.apple.iokit.IOGraphicsFamily(575.1)[D47CA481-C5E5-3F03-9B04-6634DF5F3121]@0xffffff7f9b7a4000
BSD process name corresponding to current thread: kernel_task
Boot args: chunklist-security-epoch=0 -chunklist-no-rev2-dev
Mac OS version:
19E287
Kernel version:
Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64
Kernel UUID: AB0AA7EE-3D03-3C21-91AD-5719D79D7AF6
Kernel slide: 0x0000000017800000
Kernel text base: 0xffffff8017a00000
__HIB text base: 0xffffff8017900000
System model name: MacBookPro15,2 (Mac-827FB448E656EC26)
System shutdown begun: NO
System uptime in nanoseconds: 1485012061024524
last loaded kext at 22838759459973: >usb.cdc.acm 5.0.0 (addr 0xffffff7f9bf25000, size 32768)
loaded kexts:
@filesystems.smbfs 3.4.2
!AGraphicsDevicePolicy 5.1.16
@fileUtil 20.036.15
@AGDCPluginDisplayMetrics 5.1.16
!AHV 1
|IOUserEthernet 1.0.1
|IO!BSerialManager 7.0.4f6
AGPM 111.4.4
!APlatformEnabler 2.7.0d0
X86PlatformShim 1.0.0
pmtelemetry 1
!AUpstreamUserClient 3.6.8
AudioAUUC 1.70
AGDCBacklightControl 5.1.16
@Dont_Steal_Mac_OS_X 7.0.0
!A!IKBLGraphics 14.0.5
!ABacklight 180.3
ACPI_SMC_PlatformPlugin 1.0.0
!AThunderboltIP 3.1.4
BridgeAudioCommunication 6.70.3
!AGFXHDA 100.1.426
!AMCCSControl 1.11
!AFIVRDriver 4.1.0
!A!ISlowAdaptiveClocking 4.0.0
!ABridgeAudio!C 6.70.3
!ATopCaseHIDEventDriver 3430.1
!AHIDALSService 1
!A!ICFLGraphicsFramebuffer 14.0.5
!AAVEBridge 6.1
!A!IPCHPMC 2.0.1
@filesystems.autofs 3.0
@filesystems.apfs 1412.101.1
BCMWLANFirmware4355.Hashstore 1
BCMWLANFirmware4364.Hashstore 1
BCMWLANFirmware4377.Hashstore 1
!AFileSystemDriver 3.0.1
@filesystems.hfs.kext 522.100.5
@BootCache 40
@!AFSCompression.!AFSCompressionTypeDataless 1.0.0d1
@!AFSCompression.!AFSCompressionTypeZlib 1.0.0
!AVirtIO 1.0
!ABCMWLANBusInterfacePCIe 1
@private.KextAudit 1.0
!ASmartBatteryManager 161.0.0
!AACPIButtons 6.1
!ASMBIOS 2.1
!AACPIEC 6.1
!AAPIC 1.7
$!AImage4 1
@nke.applicationfirewall 303
$TMSafetyNet 8
@!ASystemPolicy 2.0.0
|EndpointSecurity 1
usb.cdc.acm 5.0.0
usb.serial 6.0.0
!UMergeNub 900.4.2
!AGraphicsControl 5.1.16
|IOAVB!F 840.3
!ASSE 1.0
!ABacklightExpert 1.1.0
IOPlatformPluginLegacy 1.0.0
@!AGPUWrangler 5.1.16
!AHDA!C 283.15
|IOHDA!F 283.15
!UAudio 322.2
|IONDRVSupport 575.1
!ASMBus!C 1.0.18d1
X86PlatformPlugin 1.0.0
|IOSlowAdaptiveClocking!F 1.0.0
!AThunderboltEDMSink 4.2.3
!AHIDKeyboard 209
!AHS!BDriver 3430.1
IO!BHIDDriver 7.0.4f6
!AActuatorDriver 3440.1
!AMultitouchDriver 3440.1
!AInputDeviceSupport 3440.8
!ASMBusPCI 1.0.14d1
|IO!BHost!CUARTTransport 7.0.4f6
|IO!BHost!CTransport 7.0.4f6
!A!ILpssUARTv1 3.0.60
!A!ILpssUARTCommon 3.0.60
!AOnboardSerial 1.0
@!AGraphicsDeviceControl 5.1.16
|IOAccelerator!F2 438.4.5
|IOGraphics!F 575.1
IOPlatformPlugin!F 6.0.0d8
@plugin.IOgPTPPlugin 840.3
|IOEthernetAVB!C 1.1.0
@kext.triggers 1.0
usb.IOUSBHostHIDDevice 1.2
usb.cdc.ecm 5.0.0
usb.cdc.ncm 5.0.0
usb.cdc 5.0.0
usb.networking 5.0.0
usb.!UHostCompositeDevice 1.2
!AThunderboltDPOutAdapter 6.2.6
!AThunderboltPCIUpAdapter 2.5.4
usb.!UHub 1.2
!AXsanScheme 3
usb.!UVHCIBCE 1.2
usb.!UVHCI 1.2
usb.!UVHCICommonBCE 1.0
usb.!UVHCICommon 1.0
!AEffaceableNOR 1.0
|IOBufferCopy!C 1.1.0
|IOBufferCopyEngine!F 1
|IONVMe!F 2.1.0
!AThunderboltPCIDownAdapter 2.5.4
!AThunderboltDPInAdapter 6.2.6
!AThunderboltDPAdapter!F 6.2.6
!AHPM 3.4.4
!A!ILpssI2C!C 3.0.60
!A!ILpssDmac 3.0.60
|IOSurface 269.11
@filesystems.hfs.encodings.kext 1
|IOAudio!F 300.2
@vecLib.kext 1.2.0
!AThunderboltNHI 5.8.6
|IOThunderbolt!F 7.6.0
!ABCMWLANCore 1.0.0
mDNSOffloadUserClient 1.0.1b8
IOImageLoader 1.0.0
|IOSerial!F 11
|IO80211!FV2 1200.12.2b1
corecapture 1.0.4
|IOSkywalk!F 1
usb.!UHostPacketFilter 1.0
|IOUSB!F 900.4.2
!A!ILpssI2C 3.0.60
!A!ILpssGspi 3.0.60
usb.!UXHCIPCI 1.2
usb.!UXHCI 1.2
!AEFINVRAM 2.1
!AEFIRuntime 2.1
!ASMCRTC 1.0
|IOSMBus!F 1.1
|IOHID!F 2.0.0
$quarantine 4
$sandbox 300.0
@kext.!AMatch 1.0.0d1
!AKeyStore 2
!UTDM 489.101.1
|IOSCSIBlockCommandsDevice 422.101.1
!ACredentialManager 1.0
KernelRelayHost 1
!ASEPManager 1.0.1
IOSlaveProcessor 1
!AFDEKeyStore 28.30
!AEffaceable!S 1.0
!AMobileFileIntegrity 1.0.5
@kext.CoreTrust 1
|CoreAnalytics!F 1
|IOTimeSync!F 840.3
|IONetworking!F 3.4
DiskImages 493.0.0
|IO!B!F 7.0.4f6
|IO!BPacketLogger 7.0.4f6
|IOUSBMass!SDriver 157.101.3
|IOSCSIArchitectureModel!F 422.101.1
|IO!S!F 2.1
|IOUSBHost!F 1.2
usb.!UCommon 1.0
!UHostMergeProperties 1.2
!ABusPower!C 1.0
|IOReport!F 47
!AACPIPlatform 6.1
!ASMC 3.1.9
watchdog 1
|IOPCI!F 2.9
|IOACPI!F 1.4
@kec.pthread 1
@kec.corecrypto 1.0
@kec.Libm 1
I noticed that when syncing values from mb MBP to the LG the apparent brightness differs a bit. I assume that's because the two displays have different ranges.
I did a quick addition to the app and added a slider that allows me to tweak the synchronization a bit. Needs a bit more testing, but if anybody else is interested, I could clean this up a bit further and open a PR. matej@fc0890b
When I plug in my display with the app running, the app doesn't detect it and it stays "Deactivated".
Workaround: Restart the app
I'll investigate soon when I have a bit more time.
Reverted back to previous version and issue went away.
Running on a 2018 MacBook Pro with 5K Ultrafine.
Right now the upgrade feature relies on manually going to the GitHub website. It would be useful if the application could be installed and updated from brew cask.
https://github.com/Homebrew/homebrew-cask/blob/master/doc/development/adding_a_cask.md
This isn't an issue, but rather new behaviour I've noticed since purchasing a MacBook Pro 16" with True Tone display ("this is a bug not a feature"). As well as syncing the brightness, my 2x LG UltraFine 5ks seem now to change tone along with the MacBook Pro screen e.g. if the ambient light becomes more yellow, all 3 displays change in accordance, and become more yellow. @OCJvanDijk, I imagine this is a happy side effect of the way you've implemented the brightness syncing, but wondered whether you were aware of this, or possibly had even considered this?
Anyway, as I say, not an issue at all, as it works really well!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.