Skip to content

Releases: emin93/ddc-mirror

v0.1.5

Choose a tag to compare

@emin93 emin93 released this 17 May 14:26
4b7cd57

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

Choose a tag to compare

@emin93 emin93 released this 17 May 14:06
1fe2a67

Adds optional external display brightness calibration via macOS defaults.

Example:

defaults write ch.emin.ddc-mirror externalBrightnessOffset -float 0.10
brew services restart ddc-mirror

Positive values make external displays brighter, negative values make them dimmer, and the final brightness is clamped between 0% and 100%.

v0.1.3

Choose a tag to compare

@emin93 emin93 released this 16 May 18:17
f629670

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

Choose a tag to compare

@emin93 emin93 released this 16 May 03:28
adf011e

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-mirror

v0.1.1

Choose a tag to compare

@emin93 emin93 released this 16 May 03:03
9478199

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-mirror

v0.1.0

Choose a tag to compare

@emin93 emin93 released this 16 May 02:49
b34b49e

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 (IOAVServiceWriteI2C VCP 0x10) 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-mirror

Apple Silicon (M1+), macOS 12+.