Releases: waydabber/BetterDisplay
Release list
v5.0.0
This pre-release introduces advanced compositor filters, expanded display reporting and integration capabilities, HDMI-CEC control, improved per-display automation, app menu and OSD refinements, performance improvements, and updated styling for the latest macOS releases, including macOS 27 Golden Gate betas.
Important: BetterDisplay 5 requires an Apple Silicon Mac running macOS 26 or later. Intel Mac users and users running an earlier version of macOS should continue using BetterDisplay 4 – the latest version is v4.3.5.
BetterDisplay 5 is a free upgrade for Pro licenses purchased after January 1, 2025.
- If you update through the built-in updater with an already activated older Pro license, Pro will remain active and the app will display an outdated-license notice. You can purchase a current license at any time to remove the notice and ensure continued activation eligibility.
- If you are not yet ready to purchase a new license, you may continue using Pro on that Mac with the existing activation and outdated-license notice. Do not deactivate the license, as an outdated license cannot activate a new or deactivated BetterDisplay 5 installation.
- Free features remain available without a Pro license, as before.
More information: Outdated Pro License FAQ
Enhancements
- Added an HDMI-CEC TV controller for volume, mute, power, and input-source control on compatible HDMI ports and adapters (#3394)
- Added CLI commands for HDMI-CEC TV control, including volume, power, and input switching (#5506)
- Added per-display integration actions for running commands when a display is connected or disconnected and when the system wakes or sleeps (#5574)
- Added per-display ambient light sensor readings, including support for compatible external Apple displays such as the Pro Display XDR (#5565)
- Updated the
ambientLightCLI feature to support individual displays (#5566) - Added compositor filter-based rendering to the Video Filter window for improved performance, enabled by default (#5558)
- Added geometry and advanced color compositor filters to display group syncing, with CLI and Shortcuts access (#5551)
- Added additional compositor filter options (#5249)
- Improved the performance of the experimental compositor filter (#5491)
- Added a CLI option to export Display Information (#5485)
- Added link, bandwidth, DPCD, tiling, and DSC details to Display Information (#5484)
- Added a DPCD report (
dpcdReport) CLI command, with credits to @joevt and AllRez (#5496) - Added a CLI option to dump raw DPCD data (#5498)
- Added an EDID report (
edidReport) CLI command (#5508) - Added a DSC report (
dscReport) CLI command (#5509) - Added an HDMI-CEC report (
cecReport) CLI command (#5510) - Added an Apple display brightness controller report (
AppleBrightnessReport) (#5507) - Added a Color Table Control toggle and indicators showing which Image Adjustments sliders use color table control (#5557)
- Added support for overriding the nits values of built-in Apple displays to allow manual adjustment of synchronization ranges (#5573)
- Added a “Prevent Cursor Entering” option to keep the mouse cursor from entering a stream target display (#1442)
- Added mouse scrolling and swipe control for app sliders, except for the resolution slider (#5534)
- Added proper app menu slider snapping to highlighted values (#5522)
- Holding
SHIFTwhile dragging an OSD slider now temporarily prevents synchronization (#5525) - Clicking the minimum and maximum OSD slider icons now changes the slider value by 10% (#5620)
- Improved OSD behavior so it no longer remains visible merely because the mouse pointer happens to be underneath it when it appears (#5501)
- Updated OSD animations to match the animation style introduced in macOS 27 (#5529)
- Added an alternate method for forcing the System OSD on macOS 27 (#5619)
- Added a quick menu for opening Settings, quitting the app, and accessing other actions by right-clicking the app menu icon (#5622)
- Improved app menu behavior when repeatedly opening and closing it in quick succession (#5621)
- Improved app menu content pre-fetching (#5490)
- Added further app menu performance optimizations (#5432)
- Improved app menu animations (#5430)
- Updated app menu styling to better match macOS Tahoe (#5429)
- Updated app menu glass styling for macOS 27 (#5530)
- Updated app menu headers to use Liquid Glass merge effects (#5437)
- Restored icons to dropdown menu labels in Settings on macOS 27 (#5575)
- Renamed DDC “Turn Backlight Off/On” to “Turn Screen Off/On” and added the feature to the LG webOS controller (#5487)
- Updated VMM7100 reset functionality for macOS Tahoe (#5483)
- Added Paddle localizations for previously unsupported app languages (#5535)
- Updated app internals to use modern Swift and SwiftUI features (#5470)
- Dropped Intel Mac and pre-macOS 26 support and removed obsolete legacy features (#5431)
Fixes
- Fixed native audio controller fine adjustments producing unexpected OSD slider steps when using the default step sizes (#5602)
- Fixed incorrect OSD placement with certain “Automatically hide and show the menu bar” configurations on macOS 27 (#5569)
- Fixed built-in XDR display brightness calculations incorrectly reaching 2000 or 2400 nits instead of 1600 nits when software brightness upscaling and auto-brightness were enabled (#5552)
Included Localizations
- British English, Chinese Simplified, Chinese Traditional, Dutch, French, German, Hungarian, Italian, Japanese, Korean, Norwegian Bokmål, Polish, Portuguese Brazil, Romanian, Russian, Slovenian, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese.
- Contributors: @afkeceli, @AndryTi, @andrwmai, @BingoKingo, @brzenio, @cfuentea, @chihuahua-experience, @cristianritco, @dimaitre, @dotWee, @DrRoglaa, @dvanzoerlandt, @elislays08, @enormous-rat, @giulianopires, @gpnunes75, @HaiBliss, @hshsilver, @hw0603, @ibrayd, @jacktechstudio, @JulyIghor, @Kcraft059, @MapleLeaf14, @marcinkardas, @maximsenterprise, @MazlumSerbest, @mickimnet, @mikevic18, @MonolitheMedia, @moriLiu, @MStankiewiczOfficial, @niklasbogensperger, @old-cookie, @PatrykM13, @pavlik000-collab, @PuzzledUser, @SakiPapa, @shindgewongxj, @skantek, @sm-moshi, @stonkol, @sup3rb3ar, @yeager, @waydabber. AI was used for updating some of the localizations.
For previous release notes, visit the GitHub Releases page. Outdated license FAQ.
v4.3.5
This version is a service release focused on bug fixes and compatibility improvements with macOS 27.
macOS 27 Golden Gate beta users: try the v5.x pre-release for even better macOS 27 support and additional features. Go to Settings > Application > Updates and enable Receive pre-release updates, then use Check for Updates.
Changes
- Fixed Settings sidebar compatibility on macOS 27 - #5527
- Fixed Settings scrolled pane header inset background on macOS 27 - #5526
- Fixed keyboard shortcut recording on macOS 27 - #5538
- Fixed compositor filter issues on macOS 27 - #5610
- Removed the no longer working "Forced System OSD" option on macOS 27 - #5612
- Fixed a possible high CPU usage issue caused by app menu caching on some setups - #5608
- Fixed various minor issues with app menu customizations - #5492
- Fixed an issue where app windows could hide the Dock and/or the app menu after using the crop selector window for PiP or Stream - #5500
- Fixed PiP window position/size corruption when using the
widthparameter with an external display connected - #5494 - Fixed an issue where the PiP window could keep disappearing - #5578
- Improved initial sizing and placement of PiP and Video Filter windows - #5576
- Fixed SHIFT modifier handling during slider drag to suspend syncing - #5523
- Fixed SHIFT modifier handling during keyboard and slider drag control to skip nits-based syncing with combined controllers - #5524
- Fixed volume keys keyboard control not updating when the matching audio device name is updated under Volume Control - #5567
- Fixed forced HDR menu availability not updating after toggling "Allow Forced HDR" without manual display redetection - #5585
- Fixed repeated "Mirror configuration changed" notifications when Configuration Protection enforces mirroring but the target display is missing - #5572
- Fixed various UI spelling and stylistic issues in English - #5586
Included Localizations
- British English, Chinese Simplified, Chinese Traditional, Dutch, French, German, Hungarian, Italian, Japanese, Korean, Norwegian Bokmål, Polish, Portuguese Brazil, Romanian, Russian, Slovenian, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese.
- Contributors: @afkeceli, @AndryTi, @andrwmai, @BingoKingo, @brzenio, @cfuentea, @chihuahua-experience, @cristianritco, @dimaitre, @dotWee, @DrRoglaa, @dvanzoerlandt, @elislays08, @enormous-rat, @giulianopires, @gpnunes75, @HaiBliss, @hshsilver, @hw0603, @ibrayd, @jacktechstudio, @JulyIghor, @Kcraft059, @MapleLeaf14, @marcinkardas, @maximsenterprise, @MazlumSerbest, @mickimnet, @mikevic18, @MonolitheMedia, @moriLiu, @MStankiewiczOfficial, @niklasbogensperger, @old-cookie, @PatrykM13, @pavlik000-collab, @PuzzledUser, @SakiPapa, @shindgewongxj, @skantek, @sm-moshi, @stonkol, @sup3rb3ar, @yeager, @waydabber. AI was used for updating some of the localizations.
For previous release notes, visit the GitHub Releases page. Outdated license FAQ.
v4.3.4
The previous release added a variety of new features including nits-based normalized brightness syncing, direct brightness upscaling for built-in XDR displays, HDR virtual screens, improved LG webOS support along with various fixes, performance and compatibility improvements.
This version is a minor service release with some bug-fixes and improvements.
Fixes, improvements
- Direct display brightness "Force EDR mode" option might cause heavy CPU usage and cause the app to hang after a longer sleep - #5441
- macOS 26.5 Shortcuts opens app Settings if there is an action from another app in the same Shortcut #5454
- Brightness nits in the OSD cannot be turned off without Pro - #5459
- Rare resolution slider crash (when resolutions list changes) - #5462
- Tools menu header upper corner rounding may fail in certain situations - #5433
- Prevent auto-hiding menu bar to hide while app menu is open - #5463
- Menu open/close tutorial stays forever if the menu bar icon is disabled in System Settings - #5453
- Glass OSD slider knob looks somewhat semi-transparent when not being dragged - #5460
- Menu "more options" chevron collapse animation missing - #5461
- Onboarding arrow animations are stuck upon first app open - #5465
Included Localizations
- British English, Chinese Simplified, Chinese Traditional, Dutch, French, German, Hungarian, Italian, Japanese, Korean, Norwegian Bokmål, Polish, Portuguese Brazil, Romanian, Russian, Slovenian, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese.
- Contributors: @afkeceli, @AndryTi, @andrwmai, @BingoKingo, @brzenio, @cfuentea, @chihuahua-experience, @cristianritco, @dimaitre, @dotWee, @DrRoglaa, @dvanzoerlandt, @elislays08, @enormous-rat, @giulianopires, @gpnunes75, @HaiBliss, @hshsilver, @hw0603, @ibrayd, @jacktechstudio, @JulyIghor, @Kcraft059, @MapleLeaf14, @marcinkardas, @maximsenterprise, @MazlumSerbest, @mickimnet, @mikevic18, @MonolitheMedia, @moriLiu, @MStankiewiczOfficial, @niklasbogensperger, @old-cookie, @PatrykM13, @pavlik000-collab, @PuzzledUser, @SakiPapa, @shindgewongxj, @skantek, @sm-moshi, @stonkol, @sup3rb3ar, @yeager, @waydabber. AI was used for updating some of the localizations.
For previous release notes, visit the GitHub Releases page. Outdated license FAQ.
v4.3.3
This release adds nits-based normalized brightness syncing, direct brightness upscaling for built-in XDR displays, HDR virtual screens, improved LG webOS support. The version includes various fixes, performance and compatibility improvements for the latest version of macOS Tahoe as well.
Features
- Added direct brightness upscaling for built-in XDR displays (experimental) - #5242
- Added universal nits-based brightness sync mapping for normalized brightness synchronization (experimental) - #1393
- Added configurable nits ranges for displays that do not provide native nits readings - #5327
- Added parsing for HDR minimum, sustained maximum and peak brightness levels in nits - #5358
- Added option to show nits values in the app menu as well as the OSD - #5208
- Added improved nits output precision for low brightness values in the OSD - #5241
- Added forced HDR support and expanded Color Mode menu options, including mixed HDR modes - #5292
- Added mixed color mode support for outputting an SDR framebuffer with an HDR signal - #5256
- Added brightness upscaling support for third-party displays in mixed HDR mode - #5264
- Forced HDR mode is now preserved on wake - #5303
- Forced HDR mode is now preserved after refresh rate changes when the display drops out of HDR - #5371
- Made forced HDR mode compatible with Configuration Protection - #5372
- Added extra HDR capability details under Display Information - #5267
- Added HDR support for virtual screens - #5257
- Added HDR-only mode lists for virtual screens - #5259
- Added an explicit per-virtual-screen option for enabling resolutions over 8K / 4K HiDPI - #5374
- Added minimum and maximum range limits for direct brightness control - #5252
- Added separate device power on/off controls for LG webOS and Yamaha AVR devices - #5291
- Added option to power LG webOS and Yamaha AVR devices on/off when the display is detected or removed - #5296
- Added option to prevent LG webOS and Yamaha AVR devices from powering on after the display was disconnected during sleep - #5295
- Added help text to the LG webOS control UI about relevant TV settings - #5009
- Added current input retrieval for Yamaha AVRs - #5304
- Added Yamaha AVR power control only when the associated audio device is active - #5320
- Added option to avoid stealing input from already powered-on Yamaha AVRs - #5321
- Added input switching on wake for Yamaha AVRs - #5322
- Added option to avoid putting Yamaha AVRs to sleep when not switched to the Mac input - #5323
- Added option to remember soft-disconnected display state on app restart - #5309
- Improved reconnect behavior for soft-disconnected displays when the Pro trial runs out - #5298
- Added new OSD positioning option to show the OSD at top-right when the menu bar icon is visible and centered when it is hidden - #5299
- Improved app menu hiding behavior when clicking outside the menu - #5355
- Added cached app menu support for faster menu presentation - #5334
- Improved app menu animation performance - #5332
- Added adaptations for SOTSU 16" Gen 2 and 16" ELITE displays - #5313
- Added update channel support for differentiated Apple Silicon builds - #5341
- Added a Terminal option to temporarily disable power management assertions - #5367
- Added CLI options to get and set display nits levels - #5387
v4.3.1 - Added CLI option to toggle direct XDR upscaling - #5388
v4.3.1 - Added app intent (macOS Shortcut) for direct brightness upscaling - #5400
v4.3.2 - Brightness upscaling keyboard now works with direct upscaling as well - #5401
v4.3.2 - Improved compatibility with the latest macOS Tahoe versions
- Various performance improvements
Fixed
- Image Adjustments menu being empty when color table control is disabled and Metal is enabled - #5194
- Image adjustment delta syncing being ineffective when a target control had never been changed before - #5378
- Rapid brightness upscaling with combined brightness and Apple controllers could result in an incorrect upscaled brightness percentage - #5384
- Visual display identification not working on full-screen app spaces - #5245
- Numeric field entry issues in some mixed localization environments - #5255
- Incorrect Auto Brightness Toggle title in Shortcuts - #5209
- App menu sometimes appearing cropped, especially when the Color Mode menu was open - #5270
- Input Source and Display Presets submenu-specific tasks continuing to run when no longer needed - #5274
- App menu not closing after clicking an empty area - #5335
- App menu jumping to another screen when opened while a PIP window was on a different display - #5345
- Display Mode menu slowing down or not populating on some systems - #5351
- Settings window position not being remembered - #5373
- PIP/Stream zoom, underscan and magnification sliders behaving erratically - #5342
- PIP/Stream hover warning glass fading to black with black text in some circumstances - #5343
- Tabbed PIP windows not working properly, and hanging when "Prefer tabs when opening documents" is set to "Always" in System Settings - #5379
- OSD close icon shadow being abruptly cut off - #5316
- Slider percentage animation not reflecting whether the value is counting up or down while moving the slider - #5328
- Quantization slider showing the wrong initial value - #5338
- OSD flickering when mirroring or streaming a screen where brightness control affects both displays - #5344
- LG webOS controller attempting to reconnect while the display is disconnected - #5375
- External changes synchronization is broken for combined brightness control (v4.3.0 issue) - #5389
v4.3.1 - macOS Shortcuts seems to relaunch the app in macOS 26.5, causing the Settings window to appear momentarily - #5390
v4.3.1 - Combined brightness below min hardware level with Apple controllers tend to force nits syncing to dive down to zero in (v4.3.0 issue) - #5391
v4.3.1 - "Check for Updates" under the Tools menu tends linger when menu caching is enabled in v4.3.0 - #5392
v4.3.1 - Erratic nits syncing and reporting issue for some displays (v4.3.1 issue) - #5402
v4.3.2 - Non-cached app menu animation glitch when closing/opening a display section or toggling more options (v4.3.0 issue) - #5411
v4.3.3 - Direct upscaling adjustments cause internal warnings making adjustments a bit choppy in some scenarios (v4.3.0 issue) - #5412
v4.3.3
Included Localizations
- British English, Chinese Simplified, Chinese Traditional, Dutch, French, German, Hungarian, Italian, Japanese, Korean, Norwegian Bokmål, Polish, Portuguese Brazil, Romanian, Russian, Slovenian, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese.
- Contributors: @afkeceli, @AndryTi, @andrwmai, @BingoKingo, @brzenio, @cfuentea, @chihuahua-experience, @cristianritco, @dimaitre, @dotWee, @DrRoglaa, @dvanzoerlandt, @elislays08, @enormous-rat, @giulianopires, @gpnunes75, @HaiBliss, @hshsilver, @hw0603, @ibrayd, @jacktechstudio, @JulyIghor, @Kcraft059, @MapleLeaf14, @marcinkardas, @maximsenterprise, @MazlumSerbest, @mickimnet, @mikevic18, @MonolitheMedia, @moriLiu, @MStankiewiczOfficial, @niklasbogensperger, @old-cookie, @PatrykM13, @pavlik000-collab, @PuzzledUser, @SakiPapa, @shindgewongxj, @skantek, @sm-moshi, @stonkol, @sup3rb3ar, @yeager, @waydabber. AI was used for updating some of the localizations.
The changelog above includes all changes since the last v4.x stable version. For previous release notes, visit the GitHub Releases page. Outdated license FAQ.
v4.3.2
v4.3.1
v4.3.0
v4.2.3
This contains various enhancements and bug fixes.
Enhancements
- Added option to show brightness in nits in the OSD for supported displays - #5053
- Added keyboard shortcut support for LG webOS and Yamaha AVR input source changes - #5127
- Added macOS Shortcuts support for DDC, LG webOS and Yamaha AVR managed input source changes - #5128
- Support for managed Input Source using CLI - #5110
- Implement 2-pass wake for networked devices to compensate for slow-waking network cards - #5118
- Added a way to list configured controllers for a display using CLI - #5113
- Input switch on wake should not depend on enabled power control (to make this feature work with HDMI-CEC) - #5119
- Added non-persistent connection mode for LG webOS - #4943
- Added an option to disable DisplayLink auto-discovery and avoid discovery when launching in safe mode - #5126
- Added CLI for (experimental) and macOS Shortcuts support for compositor filters - #5132
- Added option to manually enter MAC address and specify WOL broadcast address for LG webOS - #5140
- Added option for a third delayed WOL after wake for LG webOS - #5141
- Command+W and Command+H should close/hide PIP windows - #5153
- Updated the DNC prefix to match the bundle identifier (while maintaining compatibility) - #5136
- Added keyboard shortcut for "Redetect Displays" - #5035
- Added an option to always show OSD on main display regardless of affected device and window/menu bar with focus location - #4922
- BetterDisplay open/close notifications for 3rd party integrations - #5174
- Improved memory management - #5147
Fixed
- Full screen PIP window issues - window cannot be closed, stopping stream results in blank space, some other interaction (minimize etc) may cause crash - #5155
- Third Party App OSD integration unavailable without Pro - #5102
- CLI bool set operations should not return Failed when the setting is already in the desired state - #5111
- LG webOS persistent connection silent failure - #5131
- Volume value not adjusted with configured maximum when getting volume from LG webOS device - #5133
- The LG webOS controller asks about a PIN code on the "Philips TV" during pairing... - #5134
- LG and Samsung wake (WOL) does not work if the user provides a hostname instead of an IP address - #5139
- URL scheme toggle operation requires empty parameter value - #5149
- Built-in HTTP server may cause a crash - #5154
- WOL logic may crash if hostname is provided instead of IP address for a networked device - #5165
- Delayed check timeout for Apple control capability may be too short resulting in lack of Apple hardware control on newly connected external Apple displays - #5187
- An invalid '0' or '1' is shown as native XDR brightness upscaling OSD nits value on macOS 26.2 and older in v4.2.2 - #5192
Note: This is a hotfix release to address a reported OSD issue in the recent v4.2.2 release, affecting older macOS versions – no new features were added. The changelog is carried over from the previous release.
Included Localizations
- British English (@PuzzledUser)
- Chinese, Simplified (@BingoKingo, @shindgewongxj, @hshsilver, @jacktechstudio)
- Chinese, Traditional (@old-cookie, @moriLiu)
- Dutch (@dvanzoerlandt)
- French (@Kcraft059, @MonolitheMedia)
- German (@mickimnet, @dotWee, @niklasbogensperger, @sm-moshi)
- Hungarian (@sup3rb3ar)
- Italian (@MapleLeaf14)
- Japanese (@SakiPapa)
- Korean (@hw0603, @chihuahua-experience)
- Norwegian Bokmål (@elislays08)
- Polish (@MStankiewiczOfficial, @PatrykM13, @brzenio, @enormous-rat, @marcinkardas, @skantek)
- Portuguese, Brazil (@gpnunes75, @giulianopires)
- Romanian (@mikevic18, @cristianritco)
- Russian (@dimaitre, @pavlik000-collab, @AndryTi)
- Slovenian (@DrRoglaa)
- Spanish (@stonkol, @cfuentea, @maximsenterprise)
- Swedish (@yeager)
- Turkish (@MazlumSerbest, @ibrayd, @afkeceli)
- Ukrainian (@JulyIghor)
- Vietnamese (@andrwmai, @HaiBliss)
The changelog above includes all changes since the last v4.x stable version. For previous release notes, visit the GitHub Releases page. Outdated license FAQ. AI was used for completing some of the localizations. Help improve BetterDisplay localization, correct mistranslations, or assist in adding new languages! Developed by @waydabber.
