How Lunar became a necessity (November 24, 2017)
New job, more stuff to do, so I got myself a 4K LG Monitor to extend my small Macbook screen.
I had set up my home office right on an interior balcony where I had lots of natural light.
That meant that the monitor brightness and contrast needed to be continuously adjusted to have the screen visible in sunlight and to not blind me when the clouds/night came.
If you ever used an external monitor, you know how cumbersome it is to adjust the brightness constantly using its physical buttons or touch controls. And macOS doesn't provide any way to change the brightness from the Macbook, unless you use something expensive like a Studio Display.
So I started working on an app to automatically adjust the brightness based on the sun position in the sky.
First working build (December 12, 2017)
At the time, there was no such app that could control the hardware brightness of monitors. There was only a command line Github project called ddcctl.
By the way, that project is still at the base of Lunar and all other monitor controlling apps in existence now.
MonitorControl was being developed in parallel but I didn't know about it and it had a completely different idea: manual control using the brightness keys.
With Lunar, I wanted full automated adaptive brightness.
Since I didn't have a way to read the integrated light sensor of the MacBook at the time, I based the automation on sunrise/sunset cycles which I calculated based on the user coordinates.
After releasing it for free to the world, people started liking it, but they also wanted manual control. So only after that I added manual control of the brightness using brightness keys.
Last 5 years or so
On May 31, 2021, after I finally found a way to control monitors on Apple Silicon Macs, I released the first paid version of Lunar.
Until then, it was fully free and open source, only asking for donations. I made about $5000 in 4 years, which led me to believe the monitor controlling situation wasn't improving, and there was a real need for a more polished product.
The situation of brightness adjustment in monitors hasn't improved at all. In fact it regressed a lot, with vendors like Samsung locking down DDC/CI on their "smarter" monitors and other vendors having a lot of bugs in their DDC implementation to the point where monitors were crashing when Lunar was only sending a standard brightness command.
Apple was only implementing their own proprietary brightness control over USB for their line of monitors (Studio Display, Pro Display XDR, LG Ultrafine 5K etc.) so that didn't help either.
With all the experience I have accumulated, (and with all the edge case handling code I wrote in Lunar) there is now a much higher chance to get Lunar to control your monitor. But I'm still responding to 3-5 emails a day because of monitors being hostile to apps trying to control their brightness or volume.
Who is using Lunar?
From old people with glaucoma, to students getting their first MacBook, to mothers helping their colour blind daughter, to theatre professionals staring at 6 monitors all day, I'd say Lunar's audience is pretty vast and hard to categorise.
I get kind emails from all over the world, and it warms my heart to read about how Lunar is making their day (or night) a little easier.
Lunar in a Smart Home
Until about 4 months ago, I had a very "smart" home. Mostly DIY, with smart lights and sensors everywhere, with Zigbee switches that controlled music, light, TV, vacuuming and so on.
I was using HomeAssistant on a Raspberry Pi for that, but at some point, the SDCard of the Pi died and all my data was lost. I had backups, but I just didn't have the ambition to get it back working anymore.
So now my house is a lot less smart. But in the process I got rid of a lot of wires, maintenance and frustration which appeared whenever I couldn't turn on a light or stop the music because HomeAssistant wasn't working properly.
I still use a DIY behind the monitor RGBW WLED strip, and some ESPHome-based dimmable LED strings which you can see in this video. I like them because they're standalone, with physical buttons and wireless controllable, there's no need for a central piece of hardware like a hub/RPi.
I'm working on a page here where I'll write about what the automations one can do with Lunar. Here are some examples that I use:
Movie Time: sets the 4k monitor to maximum contrast, turns off the MacBook built-in screen, uses Volum to set the monitor LED strip to bluish hues, sets the MacBook volume to an appropriate value and opens some movie streaming website
Brightness Remote: allows you to dim the TV brightness from your iPhone using Volum's easy to use interface and native integration with Lunar
If the TV is connected to an AVR like Yamaha/Denon etc. you can even change the TV volume easily from the same interface
Video and Photo Editing: turns on HDR for the external monitor, sets it to a calibrated colour + brightness preset for professional video editing and turns off the MacBook screen for better focus
Late Night Working: dims the monitor brightness really low using Lunar's Sub-zero Dimming, configures monitor hardware colour rendering so that blue and green pixels are less bright, lights up the LED strip to a fire-like dim warm colour
My everyday hardware setup
MacBook Pro 14inch M1 Max 2021 + LG 4K 27UD88 USB-C monitor.
Yes, I'm still using the same monitor that I bought 5 years ago and which "forced" me to build Lunar.