Lunar

Intelligent adaptive brightness for your external monitors

MIT License

Stars
4.3K

Bot releases are hidden (Show)

Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.12 Latest Release

Published by alin23 5 months ago

6.7.12

Improvements

  • Improve Auto Blackout by ignoring displays with empty or incomplete `name
  • Print CLI location and restart shell after installation

Fixes

  • Fix Software Dimming not being applied instantly when using the lunar displays CLI
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.11

Published by alin23 6 months ago

6.7.11

Fixes

  • Fix Sync Mode not using nits on MacBook Air and iMac (Apple Silicon only)
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.10

Published by alin23 6 months ago

6.7.10

Improvements

  • Shave off another 250 milliseconds from the CLI startup time

Fixes

  • Fix menu appearing on the main display instead of the one where the icon was clicked, on fullscreen apps
  • Fix positioning of the new "Disable volume keys on display sleep" setting
  • Fix resolution being changed erroneously
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.9

Published by alin23 6 months ago

6.7.9

Improvements

  • Disable volume keys handler on sleep and re-enable on wake to prevent CoreAudio from hanging and cause system lag
  • Speed up CLI startup time

Fixes

  • Fix a long-standing issue where LED Cinema and Thunderbolt displays would overflow the brightness value, causing the display to go dark at specific brightness levels (39 and 78)
  • Fix Location Mode not being selectable when using manual coordinates
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.8

Published by alin23 6 months ago

6.7.8

Fixes

  • Move max DDC brightness back to 255 for Cinema and Thunderbolt displays
  • Fix brightness being sent to the monitor continuously in Sensor Mode, even if the value hasn't changed
  • Ensure the Sensor Mode Lux update interval is correctly used with wireless sensors
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.7

Published by alin23 6 months ago

6.7.7

Fixes

  • Fix nits OSD appearing erroneously when HDR state is being changed
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.6

Published by alin23 6 months ago

6.7.6

Fixes

  • Fix flickering in smooth transitions when holding the brightness keys
  • Fix nits value not updating all the time
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.5

Published by alin23 6 months ago

6.7.5

Features

  • Smoother Sync Mode brightness adaptation

Fixes

  • Fix printing SentryCrashExceptionApplication by mistake in the CLI output
  • Fix nits OSD not appearing where it should after resolution change
  • Ensure Full Range remains enabled even when the system reports an incomplete status

Improvements

  • Add hidden setting syncModeBrightnessKeyPressedExpireSeconds

Showing OSD on target monitors in Sync Mode requires only taking into account the changes that happen within a waiting period after the brightness key press.

That period was previously 0.5 seconds, which was now increased to 1 second and made configurable via the syncModeBrightnessKeyPressedExpireSeconds hidden setting. Some systems take longer to propagate the brightness change events and this setting should help with that.

  • Optimise code path leading from the Sync source brightness change to the Sync target brightness adaptation
  • More intuitive nits range calculation in Sync Mode

Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.4

Published by alin23 7 months ago

6.7.4

Fixes

  • Fix color adjustments not being applied anymore on some screens
  • Don't show nits values by default in the OSD since it can cause it to not appear on some screens
  • Revert the max DDC brightness for LED Cinema and Thunderbolt displays back to 100 instead of 255
  • Make DCP matching on IODisplayLocation optional to avoid DDC not working with some displays
  • Fix Full Range toggle disappearing sometimes after a display connection
  • Fix volume hotkeys not working anymore if CoreAudio times out

Improvements

  • Move the CoreAudio device fetching back to main thread where if it stalls, it will restart the app automatically
  • Allow hiding the nits value from the brightness OSD

show nits osd setting

Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.3

Published by alin23 7 months ago

6.7.3

Hotfix

  • Ensure UI is not instantiated until the user opens it
    • Fixes too much energy usage on some systems
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.2

Published by alin23 7 months ago

6.7.2

Features

  • Allow setting main monitor using the CLI. Example: lunar displays LG main true
  • Show when brightness is locked by the reference preset in the UI

brightness locked by preset

Improvements

  • More accurate nits readings for Apple displays
  • Precise nits-based Sync Mode even when HDR content is visible
  • Improved detection of virtual displays
  • Improved DDC-to-monitor matching by using the hardware port where possible
  • More responsive Full Range switching in cases where the system generates a lot of logs
  • Allow skipping missing displays when using the "Set Monitor as Main" shortcut

Fixes

  • Prepare for upcoming macOS 15
  • Don't use Gamma APIs unless absolutely necessary to avoid unwanted HDR clipping
  • Fix app presets taking too long to apply
  • Fix possible crash when fetching reference presets on external monitors
  • Fix system lag when CoreAudio devices take too long to respond
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.1

Published by alin23 7 months ago

6.7.1

Hotfix

  • Fix crash on launch if Auto Mode was previously enabled
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.7.0

Published by alin23 7 months ago

6.7.0

Features

  • Ambient Light Sensor support for Intel Macs
  • Faster event based lux reading (up to 100ms between reads)

Improvements

  • Improve launch time of the app
  • Faster CLI launches

Fixes

  • Fix not showing Lunar Pro popover correctly when clicking on XDR or Full Range
  • Fix Full Range XDR not being re-enabled automatically after wake/connect/launch
  • Go back to Xcode 15.2: some Shortcuts stopped working when compiled with the latest Xcode 15.3
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.6.5

Published by alin23 7 months ago

6.6.5

Fixes

  • Remove leftover usage of a non-standard command-line tool that was prompting unnecessary installation of Xcode Command Line Tools
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.6.4

Published by alin23 7 months ago

6.6.4

Improvements

  • Add support for MacBook Air M3 models

Fixes

  • Fix Power off screen (in software) Shortcut
  • Fix BlackOut not being able to re-apply previous resolution
  • Fix missing resolutions from the list
  • Add hidden setting allowAdjustmentsWhileLocked for who may need it
  • Fix "Change Adaptive Mode" and "Rotate Screen" shortcuts not working on some systems
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.6.3

Published by alin23 8 months ago

6.6.3

Fixes

  • Fix disabling presets on Studio Display
  • Remove duplicate values from the lunar CLI help text
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.6.2

Published by alin23 8 months ago

6.6.2

Features

  • Force enable Night Shift and True Tone on external monitors that support them but don't work out of the box

force enable night shift context menu

Improvements

  • Allow Auto Blackout to work in more edge cases like:
    • when coming back from standby, the monitor connects too slowly and for a few seconds it appears as there's no display available
    • when opening the lid of the MacBook while clamshell mode is disabled
  • Stop brightness and lux CLI listeners when the socket closes

Fixes

  • Fix specific features like observing brightness on the 2023 M2 MacBook Air 15"
  • Fix keyboard backlight being turned on when it shouldn't
  • Fix a bug that caused the builtin to come out of Blackout intermitently on Intel Macs
  • Disable Full Range XDR on Pro Display XDR screens since it is not working there
  • Fix Full Range XDR and Gamma Dimming not being available sometimes after coming back from blackout
  • Workaround a macOS bug that can cause system slow downs because CoreLocation is timing out
  • Make sure the DIY light sensor install script gets the correct enclosing dir
  • Make sure lunar toggle-connection returns immediately after disconnect
  • Fix built-in not reconnecting after disconnecting all monitors in specific cases
  • Fix Auto Mode not selecting Sensor Mode when the built-in is disconnected
  • Fix Sync Mode setting external displays to a very low brightness when activating XDR Brightness
  • Delay specific actions after wake/login to avoid system hangs. Actions that are delayed include:
    • watching for screencapture events when using overlay dimming
    • checking for zero gamma issues
    • adapting brightness if the Delay after wake setting is enabled

delay after wake

Lunar - https://github.com/alin23/Lunar/releases/tag/v6.6.1

Published by alin23 8 months ago

6.6.1

Improvements

  • Add nits output to the lunar listen CLI command

Fixes

  • Fix MediaMate integration on Full Range XDR Brightness
  • Fix external sensor disconnecting every 5 seconds in specific cases
  • Fix Whites and Blacks not being re-applied after app restart
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.6.0

Published by alin23 8 months ago

6.6.0

Security

  • Fix a possible vulnerability in the restart logic

A rogue application could have exploited the restart logic to gain Accessibility Permissions.


Features

Full Range XDR Brightness

This is a new approach for unlocking the 1600nits of brightness in Apple's XDR displays, developed in collaboration with Istvan from BetterDisplay.

full range activation

It has the following key differences from the previous XDR Brightness method:

  • It doesn't clip colors in HDR content - no more washed out colors
  • The system adaptive brightness keeps working and uses the full range
  • There's no lag when going from SDR to XDR brightness
  • Can work in tandem with f.lux

Downsides:

  • It only works on Apple XDR screens
  • The screen will flash one or two times when toggling Full Range

The system will still adapt the maximum nits of brightness based on the ambient light, so you might get a max of 800 nits in a dark room and 1600 nits in sunlight.

Disabling the system adaptive brightness will turn off this behaviour.

Preset unlocking

The Change Screen Preset Shortcut now allows you to unlock various functions that are locked by macOS when using reference presets:

  • Brightness Control
  • Adaptive Brightness
  • Night Shift
  • True Tone

unlock preset shortcut

Improvements

  • Allow overlay dimming to work on Airplay screens when the MacBook is in Blackout
  • Automatically use the mirroring method for Blackout when the MacBook is connected to an wireless display

Fixes

  • Disable Dark Mode after disabling Night Mode
  • Ensure Night Mode does disable after unchecking it
  • Fix app hanging when initializing Location Services in some cases
  • Fix Dark Mode being disabled erroneously
  • Make sure to re-enable keyboard backlight after disabling Blackout
  • Fix CLI not working after a few standby cycles
  • Fix rounded corners not being applied on app launch
Lunar - https://github.com/alin23/Lunar/releases/tag/v6.5.0

Published by alin23 10 months ago

6.5.0

Features

  • Night Mode: minimize jarring flashes of white regions on dark backgrounds. This is a combination between:
    • lower whitepoint: lower the whitepoint of the screen to make white regions appear less bright
    • warm colors: filters blue light to further minimise eye strain on bright colors
    • enhanced contrast: keeps text readable even at such low brightness levels

The following video shows the difference between simply having Dark Mode on with a low brightness, and having Night Mode on top of that.

If you pay attention to the hand that is scrolling, you'll notice that the flashes of light from the white regions have less effect with Night Mode enabled. In the same way, your eyes will see less of a difference in perceived brightness between the dark background and the bright regions that may appear unexpectedly while scrolling on a web page.

The technique is quite similar to what f.lux does, but with the added benefit of enhancing contrast for readability.

Fixes

  • Important fix on DDC commands causing a crash when the queue is full
  • Allow http on non-local custom domains/IPs of light sensors
  • Fix not keeping Disconnect API disabled with DisplayLink running
  • Fix built-in screen having 100% brightness after waking up from sleep in some cases
  • Make sure external sensor available state is kept up to date
    • Fixes a problem where both internal and external sensor data would be used at the same time

Improvements

  • Limit Gamma whites and blacks sliders to avoid full black/white screens
  • Allow disabling Sub-zero dimming by setting Min Brightness to 0

builtin min brightness zero disables sub-zero dimming

Badges
Extracted from project README's
Support Server
Related Projects