Releases: emin93/ddc-mirror
Release list
v0.1.5
Fixes external brightness resync after unplugging and reconnecting a USB-C dock.
Changes:
- Rebuilds the display map when DCP AV services are added or removed.
- Handles additional CoreGraphics display reconfiguration flags.
- Retries reconnect sync at 1s, 4s, and 8s so docks have time to expose the display path.
- Keeps brightness handling event-driven, with no polling watchdog.
v0.1.4
Adds optional external display brightness calibration via macOS defaults.
Example:
defaults write ch.emin.ddc-mirror externalBrightnessOffset -float 0.10
brew services restart ddc-mirrorPositive values make external displays brighter, negative values make them dimmer, and the final brightness is clamped between 0% and 100%.
v0.1.3
What's Changed
- Make software dimming preserve each display's existing ColorSync transfer table instead of replacing it with a formula curve.
- Restore captured ColorSync transfer tables on display rebuild and process exit.
- Update README, site copy, and Homebrew formula metadata for profile-aware software dimming.
Validation
- make clean && make && ./ddc-mirror --help
v0.1.2
Smoother software dimming for fallback displays.
This release animates software gamma dimming over short brightness changes, which makes Intel Macs and displays behind docks, hubs, or KVMs track the built-in display more naturally. Hardware-backed displays still use the existing Apple-native or DDC paths.
Also includes small landing-page polish and refreshed Homebrew service caveats in the repository template.
Install
brew install emin93/tap/ddc-mirror
brew services start ddc-mirrorv0.1.1
Adds Intel support.
The DDC code path (IOAVServiceWriteI2C) only exists on Apple Silicon, so on Intel Macs it now compiles out and every external display falls through to software gamma dimming (CGSetDisplayTransferByFormula). Apple-native externals (Studio Display, Pro Display XDR) continue to use DisplayServicesSetBrightness on both architectures.
No behavior change on Apple Silicon.
Install
brew install emin93/tap/ddc-mirror
brew services start ddc-mirrorv0.1.0
First release of the rewritten ddc-mirror.
A tiny macOS LaunchAgent that watches the built-in MacBook display's brightness and mirrors it to every connected external monitor. No UI, no settings, no flags.
What's in the box
- Single-file Objective-C, 55 KB binary, zero external dependencies
- Auto-picks the right mechanism per display at startup:
- Apple-native API for Studio Display / Pro Display XDR
- DDC/CI (
IOAVServiceWriteI2CVCP0x10) for monitors on direct cables - Software gamma dimming (
CGSetDisplayTransferByFormula) for monitors behind docks/hubs/KVMs that strip DDC
- Push-driven via
DisplayServicesRegisterForBrightnessChangeNotifications— no polling, sub-frame latency - Re-bootstraps on hot-plug and on wake from sleep
- Restores factory gamma on exit
Install
brew install emin93/tap/ddc-mirror
brew services start ddc-mirrorApple Silicon (M1+), macOS 12+.