Creator of Lunar here. Thank you all for the kind comments and generous donations and many thanks to the OP for posting this!
Let me know if you have any questions or quick feedback about Lunar.
Thanks for writing this! When I got an iMac Pro in 2017 with an accompanying LG UltraFine 5K display I was shocked to learn three things: 1) adjusting the brightness on the internal display is easy but on the LG it's a pain in the ass, 2) despite having ambient light sensor hardware the LG does not automatically adjust its brightness like the internal display, and 3) macOS offers no built-in mechanism to sync the brightnesses of these two displays.
Before learning these things I was feeling excited about Apple's re-committing to the Mac around that time, but man these things made it feel like such "commitment" was just surface level - such low-hanging fruit not being handled is a shame. But, this is a rant for another day.
Anyway, I built my own very simple utility to poll the internal display for its brightness and write that same brightness to the LG via DDC, but never had the time/energy to make it more robust for publishing to the web. I have yet to try Lunar but I definitely will; much appreciated.
Quick feedback: I tried it for the first time, thinking to myself 'wow I really want to turn down the brightness on this darn monitor...its been bothering me for too long' and I didn't find the UX very easy to perform that immediate task. In fact, I have to say, just from quickly downloading this and trying to use it, I don't totally understand what it does...but I did figure out how to manually drop the settings to a more comfortable level, and I don't expect I'll be opening the software again except to manually turn it up and down (and each time I'll probably have to figure out how to go to that side page that is hard to get to)
Hope that made sense! Thanks for the software!!! :)
Your app has been a godsend for my multimonitor setup, Macbook in clamshell mode. I tried a bunch of tools, but eventually gave up frustrated after crashes.
Love Lunar since I discovered it, it’s been working smooth from day one.
Hi there, I couldn't find a way to disable built-in logging & analytics to log.lunar.fyi. Is there a setting to disable any network requests other than for software updates? Thanks!
Absolutely amazing application - I found it on HN sometime at the beginning of COVID lockdowns, and it has radically changed my WFH life. Thank you so much :D
I use it with 2 disparate non-thunderbolt monitors, one connected into its built-in dock, and the other to a dock dongle. Works perfectly fine!
There is a problem with "cheap" monitors and DDC/CI: some of them use EEPROMs to store brightness settings, and this limits you to about 100,000 writes.
Worrying about this is the main reason we don't ship DDC/CI with f.lux. (I know that some more modern monitors use NAND and don't have limitations like this.) Anyone know if these fears are overblown?
This program should make sure to change brightness enough to reduce the lifespan to less than 2 years. Then the user will have free lifetime updates of monitors! (I reckon this would fall perfectly within normal use of a monitor. Hence, an RMA case will kick in)
I tried to achieve basically what this app does on manual mode some years ago. “How hard could it be?” are the famous last words etched in the three ATI video cards I bricked before giving up.
For things like setting brightness or toggling devices that ought to be dead simple, stuff like DDC/CI and HDMI-CEC being broken on so many levels never fails to make me spectacularly sad.
Not related to monitors, but this is how I bricked my old Lenovo Thinkpad W520 4 times. I switched between the Intel and Nvidia GPUs via the BIOS setting enough times to wear out the BIOS chip. I didn't figure out what was going on until my 3rd replacement.
I suppose it's a type of problem that solves itself: If companies are dumb enough to store brightness settings in EEPROM, they're only doing it because no one uses DDC/CI.
Use DDC/CI, and they'll stop. Even NAND is wrong if brightness is actually dynamically controlled, it should just be RAM.
Wait...so after the 100.000th write, your monitor will be forever stuck on the brightness it was set to that time?
BTW, assuming I change brightness 20 times per day, that would still give me 5000 days ≈ 13,5 years of service. By that time I definitely hope to use a different monitor than today
I tried to find a source for these concerns. Although I can find documentation on DDC (until 1998) and EDDC (since 1999), and indeed read that these often use EEPROM, I cannot find any reference of someone who broke his monitor by changing the brightness too often.
This utility is very useful combined with the adaptive brightness of my iMac so I am tempted to use it. But I would appreciate any supporting evidence of this concern.
Also note that MonitorControl [1] might be a good complement to this program - it allows manual setting of brightness and contrast, but also adds volume control.
Lunar also has volume control, could not fit that into the title.
It's absolutely great, totally what I needed for years. Other tools I tried crashed my Macbook. Lunar has been absolutely smooth, and great design to boot. I immediately bought the author a coffee.
Oh man I’ve been looking for something to control volume like this forever. Doing audio over DisplayPort/HDMI locks me out of controlling volume (since it’s handled by the monitor) so I’m really hoping this helps with that.
Got a MacBook Pro (16-inch, 2019) weeks ago and bought a LG monitor (https://www.amazon.com/gp/product/B07YGZ7C1K). The brightness setting bothered me for 2 weeks as neither the Mac OSX nor LG's onscreen control software can set the brightness for the external monitor. The external monitor brightness changes every time I open/close the macbook lid. Thanks to both ddcctl and MonitorControl, I can finally set a fixed brightness. Wondering why big corps fail to provide the basic features while some open source software can do?
How have you found MacOS' font rendering on the 1440p display? I've been having all sorts of trouble in some applications having terrible font rendering while others are perfectly fine running at the monitor's native resolution.
The LG UltraFine displays do support this (in fact there's no OSD/controls on the physical things at all) so it definitely is possible and something LG can do
This is a great example of why I like the Touch Bar on my Macbook Pro. When it is connected to an external monitor, I tap the brightness icon in the Touch Bar and get two sliders: one to control brightness on my laptop, and one to control brightness on my external monitor. This seems to be a native feature; I did not install anything to do it.
But why can't they expose these controls independent of the Touch Bar? I actually find it ridiculous as a 2015 MBP owner that there is no easy native way to do this basic thing unless, apparently, you have a Macbook with a Touch Bar
See, my granny would have a hard time with this because while us young folk can control two sliders at once with ease, she would go as crosseyed as dead ol' Bessie was when we found her out back last year. Apple seems to expect more and more of us - soon we'll all be forced to be DJ's just to use our cell phones (har har!)
I have been using this command line tool to control my external monitor from my Mac. I created few Automator scripts calling it to make the monitor either dimmed or bright.
With my LG 32UL950-W, I've found that whether it responds depends on the cable choice. I had to give up on Thunderbolt because the monitor itself kept resetting; HDMI delivers a picture but doesn't look as good, and doesn't respond to ExternalDisplayBrightness. I'm now using a 10' USB-C to DisplayPort cable (too long for Thunderbolt) and everything works, including ExternalDisplayBrightness.
I'm curious to see if switching to Lunar would gain me anything.
The Windows equivalent would be Monitorian (https://github.com/emoacht/Monitorian). It doesn't have the adaptive curve algorithm, but I've been using it for over a year and it's indispensable.
Cool idea, but I'm a software developer and I cannot figure out how to use this app. Something as simple as monitor brightness doesn't need so many controls, toggles, and things popping up and telling me things. It doesn't follow a single MacOS design convention.
Off topic but tangentially related: Is there a brightness tool for the iPhone that has a better colour profile that harmonizes "dark mode" and "light mode"?
On my iPhone 11 late at night, turning the brightness down to 20% makes black text on white readable, but if I switch to a dark mode app, it's not comfortable, so I have to turn the brightness up again. To me, that implies the brightness just linearly applies to the whole colour spectrum, when it'd be better to weight the brightness logarithmically: Colours close to the dark should stay the same at both 20% and 100% brightness.
I'm not sure if this is even possible on an iPhone. I don't have the same problem on my external Dell screen with my Mac, not sure why.
I'd settle for the Mac being smart enough to let me resize each external display to its actual physical size, so dragging between them works. Apparently, Apple thinks it's perfectly OK to assume that all your displays have the same pixel density as your laptop screen - FAIL!
Lunar should work just fine with f.lux as it only changes the monitor hardware brightness. Color processing from f.lux can still be applied on top of that without any issues.
I've been using Lunar with Night Shift ever since it was released in macOS and they complement each other very well at night.
Thanks for making this. Light years better than the original app I was using as it lets me change the volume stepper control, though the scroll/swipe motions in settings are bit jarring to use.
Thank you for making this! I used to have to unplug my external monitors and use only my laptop screen at night because they used to be so bright. Always wanted something like this.
[+] [-] alin23|5 years ago|reply
[+] [-] inspector-g|5 years ago|reply
Before learning these things I was feeling excited about Apple's re-committing to the Mac around that time, but man these things made it feel like such "commitment" was just surface level - such low-hanging fruit not being handled is a shame. But, this is a rant for another day.
Anyway, I built my own very simple utility to poll the internal display for its brightness and write that same brightness to the LG via DDC, but never had the time/energy to make it more robust for publishing to the web. I have yet to try Lunar but I definitely will; much appreciated.
[+] [-] myowz|5 years ago|reply
Hope that made sense! Thanks for the software!!! :)
[+] [-] diimdeep|5 years ago|reply
AFAIK there is no events for brightness change so this is why polling for main monitor brightness?
What are you using for analytics at "https://log.lunar.fyi?
I have been using [1] before, your app seems much more slick
[1]: https://github.com/KAMIKAZEUA/NativeDisplayBrightness
[+] [-] car|5 years ago|reply
Your app has been a godsend for my multimonitor setup, Macbook in clamshell mode. I tried a bunch of tools, but eventually gave up frustrated after crashes.
Love Lunar since I discovered it, it’s been working smooth from day one.
[+] [-] bgentry|5 years ago|reply
[+] [-] stevewillows|5 years ago|reply
Thanks for making this! Having keys to adjust the brightness is such a blessing for my workflow.
[+] [-] arvindch|5 years ago|reply
I use it with 2 disparate non-thunderbolt monitors, one connected into its built-in dock, and the other to a dock dongle. Works perfectly fine!
[+] [-] zgn|5 years ago|reply
[+] [-] simmielol123|5 years ago|reply
[+] [-] herf|5 years ago|reply
Worrying about this is the main reason we don't ship DDC/CI with f.lux. (I know that some more modern monitors use NAND and don't have limitations like this.) Anyone know if these fears are overblown?
[+] [-] madsbuch|5 years ago|reply
[+] [-] lloeki|5 years ago|reply
For things like setting brightness or toggling devices that ought to be dead simple, stuff like DDC/CI and HDMI-CEC being broken on so many levels never fails to make me spectacularly sad.
[+] [-] chenxiaolong|5 years ago|reply
[+] [-] arghwhat|5 years ago|reply
Use DDC/CI, and they'll stop. Even NAND is wrong if brightness is actually dynamically controlled, it should just be RAM.
[+] [-] leokennis|5 years ago|reply
BTW, assuming I change brightness 20 times per day, that would still give me 5000 days ≈ 13,5 years of service. By that time I definitely hope to use a different monitor than today
[+] [-] Octopuz|5 years ago|reply
[+] [-] jldugger|5 years ago|reply
Seems like the kind of thing you could easily test if so inclined and properly insured?
[+] [-] mmastrac|5 years ago|reply
[1] https://github.com/MonitorControl/MonitorControl
[+] [-] car|5 years ago|reply
Edit: updated the title
[+] [-] inickt|5 years ago|reply
[+] [-] cvburgess|5 years ago|reply
[+] [-] jasim|5 years ago|reply
[+] [-] wanghq|5 years ago|reply
[+] [-] JamesBrooks|5 years ago|reply
[+] [-] BillinghamJ|5 years ago|reply
[+] [-] dapids|5 years ago|reply
[+] [-] snowwrestler|5 years ago|reply
[+] [-] bllguo|5 years ago|reply
[+] [-] harikb|5 years ago|reply
[+] [-] unknown|5 years ago|reply
[deleted]
[+] [-] arkanslaw|5 years ago|reply
[+] [-] mgkimsal|5 years ago|reply
[+] [-] gardaani|5 years ago|reply
https://github.com/kfix/ddcctl
[+] [-] blacksmith_tb|5 years ago|reply
[+] [-] Syzygies|5 years ago|reply
https://www.nesveda.com/projects/ExternalDisplayBrightness/
With my LG 32UL950-W, I've found that whether it responds depends on the cable choice. I had to give up on Thunderbolt because the monitor itself kept resetting; HDMI delivers a picture but doesn't look as good, and doesn't respond to ExternalDisplayBrightness. I'm now using a 10' USB-C to DisplayPort cable (too long for Thunderbolt) and everything works, including ExternalDisplayBrightness.
I'm curious to see if switching to Lunar would gain me anything.
[+] [-] cloudmaster|5 years ago|reply
[+] [-] matchbok|5 years ago|reply
[+] [-] atombender|5 years ago|reply
On my iPhone 11 late at night, turning the brightness down to 20% makes black text on white readable, but if I switch to a dark mode app, it's not comfortable, so I have to turn the brightness up again. To me, that implies the brightness just linearly applies to the whole colour spectrum, when it'd be better to weight the brightness logarithmically: Colours close to the dark should stay the same at both 20% and 100% brightness.
I'm not sure if this is even possible on an iPhone. I don't have the same problem on my external Dell screen with my Mac, not sure why.
[+] [-] ProfessorLayton|5 years ago|reply
I haven't messed with the brightness in years because the OSD is so bad.
I would honestly base my next monitor purchase based on compatibility with this utility!
[+] [-] t3rabytes|5 years ago|reply
[+] [-] pi-rat|5 years ago|reply
[+] [-] nsxwolf|5 years ago|reply
[+] [-] dublin|5 years ago|reply
[+] [-] flurdy|5 years ago|reply
I think they would complement each other. Anyone tried both? (Lunar and f.lux)
* [1] https://justgetflux.com/
[+] [-] alin23|5 years ago|reply
I've been using Lunar with Night Shift ever since it was released in macOS and they complement each other very well at night.
[+] [-] kposehn|5 years ago|reply
[+] [-] applecrazy|5 years ago|reply
[+] [-] car|5 years ago|reply
The only issue was with the "Read external monitor brightness periodically" preference, which froze the system. But there is a fair warning.
If you feel like supporting the author, here is his Patreon:
https://www.patreon.com/alinpanaitiu