Giter VIP home page Giter VIP logo

brightness-sync's People

Contributors

gelstudios avatar kawarimidoll avatar matej avatar mrackwitz avatar ocjvandijk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

brightness-sync's Issues

Doesn't sync brightness with 1st gen UltraFine on MacBook Pro M1

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:
Screen Shot 2020-12-02 at 11 38 21 AM

Not working in Monterey?

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!

Read from iPhone/iPad sensor?

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.

Brightness on monitors flickers up and down

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. :-)

Not working on LG 27UL850

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!

Discrepancy of brightness between build-in display and monitor

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.
θ§ΈζŽ§εˆ—εΏ«η…§ 2020-05-10 上午11 51 37

Thank you!

23412 diagnostics

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";
})]

Allow the user to change the updateInterval.

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.

Offset gets maxed out when switching from another user account...

v2.2.0 Beta 1

  1. Set offset on external monitor to a low brightness using external keyboard.
  2. Switch to another user's account (not running Brightness-Sync).
  3. Alter the brightness using external keyboard.
  4. Switch back to the first account (the one running Brightness-Sync).
  5. Observe that brightness (and offset) on external monitor is now maximum.

Everything else has been working great so far.

Cannot adjust brightness at all on LG Ultrafine 5K 27MD5KL-B

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.

Screenshot 2020-08-25 at 10 33 17

[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;
})]

No means to tip the author.

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.

No serial numbers returned

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

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.

Not working on LG 27UL850

I tried connecting to MacBook Pro 13" on Big Sur using provided USB-C cable, and I see this:
Screenshot 2020-11-27 at 16 51 44

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

Read from 2nd Gen LG Ultrafine 5K?

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!

Consider adding Package Icon

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.

LG Ultra Fine

Screenshot 2024-04-01 at 9 55 03β€―PM

When the laptop is closed it is deactivated. Is it possible to make monitors sync ?

For instance I have a dual 27MD5KA and 27MD5KL setup where the older model does not have auto brightness. So Auto sync from one monitor to another

Flickering when light changes

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.

"Launch At Login" does not work when App bundle is located outside of /Applications directory

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

Got a crash shortly after disconnecting my laptop....

I don't do this very often, so I'm not sure how often this issue occurs:

  1. Was using laptop in open position attached to 27" Ultrafine.
  2. Disconnected and used laptop for an hour.
  3. Closed laptop and set down (still disconnected).
  4. Several hours later I plugged it back in to the monitor and found that it had crashed in IOKit (which I believe this app uses):

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

Brightness offset option

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

Screenshot 2019-10-14 at 12 43 21

v2.3.2 reads "Deactivated" all the time

on macOS 11.2.1 / 2020 i7 Air with 27UN880-B, no matter what I do, and even after a restart the status in the Brightness-Sync drop down menu reads "Deactivated"
image

True Tone

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!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.