SkillAgentSearch skills...

FreeDisplay

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.

Install / Use

/learn @huberdf/FreeDisplay
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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

Related Skills

View on GitHub
GitHub Stars9
CategoryDevelopment
Updated2d ago
Forks0

Languages

Swift

Security Score

75/100

Audited on Apr 1, 2026

No findings