[PR #1876] Add native DisplayLink brightness and contrast control #1320

Open
opened 2026-10-02 22:09:46 -06:00 by gitea-mirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/MonitorControl/MonitorControl/pull/1876
Author: @ahaduoduoduo
Created: 6/14/2026
Status: 🔄 Open

Base: main ← Head: main


📝 Commits (2)

  • dd2adc8 Add DisplayLink brightness and contrast control
  • 5138e13 Harden DisplayLink control and wake recovery

📊 Changes

11 files changed (+944 additions, -70 deletions)

View changed files

📝 MonitorControl.xcodeproj/project.pbxproj (+4 -0)
📝 MonitorControl/Info.plist (+1 -1)
📝 MonitorControl/Model/Display.swift (+25 -22)
📝 MonitorControl/Model/OtherDisplay.swift (+132 -3)
📝 MonitorControl/Support/AppDelegate.swift (+99 -9)
➕ MonitorControl/Support/DisplayLinkControl.swift (+511 -0)
📝 MonitorControl/Support/DisplayManager.swift (+160 -32)
📝 MonitorControl/Support/MenuHandler.swift (+1 -1)
📝 MonitorControl/Support/SliderHandler.swift (+3 -0)
📝 MonitorControl/View Controllers/Preferences/DisplaysPrefsViewController.swift (+7 -1)
📝 MonitorControlHelper/Info.plist (+1 -1)

📄 Description

Summary

This PR adds native DisplayLink brightness and contrast control for displays managed by DisplayLink Manager.

Changes:

  • Adds a DisplayLink notification wrapper for display discovery, brightness writes, and contrast writes.
  • Maps DisplayLink displays to MonitorControl displays through the DisplayLink-provided CGID.
  • Uses DisplayLink native brightness instead of software shade control when DisplayLink control is available.
  • Adds DisplayLink contrast support to the existing contrast slider and keyboard paths.
  • Mirrors brightness and contrast changes made in DisplayLink Manager back into MonitorControl state and active menu sliders.
  • Coalesces DisplayLink slider writes on a background queue to avoid request bursts during fast dragging.
  • Keeps the existing software brightness fallback when DisplayLink control is unavailable before queueing a brightness write.

Tested

  • DisplayLink Manager version: 16.1.
  • Real-machine test passed on macOS 26.5 (25F71).
  • DisplayLink brightness adjustment works.
  • DisplayLink contrast adjustment works.
  • External brightness and contrast changes made in DisplayLink Manager are reflected back in MonitorControl.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/MonitorControl/MonitorControl/pull/1876 **Author:** [@ahaduoduoduo](https://github.com/ahaduoduoduo) **Created:** 6/14/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `main` --- ### 📝 Commits (2) - [`dd2adc8`](https://github.com/MonitorControl/MonitorControl/commit/dd2adc87691dd3eb9e39d6963580f1e394202b86) Add DisplayLink brightness and contrast control - [`5138e13`](https://github.com/MonitorControl/MonitorControl/commit/5138e132d3dbff378b1a6203758e976cbebd8655) Harden DisplayLink control and wake recovery ### 📊 Changes **11 files changed** (+944 additions, -70 deletions) <details> <summary>View changed files</summary> 📝 `MonitorControl.xcodeproj/project.pbxproj` (+4 -0) 📝 `MonitorControl/Info.plist` (+1 -1) 📝 `MonitorControl/Model/Display.swift` (+25 -22) 📝 `MonitorControl/Model/OtherDisplay.swift` (+132 -3) 📝 `MonitorControl/Support/AppDelegate.swift` (+99 -9) ➕ `MonitorControl/Support/DisplayLinkControl.swift` (+511 -0) 📝 `MonitorControl/Support/DisplayManager.swift` (+160 -32) 📝 `MonitorControl/Support/MenuHandler.swift` (+1 -1) 📝 `MonitorControl/Support/SliderHandler.swift` (+3 -0) 📝 `MonitorControl/View Controllers/Preferences/DisplaysPrefsViewController.swift` (+7 -1) 📝 `MonitorControlHelper/Info.plist` (+1 -1) </details> ### 📄 Description ## Summary This PR adds native DisplayLink brightness and contrast control for displays managed by DisplayLink Manager. Changes: - Adds a DisplayLink notification wrapper for display discovery, brightness writes, and contrast writes. - Maps DisplayLink displays to MonitorControl displays through the DisplayLink-provided CGID. - Uses DisplayLink native brightness instead of software shade control when DisplayLink control is available. - Adds DisplayLink contrast support to the existing contrast slider and keyboard paths. - Mirrors brightness and contrast changes made in DisplayLink Manager back into MonitorControl state and active menu sliders. - Coalesces DisplayLink slider writes on a background queue to avoid request bursts during fast dragging. - Keeps the existing software brightness fallback when DisplayLink control is unavailable before queueing a brightness write. ## Tested - DisplayLink Manager version: 16.1. - Real-machine test passed on macOS 26.5 (25F71). - DisplayLink brightness adjustment works. - DisplayLink contrast adjustment works. - External brightness and contrast changes made in DisplayLink Manager are reflected back in MonitorControl. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
github-starred/MonitorControl#1320
No description provided.