diff --git a/MonitorControl.xcodeproj/project.pbxproj b/MonitorControl.xcodeproj/project.pbxproj index 0583586..2a3874b 100644 --- a/MonitorControl.xcodeproj/project.pbxproj +++ b/MonitorControl.xcodeproj/project.pbxproj @@ -883,7 +883,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.14; MARKETING_VERSION = 4.3.2; PRODUCT_BUNDLE_IDENTIFIER = app.monitorcontrol.MonitorControl; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = XDRMonitorBrightness; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "MonitorControl/Support/Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -920,7 +920,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.14; MARKETING_VERSION = 4.3.2; PRODUCT_BUNDLE_IDENTIFIER = app.monitorcontrol.MonitorControl; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = XDRMonitorBrightness; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "MonitorControl/Support/Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-O"; diff --git a/MonitorControl/View Controllers/Preferences/AboutPrefsViewController.swift b/MonitorControl/View Controllers/Preferences/AboutPrefsViewController.swift index dc692da..5b5b913 100644 --- a/MonitorControl/View Controllers/Preferences/AboutPrefsViewController.swift +++ b/MonitorControl/View Controllers/Preferences/AboutPrefsViewController.swift @@ -57,8 +57,7 @@ class AboutPrefsViewController: NSViewController, SettingsPane { } func setCopyrightInfo() { - let copyright = NSLocalizedString("Copyright Ⓒ MonitorControl, ", comment: "Version") let year = Calendar.current.component(.year, from: Date()) - self.copyrightLabel.stringValue = "\(copyright) \(year)" + self.copyrightLabel.stringValue = "XDRMonitorBrightness — fork by @shayprasad. Original © MonitorControl contributors \(year). MIT License." } } diff --git a/README.md b/README.md index b24b97c..2ebe1ab 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,16 @@ App icon
-

MonitorControl

-

Controls your external display brightness and volume and shows native OSD. -Use menubar extra sliders or the keyboard, including native Apple keys!

-Download for macOS +

XDRMonitorBrightness

+

A fork of MonitorControl by @shayprasad with XDR extended brightness support for MacBook Pro Liquid Retina XDR and Pro Display XDR.



-downloads -latest version license platform +fork

@@ -24,17 +21,19 @@ Use menubar extra sliders or the keyboard, including native Apple keys!


+> [!NOTE] +> **XDRMonitorBrightness** is a personal fork of MonitorControl, maintained by [@shayprasad](https://github.com/shayprasad). It is not affiliated with or endorsed by the original MonitorControl project. For the official app, see [MonitorControl](https://github.com/MonitorControl/MonitorControl). + > [!WARNING] -> MonitorControl v4.2.0 [may crash](https://github.com/MonitorControl/MonitorControl/issues/1663) on certain configurations running macOS 15 Sequoia or Tahoe. Additionally, this version will not automatically update to the [latest app version](https://github.com/MonitorControl/MonitorControl/releases). To resolve the issue and ensure future updates, please upgrade manually. +> This fork adds XDR extended brightness control, which drives your display above its standard maximum brightness. This may increase heat output and reduce battery life. Use responsibly. -## Download +## What's different in this fork -Go to [Releases](https://github.com/MonitorControl/MonitorControl/releases) and download the latest `.dmg`, or you can install via Homebrew: -```shell -brew install --cask monitorcontrol -``` +- **XDR Extended Brightness** — Unlocks brightness above the standard system maximum (100%) on MacBook Pro Liquid Retina XDR and Pro Display XDR displays. A red zone appears on the slider when in the extended range. Enable via an opt-in warning dialog the first time you reach maximum brightness. +- **XDR Safety Controls** — "Reset to Standard Brightness" and "Disable XDR Extended Brightness" menu items let you quickly return to normal range. +- **Brightness sync respects XDR range** — When syncing brightness across displays, the target display's maximum (including XDR) is respected. -## Major features +## Original MonitorControl features - Control your display's brightness, volume and contrast! - Shows native OSD for brightness and volume. @@ -45,62 +44,8 @@ brew install --cask monitorcontrol - Sync up all your displays using a single slider or keyboard shortcuts. - Allows dimming to full black. - Support for custom keyboard shortcuts as well as standard brightness and media keys on Apple keyboards. -- Dozens of customization options to tweak the inner workings of the app to suit your hardware and needs (don't forget to enable `Show advanced settings` in app Settings). -- Simple, unobtrusive UI to blend in to the general aesthetics of macOS. -- Completely FREE. - -For additional features, more advanced brightness control with XDR/HDR brightness upscaling and support for more Mac models and displays, check out [BetterDisplay](https://github.com/waydabber/BetterDisplay#readme)! - -### Screenshots (Settings) - -
-Screenshot -Screenshot -Screenshot -Screenshot -
- -## How to install and use the app - -1. [Download the app](https://github.com/MonitorControl/MonitorControl/releases) -2. Copy the MonitorControl app file from the .dmg file to your Applications folder -3. Click on the `MonitorControl` app -4. Add the app to `Accessibility` under `System Settings` » `Privacy & Security` as prompted (this is required only if you wish to use the native Apple keyboard brightness and media keys - if this is not the case, you can safely skip this step). -5. Use your keyboard or the sliders in the app menu (a brightness symbol in the macOS menubar as shown on the screenshot above) to control your displays. -6. Open `Settings…` for customization options (enable `Show advanced settings` for even more options). -7. You can set up custom keyboard shortcuts under the `Keyboard` in Settings (the app uses Apple media keys by default). -8. If you have any questions, go to [Discussions](https://github.com/MonitorControl/MonitorControl/discussions)! - -### macOS compatibility - -| MonitorControl version | macOS version | -| ---------------------- | ----------------- | -| v4.0.0 | Catalina 10.15* | -| v3.1.1 | Mojave 10.14 | -| v2.1.0 | Sierra 10.12 | - -_* With some limitations - full functionality available on macOS 11 Big Sur or newer._ - -For macOS Sequoia and Tahoe 26 compatibility [v4.3.3 or newer](https://github.com/MonitorControl/MonitorControl/releases) is required! - -Please note that current versions have limited native macOS OSD support on macOS Tahoe - although the Control Center brightness or volume OSD appears, the OSD percentage value will not show or update. - -### Supported displays - -- Most modern LCD displays from all major manufacturers supported implemented DDC/CI protocol via USB-C, DisplayPort, HDMI, DVI or VGA to allow for hardware backlight and volume control. -- Apple displays and built-in displays are supported using native protocols. -- LCD and LED Televisions usually do not implement DDC, these are supported using software alternatives to dim the image. -- DisplayLink, Airplay, Sidecar and other virtual screens are supported via shade (overlay) control. - -Notable exceptions for hardware control compatibility: - -- DDC control using the built-in HDMI port of the 2018 Intel Mac mini, the built-in HDMI port of all M1 Macs (MacBook Pro 14" and 16", Mac Mini, Mac Studio) and the built-in HDMI port of the entry level M2 Mac mini are not supported. Use USB-C instead or get [BetterDisplay](https://betterdisplay.pro) for full DDC control over HDMI with these Macs as well for free. Software-only dimming is still available for these connections. -- Some displays (notably EIZO) use MCCS over USB or an entirely custom protocol for control. These displays are supported with software dimming only. -- DisplayLink docks and dongles do not allow for DDC control on Macs, only software dimming is available for these connections. - -## Contributing to the project - -- If you want, you can fork the code, make improvements and submit a pull request to improve the app. Accepting a PR is solely in the hands of the maintainer - before making fundamental changes expecting it to be accepted, please consult the maintainer of the project! +- Dozens of customization options. +- Simple, unobtrusive UI. ## How to build @@ -109,18 +54,14 @@ Notable exceptions for hardware control compatibility: - Xcode - [Swiftlint](https://github.com/realm/SwiftLint) - [SwiftFormat](https://github.com/nicklockwood/SwiftFormat) -- [BartyCrouch](https://github.com/Flinesoft/BartyCrouch) (for updating localizations) ### Build steps -- Clone the project via this Terminal command: - ```sh -git clone https://github.com/MonitorControl/MonitorControl.git +git clone https://github.com/shayprasad/MonitorControlXDR.git ``` -- If you want to clone one of the branches, add `--single-branch --branch [branchname]` after the `clone` option. -- You're all set! Now open the `MonitorControl.xcodeproj` with Xcode! The dependencies will automatically get downloaded once you open the project. If they don't: `File > Packages > Resolve Package Versions` +Open `MonitorControl.xcodeproj` with Xcode. Dependencies download automatically on first open. If they don't: `File > Packages > Resolve Package Versions`. ### Third party dependencies @@ -132,14 +73,22 @@ git clone https://github.com/MonitorControl/MonitorControl.git ## Credits -- [@waydabber](https://github.com/waydabber), maintainer, developer of [BetterDisplay](https://github.com/waydabber/BetterDisplay#readme). -- [@the0neyouseek](https://github.com/the0neyouseek) - honorary maintainer -- [@JoniVR](https://github.com/JoniVR) - honorary maintainer -- [@alin23](https://github.com/alin23) - spearheaded M1 DDC support, developer of [Lunar](https://lunar.fyi) -- [@mathew-kurian](https://github.com/mathew-kurian/) (original developer) -- [@Tyilo](https://github.com/Tyilo/) (fork) -- [@Bensge](https://github.com/Bensge/) - (used some code from his project [NativeDisplayBrightness](https://github.com/Bensge/NativeDisplayBrightness)) -- [@nhurden](https://github.com/nhurden/) (for the original MediaKeyTap) -- [@kfix](https://github.com/kfix/ddcctl) (for ddcctl) -- [@reitermarkus](https://github.com/reitermarkus) (for Intel DDC support) -- [javierocasio](https://www.deviantart.com/javierocasio) (app icon background) +This project is a fork of [MonitorControl](https://github.com/MonitorControl/MonitorControl). All credit for the original application goes to: + +- [@waydabber](https://github.com/waydabber) — maintainer, developer of [BetterDisplay](https://github.com/waydabber/BetterDisplay#readme) +- [@the0neyouseek](https://github.com/the0neyouseek) — honorary maintainer +- [@JoniVR](https://github.com/JoniVR) — honorary maintainer +- [@alin23](https://github.com/alin23) — spearheaded M1 DDC support, developer of [Lunar](https://lunar.fyi) +- [@mathew-kurian](https://github.com/mathew-kurian/) — original developer +- [@Tyilo](https://github.com/Tyilo/) — fork +- [@Bensge](https://github.com/Bensge/) — used code from [NativeDisplayBrightness](https://github.com/Bensge/NativeDisplayBrightness) +- [@nhurden](https://github.com/nhurden/) — original MediaKeyTap +- [@kfix](https://github.com/kfix/ddcctl) — ddcctl +- [@reitermarkus](https://github.com/reitermarkus) — Intel DDC support +- [javierocasio](https://www.deviantart.com/javierocasio) — app icon background + +XDR extended brightness additions by [@shayprasad](https://github.com/shayprasad). + +## License + +MIT — see [License.txt](License.txt). Original copyright © MonitorControl contributors. Fork additions copyright © 2026 Shay Prasad. diff --git a/build/build.sh b/build/build.sh new file mode 100755 index 0000000..1181095 --- /dev/null +++ b/build/build.sh @@ -0,0 +1,34 @@ +#!/bin/bash +# Build script for XDRMonitorBrightness +# Builds the app and copies the result to this build/ directory + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_DIR="$(dirname "$SCRIPT_DIR")" +APP_NAME="XDRMonitorBrightness" +OUTPUT_DIR="$SCRIPT_DIR" + +echo "Building $APP_NAME..." + +xcodebuild \ + -project "$PROJECT_DIR/MonitorControl.xcodeproj" \ + -scheme "MonitorControl" \ + -configuration Release \ + -derivedDataPath "$SCRIPT_DIR/DerivedData" \ + CODE_SIGN_IDENTITY="-" \ + CODE_SIGNING_REQUIRED=NO \ + CODE_SIGNING_ALLOWED=NO \ + build + +BUILT_APP="$SCRIPT_DIR/DerivedData/Build/Products/Release/$APP_NAME.app" + +if [ -d "$BUILT_APP" ]; then + echo "Copying $APP_NAME.app to build/ ..." + rm -rf "$OUTPUT_DIR/$APP_NAME.app" + cp -r "$BUILT_APP" "$OUTPUT_DIR/$APP_NAME.app" + echo "Done: $OUTPUT_DIR/$APP_NAME.app" +else + echo "Error: built app not found at $BUILT_APP" + exit 1 +fi