- Reorganized PrefKey list to be less confusing. - Disengage custom shortcut keyboard after 100 key repeat to prevent possibly endless loop if keyUp event never arrives due to any circumstance. - Don't relinquish control over brightness keys with no external display connected if fine brightness OSD scale is active - Register DDC command touched status. When write on startup enabled, apply only touched command values. - Fixed custom key shortcuts going runaway when menu was opened during a keyrepeat streak. |
||
|---|---|---|
| .github | ||
| docs | ||
| MonitorControl | ||
| MonitorControl.xcodeproj | ||
| MonitorControlHelper | ||
| .bartycrouch.toml | ||
| .gitignore | ||
| .swift-version | ||
| .swiftformat | ||
| .swiftlint.yml | ||
| License.txt | ||
| README.md | ||
MonitorControl - Now with Apple Silicon support
Control your external display brightness and volume
Use menulet sliders or the native Apple keyboard keys
Behaves like native, with (optional) brightness & volume OSD

Download
Go to Releases and download the latest .dmg
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.
How to help
Open issues if you have a question, an enhancement to suggest or a bug you've found. If you want you can fork the code yourself and submit a pull request to improve the app.
Localizations
MonitorControl supports localization. We gladly welcome your contribution with a new language! See the opening post of the relevant discussion on how to add your translation!
How to build
Required
- Xcode
- Swiftlint
- SwiftFormat
- BartyCrouch (for updating localizations)
Clone the project via this Terminal command:
git clone https://github.com/MonitorControl/MonitorControl.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
Third party dependencies
Maintainers
Thanks
- @mathew-kurian (original developer)
- @Tyilo (fork)
- @Bensge - (used some code from his project NativeDisplayBrightness)
- @nhurden (for the original MediaKeyTap)
- @kfix (for ddcctl)
- @reitermarkus (for DDC.Swift)
- @zhuowei (figured out M1 I²C communication)
- @tao-j (figured out M1 I²C write)
- @alin23 (generally spearheaded M1 DDC support and figured out a many of the caveats)
- javierocasio (app icon background)