[PR #629] [MERGED] Version 4.0.0 #1138

Closed
opened 2026-05-05 07:05:44 -06:00 by gitea-mirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/MonitorControl/MonitorControl/pull/629
Author: @waydabber
Created: 9/29/2021
Status: Merged
Merged: 9/30/2021
Merged by: @waydabber

Base: masterHead: beta


📝 Commits (10+)

  • 4e13d68 Support for Apple displays, show brightness slider for internal display.
  • 49beb6d Merge remote-tracking branch 'refs/remotes/origin/master'
  • f1e4a25 Fix Korean translation
  • 02a9f22 Delete MonitorControl/Support/ko.lproj directory
  • 10a2a60 Add suffix to similarly named displays - work in progress
  • ad6e04e Add suffix to similarly named displays - done
  • 58dc92a Fix Intel Swift optimization issue
  • 0304ad9 Removed a redundant line from the Intel fix
  • 8e6e7f7 Cosmetic changes
  • d855ddb Some refactoring and fixes

📊 Changes

100 files changed (+12504 additions, -4617 deletions)

View changed files

📝 .github/screenshot.png (+0 -0)
📝 MonitorControl.xcodeproj/project.pbxproj (+180 -168)
MonitorControl/AppDelegate.swift (+0 -487)
📝 MonitorControl/Enums/Command.swift (+5 -1)
MonitorControl/Enums/PrefKey.swift (+187 -0)
📝 MonitorControl/Extensions/CGDirectDisplayID+Extension.swift (+2 -0)
MonitorControl/Extensions/Display+Extension.swift (+0 -7)
MonitorControl/Extensions/KeyboardShortcuts+Extension.swift (+15 -0)
📝 MonitorControl/Extensions/NSNotification+Extension.swift (+0 -4)
📝 MonitorControl/Extensions/NSScreen+Extension.swift (+5 -11)
📝 MonitorControl/Extensions/Preferences+Extension.swift (+3 -7)
📝 MonitorControl/Info.plist (+5 -3)
MonitorControl/Manager/DisplayManager.swift (+0 -173)
MonitorControl/Model/AppleDisplay.swift (+72 -0)
📝 MonitorControl/Model/Display.swift (+186 -115)
MonitorControl/Model/ExternalDisplay.swift (+0 -421)
MonitorControl/Model/InternalDisplay.swift (+0 -46)
MonitorControl/Model/OtherDisplay.swift (+500 -0)
MonitorControl/Support/AppDelegate.swift (+302 -0)
📝 MonitorControl/Support/Arm64DDC.swift (+12 -9)

...and 80 more files

📄 Description

Changes in this update

Added/improved functionality

  • Added proper support for controlling Apple displays.
  • Added option to show/hide brightness slider.
  • Added option to show brightness slider for internal display and apple displays (enabled by default).
  • Replication of built-in and Apple display brightness to corresponding brightness slider.
  • Added suffix to similarly named displays for better differentiation.
  • Option to disable slider snapping for finer control + disable slider snapping by default.
  • Added option to show slider tick marks for better accuracy.
  • Added option to use window focus instead of mouse to determine which display to control.
  • Ctrl+Command+Brightness now controls external displays only (Ctrl+Brightness continues to control internal display only)
  • Added separate tab for menu options.
  • Added option to restore last saved values upon startup.
  • Added option for audio device name matching for display volume control selection.
  • Separated option to change all screens for brightness and volume.
  • Added option for keyboard fine scale for brightness.
  • Added option for keyboard fine scale for volume.
  • Added version check upon startup for mandatory preferences reset upon downgrade or incompatible previous version + notification about this.
  • Added implementation for Command+F1 macOS shortcut to enable/disable mirroring.
  • Added safer 'Assume last saved settings are valid' option as default instead of startup DDC read (or restore).
  • Streamlined preference panes, 'Show advanced settings' now affect all tabs. This leads to a better and safer first timer experience (especially because of the influx of many new features).
  • Added a Quit button to Preferences if menu is hidden (it was not passible to quit the application until this time in this mode only by re-enabling the menu).
  • Lowered default first-run volume DDC default from 75% to 15% if read is not possible or disabled to prevent unexpectedly loud sound.
  • Added slider skew setting on a per control basis to have the ability to manipulate DDC slider balance and OSD scale if display control is not linear.
  • Added the ability to set min. and max. DDC bounds on a per display, per control basis.
  • Audio device name override option for a display (manually assign a specific audio device to a display).
  • Advanced setting to invert DDC control range (some displays have the scale reversed).
  • Advanced setting to remap DDC control code (some displays have contrast and brightness mixed up).
  • Ability to mark a DDC control as available or unavailable in advanced settings under Displays.
  • Ability to automatically hide menu icon if there is no slider present in the menu.
  • Option to show slider percentage for more precision.
  • Option to set combined or separate OSD scale when combined hardware+software brightness is used.
  • Apple like smooth brightness change (both for software, hardware, mixed and DisplayServices).
  • Added support for DisplayLink, AirPlay, Sidecar, screen sharing etc. using window shades (this is an inferior technique to the existing software implementation - gamma control - but still better than nothing). Disabled for any kind of mirroring setups. (Only on Big Sur and above)
  • Brightness change synchronisation from Built-In and Apple displays to other displays. This makes Touch Bar, Ambient light sensor, Control Center and System Preferences induced changes affect all displays. Synchronisation uses a sophisticated indirect delta method + the user can intervene and adjust individual screen brightness at any time to easily compensate mismatching native brightness levels.
  • Preferences pane tab selector has a simpler look on Catalina.
  • All menu sliders are now scrollable using a magic mouse/trackpad swipes or mouse wheel.
  • Added option for menu to show only items that are relevant to display which shows the menu currently.
  • Added option to enable combined sliders (note: this option combined with enabled Apple/built-in display syncing and enabled 'change all' keyboard settings finally provides full synchronised control of all displays).
  • Combined sliders can now display multiple displays when keyboard and brightness syncing is not enabled. (Only on Big Sur and above)
  • Redesigned sliders to look like Big Sur/Monterey Control Center's sliders. (Only on Big Sur and above)
  • Quit and Preferences... are now icons for a much cleaner look. (Only on Big Sur and above)
  • Added option to change additional menu options style or hide them. (Only on Big Sur and above)
  • Multiple displays are now in nice Big Sur styled blocks - no more ugly separators. (Only on Big Sur and above)
  • Added customisable gamma/ddc switchover point for combined brightness in the advanced section of Displays.
  • Added comma separated list for control code override to enable edge cases like controlling Brightness and Contrast at the same time (use VCP list entry 10, 12 for that)
  • Contrast can now be controlled from keyboard via control + option + command + brightness up/down.
  • Custom keyboard shortcuts for brightness, contrast, volume and mute
  • Added automatic update.

Other under the hood changes and bug fixes

  • Standardised internal scale among various displays and DDC ranges for ranged controls.
  • Uses the new internal scale for combined hardware-software brightness mode.
  • Migrated scales to internal float representation to prevent loss of fine detail on transformations.
  • Fixed double sound when muting multiple external displays at the same time.
  • Fixed lack of initial volume configuration if slider is not shown in menu.
  • Fixed wrong settings being applied to a display when replaced on Apple Silicon (UserDefaults preferences are now tied to specific display strings instead of CGDirectDisplayID - which is no longer semi-unique on arm64).
  • A lot of refactoring, streamlining and general optimisations.

Known Issues

  • N/A

🔄 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/629 **Author:** [@waydabber](https://github.com/waydabber) **Created:** 9/29/2021 **Status:** ✅ Merged **Merged:** 9/30/2021 **Merged by:** [@waydabber](https://github.com/waydabber) **Base:** `master` ← **Head:** `beta` --- ### 📝 Commits (10+) - [`4e13d68`](https://github.com/MonitorControl/MonitorControl/commit/4e13d68797f7a4add89b51f608243391a6b9db24) Support for Apple displays, show brightness slider for internal display. - [`49beb6d`](https://github.com/MonitorControl/MonitorControl/commit/49beb6d9701cb1d002dd46f82910e7d8fdd5c3d6) Merge remote-tracking branch 'refs/remotes/origin/master' - [`f1e4a25`](https://github.com/MonitorControl/MonitorControl/commit/f1e4a25336a704d803c5319c84bf927701890d06) Fix Korean translation - [`02a9f22`](https://github.com/MonitorControl/MonitorControl/commit/02a9f225c2bdded3f3fd97f6017d026ae019cf7a) Delete MonitorControl/Support/ko.lproj directory - [`10a2a60`](https://github.com/MonitorControl/MonitorControl/commit/10a2a600597c959683fd3733670415d2c29c8e1f) Add suffix to similarly named displays - work in progress - [`ad6e04e`](https://github.com/MonitorControl/MonitorControl/commit/ad6e04e42938ec84fa4ffe774c88ed881f99526a) Add suffix to similarly named displays - done - [`58dc92a`](https://github.com/MonitorControl/MonitorControl/commit/58dc92aa338e1d8d700525835f5779ff1fba08c4) Fix Intel Swift optimization issue - [`0304ad9`](https://github.com/MonitorControl/MonitorControl/commit/0304ad905f8b73b636009946945a643855fc8a7d) Removed a redundant line from the Intel fix - [`8e6e7f7`](https://github.com/MonitorControl/MonitorControl/commit/8e6e7f7f76c041d19bf539f0f90e24f2c57b4d85) Cosmetic changes - [`d855ddb`](https://github.com/MonitorControl/MonitorControl/commit/d855ddb987e7834601fa6749266622c265647b14) Some refactoring and fixes ### 📊 Changes **100 files changed** (+12504 additions, -4617 deletions) <details> <summary>View changed files</summary> 📝 `.github/screenshot.png` (+0 -0) 📝 `MonitorControl.xcodeproj/project.pbxproj` (+180 -168) ➖ `MonitorControl/AppDelegate.swift` (+0 -487) 📝 `MonitorControl/Enums/Command.swift` (+5 -1) ➕ `MonitorControl/Enums/PrefKey.swift` (+187 -0) 📝 `MonitorControl/Extensions/CGDirectDisplayID+Extension.swift` (+2 -0) ➖ `MonitorControl/Extensions/Display+Extension.swift` (+0 -7) ➕ `MonitorControl/Extensions/KeyboardShortcuts+Extension.swift` (+15 -0) 📝 `MonitorControl/Extensions/NSNotification+Extension.swift` (+0 -4) 📝 `MonitorControl/Extensions/NSScreen+Extension.swift` (+5 -11) 📝 `MonitorControl/Extensions/Preferences+Extension.swift` (+3 -7) 📝 `MonitorControl/Info.plist` (+5 -3) ➖ `MonitorControl/Manager/DisplayManager.swift` (+0 -173) ➕ `MonitorControl/Model/AppleDisplay.swift` (+72 -0) 📝 `MonitorControl/Model/Display.swift` (+186 -115) ➖ `MonitorControl/Model/ExternalDisplay.swift` (+0 -421) ➖ `MonitorControl/Model/InternalDisplay.swift` (+0 -46) ➕ `MonitorControl/Model/OtherDisplay.swift` (+500 -0) ➕ `MonitorControl/Support/AppDelegate.swift` (+302 -0) 📝 `MonitorControl/Support/Arm64DDC.swift` (+12 -9) _...and 80 more files_ </details> ### 📄 Description ## Changes in this update ### Added/improved functionality - Added proper support for controlling Apple displays. - Added option to show/hide brightness slider. - Added option to show brightness slider for internal display and apple displays (enabled by default). - Replication of built-in and Apple display brightness to corresponding brightness slider. - Added suffix to similarly named displays for better differentiation. - Option to disable slider snapping for finer control + disable slider snapping by default. - Added option to show slider tick marks for better accuracy. - Added option to use window focus instead of mouse to determine which display to control. - Ctrl+Command+Brightness now controls external displays only (Ctrl+Brightness continues to control internal display only) - Added separate tab for menu options. - Added option to restore last saved values upon startup. - Added option for audio device name matching for display volume control selection. - Separated option to change all screens for brightness and volume. - Added option for keyboard fine scale for brightness. - Added option for keyboard fine scale for volume. - Added version check upon startup for mandatory preferences reset upon downgrade or incompatible previous version + notification about this. - Added implementation for Command+F1 macOS shortcut to enable/disable mirroring. - Added safer 'Assume last saved settings are valid' option as default instead of startup DDC read (or restore). - Streamlined preference panes, 'Show advanced settings' now affect all tabs. This leads to a better and safer first timer experience (especially because of the influx of many new features). - Added a Quit button to Preferences if menu is hidden (it was not passible to quit the application until this time in this mode only by re-enabling the menu). - Lowered default first-run volume DDC default from 75% to 15% if read is not possible or disabled to prevent unexpectedly loud sound. - Added slider skew setting on a per control basis to have the ability to manipulate DDC slider balance and OSD scale if display control is not linear. - Added the ability to set min. and max. DDC bounds on a per display, per control basis. - Audio device name override option for a display (manually assign a specific audio device to a display). - Advanced setting to invert DDC control range (some displays have the scale reversed). - Advanced setting to remap DDC control code (some displays have contrast and brightness mixed up). - Ability to mark a DDC control as available or unavailable in advanced settings under Displays. - Ability to automatically hide menu icon if there is no slider present in the menu. - Option to show slider percentage for more precision. - Option to set combined or separate OSD scale when combined hardware+software brightness is used. - Apple like smooth brightness change (both for software, hardware, mixed and DisplayServices). - Added support for DisplayLink, AirPlay, Sidecar, screen sharing etc. using window shades (this is an inferior technique to the existing software implementation - gamma control - but still better than nothing). Disabled for any kind of mirroring setups. _(Only on Big Sur and above)_ - Brightness change synchronisation from Built-In and Apple displays to other displays. This makes Touch Bar, Ambient light sensor, Control Center and System Preferences induced changes affect all displays. Synchronisation uses a sophisticated indirect delta method + the user can intervene and adjust individual screen brightness at any time to easily compensate mismatching native brightness levels. - Preferences pane tab selector has a simpler look on Catalina. - All menu sliders are now scrollable using a magic mouse/trackpad swipes or mouse wheel. - Added option for menu to show only items that are relevant to display which shows the menu currently. - Added option to enable combined sliders (note: this option combined with enabled Apple/built-in display syncing and enabled 'change all' keyboard settings finally provides full synchronised control of all displays). - Combined sliders can now display multiple displays when keyboard and brightness syncing is not enabled. _(Only on Big Sur and above)_ - Redesigned sliders to look like Big Sur/Monterey Control Center's sliders. _(Only on Big Sur and above)_ - Quit and Preferences... are now icons for a much cleaner look. _(Only on Big Sur and above)_ - Added option to change additional menu options style or hide them. _(Only on Big Sur and above)_ - Multiple displays are now in nice Big Sur styled blocks - no more ugly separators. _(Only on Big Sur and above)_ - Added customisable gamma/ddc switchover point for combined brightness in the advanced section of Displays. - Added comma separated list for control code override to enable edge cases like controlling Brightness and Contrast at the same time (use VCP list entry `10, 12` for that) - Contrast can now be controlled from keyboard via <kbd>control</kbd> + <kbd>option</kbd> + <kbd>command</kbd> + brightness up/down. - Custom keyboard shortcuts for brightness, contrast, volume and mute - Added automatic update. ### Other under the hood changes and bug fixes - Standardised internal scale among various displays and DDC ranges for ranged controls. - Uses the new internal scale for combined hardware-software brightness mode. - Migrated scales to internal float representation to prevent loss of fine detail on transformations. - Fixed double sound when muting multiple external displays at the same time. - Fixed lack of initial volume configuration if slider is not shown in menu. - Fixed wrong settings being applied to a display when replaced on Apple Silicon (UserDefaults preferences are now tied to specific display strings instead of CGDirectDisplayID - which is no longer semi-unique on arm64). - A lot of refactoring, streamlining and general optimisations. ## Known Issues - N/A --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
gitea-mirror 2026-05-05 07:05:44 -06:00
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#1138
No description provided.