Skip to content

huberdf/FreeDisplay

Repository files navigation

FreeDisplay

Free & open-source alternative to BetterDisplay — all the core display management features, zero cost.

BetterDisplay is a great app, but its best features are locked behind a paid Pro license. FreeDisplay implements the most essential BetterDisplay features as a completely free, open-source macOS menu bar app.

Download Latest Release | Report an Issue


What BetterDisplay Features Does This Replace?

BetterDisplay Feature FreeDisplay Notes
DDC Brightness & Contrast Hardware control via IOKit I2C (Intel) / IOAVService (Apple Silicon)
Software Brightness (Gamma) Per-display gamma table control with smooth transitions
Keyboard Brightness Keys for External Displays Intercepts brightness keys when cursor is on external display, shows native macOS OSD
Auto Brightness Sync Syncs external display brightness with built-in display changes
HiDPI Virtual Displays Creates HiDPI dummy displays via CGVirtualDisplay private API
Display Arrangement Position displays (external above built-in, etc.)
Resolution & HiDPI Switching Browse and switch all available display modes including HiDPI
ICC Color Profile Management Switch color profiles per display via ColorSync
Image Adjustment (Gamma/Temperature) Software contrast, color temperature, RGB channels, invert
Display Presets Save & restore full display configurations with one click
Virtual Display (Dummy) Create headless virtual displays
Notch Management Hide the MacBook notch with a black overlay
Launch at Login Via SMAppService

Not Included (intentionally)

  • Screen streaming / PiP — rarely used, adds complexity
  • EDID override — requires SIP disabled
  • XDR/HDR extra brightness — requires specific hardware

Screenshots

Coming soon


Installation

Option 1: Download DMG

  1. Download FreeDisplay.dmg from Releases
  2. Open the DMG and drag FreeDisplay.app to Applications
  3. First launch: right-click → Open (unsigned app, one-time approval)

Option 2: Build from Source

brew install xcodegen
git clone https://github.com/huberdf/FreeDisplay.git
cd FreeDisplay
xcodegen generate
xcodebuild -scheme FreeDisplay -configuration Release build

Permissions

Permission Why
Accessibility Required for brightness key interception on external displays

No internet connection required (except optional update checks via GitHub Releases API).


Tech Stack

  • Swift 6 + SwiftUI (MenuBarExtra)
  • IOKit — DDC/CI I2C for hardware brightness/contrast
  • CoreGraphics — Display enumeration, resolution, arrangement
  • ColorSync — ICC color profile management
  • CGVirtualDisplay — Virtual display creation (private API, macOS 14+)
  • CoreDisplay — Built-in display brightness reading (private API, via dlopen)
  • Zero third-party dependencies

Project Structure

FreeDisplay/
├── App/              # AppDelegate, app entry point
├── Models/           # DisplayInfo, DisplayMode, DisplayPreset
├── Services/         # System-level services (DDC, brightness, resolution, gamma, etc.)
└── Views/            # SwiftUI views for each feature section

How It Works

FreeDisplay sits in your menu bar and talks directly to your displays:

  • External monitors: Uses DDC/CI protocol over I2C (Intel) or IOAVService (Apple Silicon) to control hardware brightness, contrast, and other settings
  • Built-in display: Uses CoreGraphics gamma tables for software brightness adjustment
  • Brightness keys: Installs a CGEventTap to intercept keyboard brightness keys and route them to the display under your mouse cursor
  • Auto brightness: Polls the built-in display brightness via CoreDisplay private API and proportionally adjusts external displays
  • HiDPI: Creates virtual displays via CGVirtualDisplay private API, or writes display override plists for persistent HiDPI

Contributing

Issues and PRs welcome. This project uses:

  • xcodegen for project generation (edit project.yml, not .xcodeproj)
  • Swift 6 with SWIFT_STRICT_CONCURRENCY: minimal
  • MVVM architecture (View → ViewModel → Service)

License

MIT License — see LICENSE for details.


Acknowledgments

About

Free & open-source alternative to BetterDisplay for macOS. DDC brightness/contrast control, HiDPI virtual displays, display arrangement, color profiles, auto brightness sync, keyboard brightness key interception with native OSD — all core BetterDisplay features, zero cost.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages