Lunar changes the hardware brightness of the monitor using the DDC protocol.
It doesn't use a software overlay if the monitor supports DDC/CI.
- Native keyboard control and hotkeys for setting brightness, volume and contrast that respect the min/max values per monitor
- 1000-to-1600 nits of brightness for supported XDR and HDR displays
- Dim brightness below 0% for late-night work
- Sensor-based Adaptive Brightness (and contrast) based on an external light sensor
- Sync-based Adaptive Brightness (and contrast) based on the built-in light sensor of the MacBook or iMac
- Location-based Adaptive Brightness (and contrast) based on the sunrise/sunset times in your location
- App Presets if you need more/less brightness for specific activities (watching movies, design work)
- Input switching from a convenient dropdown or using up to 3 input-specific hotkeys
- Screen orientation change from the menu bar or using hotkeys (Ctrl+0/9/8/7 mapped to 0°/90°/180°/270° for the display with the cursor on it)
- Hidden resolutions accessible from a dropdown in the Display Settings menu
- BlackOut: turn off monitors (or the built-in display) selectively while also keeping important functions:
- USB-C charging still works
- Monitor audio keeps playing
- Monitor USB hub remains available
- The built-in keyboard and trackpad are still available for use
- Avoid overheating the MacBook because of using it with the lid closed
It doesn't interfere at all with the native adaptive brightness that macOS implements for the built-in display.
It works well along Night Shift and True Tone (and f.lux if Gamma dimming is not used).
- HDMI (1.0 - 2.1)
- DisplayPort (1.0 - 2.0)
- Thunderbolt 4 (USB Type-C)
- Thunderbolt 3 (USB Type-C)
- Thunderbolt 2 (mini DisplayPort)
- Adapters that forward DDC messages properly
I'm pausing contributions for the moment as Lunar has paid features and isn't compilable because of missing parts of the source code (Pro features code is encrypted).
Lunar can't be built from this repo as the source code for the paid features is hidden.