3 ms·
I'm working on making Lunar ( https://lunar.fyi https://lunar.fyi ) work with as many monitor setups as possible. Lunar is a macOS app that can change your ex
by alin23 7y ago
I'm working on making Lunar ( https://lunar.fyi https://lunar.fyi ) work with as many monitor setups as possible.
Lunar is a macOS app that can change your external monitor brightness and contrast based on your Macbook built-in display brightness (which already reacts to ambient lighting).
It can also change the brightness based on the sun position or can just add some hotkeys for you to change the brightness manually in case you are using a MacBook in clamshell mode, or a device without a built-in display like a Mac Mini
Lunar doesn't use dark software overlays, it actually changes the hardware monitor brightness/contrast using the standard DDC protocol that's been implemented in monitors for the last 20 years.
In the latest update, it also adds hotkeys for changing the monitor’s volume which was a very requested feature.
Right now I’m trying to make it work with all the esoteric setups that users have. As you can imagine, there are a lot of ways you can connect monitors to your device: hubs, docks, adapters, AirPlay, cables with missing wires etc.
While DDC works most of the time, I still have to implement all kinds of workarounds because the system doesn’t play well with those setups.
The code is a spaghetti mess of Swift because I didn’t know reactive frameworks for Swift existed at the time: https://github.com/alin23/Lunar https://github.com/alin23/Lunar
- yoavm 7y agoI'm curious, how do you do this? Don't you need an endless amount of displays and setups to make sure Lunar supports all of them?
- alin23 7y agoDDC being standard, I just need to implement the protocol communication properly. Monitor vendors have to implement DDC because it's the only protocol supported by every device. So Lunar should work with all of the compliant monitors by default. Problems arise when the connection between the device and the monitor(s) is not something you would expect, like Thunderbolt USB docks that multiplex the video connection but don't properly forward the DDC messages. That's where I'm constantly trying to find workarounds, mostly with the help of users that have the said setups. I'm still looking for a better remote-debug tool to streamline this developer- user testing process. Right now I'm just asking users what doesn't work, trying to guess what's the problem, fixing that in code, compiling a beta version, sending the beta version to those users, get feedback, start over. By the way, most of the Objective-C implementation of the DDC protocol was done by https://github.com/kfix https://github.com/kfix . I just improved it a little for multi monitor and multi GPU setups.