Giter Site home page Giter Site logo

monitorcontrol / monitorcontrol Goto Github PK

View Code? Open in Web Editor NEW
26.1K 155.0 773.0 29.15 MB

🖥 Control your display's brightness & volume on your Mac as if it was a native Apple Display. Use Apple Keyboard keys or custom shortcuts. Shows the native macOS OSDs.

Home Page: https://monitorcontrol.app

License: MIT License

Swift 98.58% Objective-C 1.42%
macos keyboard brightness volume external-monitor m1 apple silicon ddc macos-app

monitorcontrol's Introduction

App icon

MonitorControl - for Apple Silicon and Intel

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




Download

Go to Releases and download the latest .dmg, or you can install via Homebrew:

brew install MonitorControl

Major features

  • Control your display's brightness, volume and contrast!
  • Shows native OSD for brightness and volume.
  • Supports multiple protocols to adjust brightness: DDC for external displays (brightness, contrast, volume), native Apple protocol for Apple and built-in displays, Gamma table control for software dimming, shade control for AirPlay, Sidecar and Display Link devices and other virtual screens.
  • Supports smooth brightness transitions.
  • Seamlessly combined hardware and software dimming extends dimming beyond the minimum brightness available on your display.
  • Synchronize brightness from built-in and Apple screens - replicate Ambient light sensor and touch bar induced changes to a non-Apple external display!
  • 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 Preferences).
  • Simple, unobtrusive UI to blend in to the general aesthetics of macOS.
  • One of the best app of its kind, completely FREE (donations welcome) with the source code transparently available!

How to install and use the app

  1. Download the app
  2. Copy the MonitorControl app file from the .DMG to your Applications folder
  3. Click on the MonitorControl app file
  4. Add the app to Accessibility under System Preferences » Privacy & Security » Privacy 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 Preferences... for customization options (enable Show advanced settings for even more options).
  7. You can set up custom keyboard shortcuts under the Keyboard in Preferences (the app uses Apple media keys by default).
  8. If you have any questions, go to Discussions!

Screenshots (Preferences)

Screenshot Screenshot Screenshot Screenshot

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.

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

Compatibility with

  • f.lux users: please activate Avoid gamma table manipulation under Preferences » Displays! This step is not needed if you use Night Shift.
  • BetterDisplay users: either activate Avoid gamma table manipulation in MonitorControl or turn off Allow color adjustments in BetterDisplay (under Settings/Displays/Overview). You might want to disable native keyboard control either in MonitorControl or BetterDisplay, depending on which app you want to use for brightness control and dimming.

How to help

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

Build steps

  • 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

monitorcontrol's People

Contributors

betacat-ha avatar bluejamesbond avatar botho avatar curana avatar dev-coco avatar ghostiam avatar gtn1024 avatar isametry avatar jajoho avatar jerry23011 avatar jonivr avatar kahotheo avatar kikiwora avatar mennan avatar ozkanozcan avatar reitermarkus avatar robertbressi avatar scorpiondev avatar shsw228 avatar stephengroat avatar stijneikelboom avatar stonkol avatar takuro-ito avatar the0neyouseek avatar toxblh avatar tyilo avatar victorchabbert avatar waydabber avatar womeimingzi11 avatar zzulu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

monitorcontrol's Issues

Request: no submenu when only one monitor

For those of us that have only one display, it would be much more convenient to NOT have a separate submenu for the controls. They should just appear directly below the menubar icon.

Thanks

Hotkeys doesn't work on fullscreen app on second display

If any app is open in fullscreen on second monitor, hot keys of MonitorControl on that monitor doesn't work, you have to switch back to desktop view on second display to have them work again.
On main display hot keys work anywhere, on fullscreen apps also.

Turning off brightness doesn't work

Hi, thanks for the good work. Apps works fine for Volume and Brightness on my iiyama 27" LED - B2791QSU-B1

Except that I can't dim the brightness to 0%, the progress bar is at 0%, but there is still brightness on the screen. I would say that backlight remains at 15%

Audio source change

Feature request :
My monitor has monitor (iiyama B2791QSU-B1) has built-in speaker, and I would like to easily change the audio source.

Here is the the use case : I use display from HDMI source, and listen to some music or video.
but sometimes I use audio from line-in during my hands-free calls.
=> It would be nice to have an easy way to change the source.

Mouse cursor stutters as soon as the app is launched

I downloaded the latest version of the MonitorControl from the release section. As soon as I start the app, the cursor becomes very unresponsive. The app works (at least the brightness does), and the rest of the system is fine, as the youtube video I'm watching doesn't show any signs of lagging or stuttering.
I might do some digging on my own into this issue, but if you can find out why, it would be awesome. Please let me know if more information for debugging is needed.

Multiple monitor issue

When you connect multiple monitors that in the same model, it would just recognize one of them.

F1 and F2 become overridden when MonitorControl is running

Hello,
Thank you for your continued development of the program. I like that I can finally edit both monitor's brightness at the same time correctly. However, when MonitorControl is running, I cannot click F1/F2 on my keyboard although in Karabenier-Elements I have it set to use the F1, F2, etc. keys as standard function keys. I have the tilde (`) key on my keyboard set to enable the function key as I do not have a physical one. Not sure if this is something that can be solved through MonitorControl or Karabenier. However, the issue does go away after quitting MonitorControl, although of course I lose the ability to easily control the brightness.

CI & Automatic Updates

This issue is to simplify the debug and release process :

  • Add a ci service to compile and deploy the new releases to github.
  • Add an auto-update feature (with options to enable/disable the auto check for new releases) with something like @macmade/GitHubUpdates

Keep MonitorControl from asking for Accessibility Features everytime

First of all, thank you so much for this app. I looked for something like this for a long time!
Since I had no idea about DDC/CI, all options that I could find involved installing virtual sound devices and things like that.
They did solve the problem, but were more complex to install or weren't free.

I use it to control sound volume of my external monitor connected through DisplayPort, and the native volume keys on Apple's wireless keyboard work fine with the app, so there's no need to grant Accessibility Features to it. But it keeps asking for granting every single time it's launched.

Is there another way to stop these requests?

Handle monitors with no sound

Better handle monitor with no sound if possible

  • Detect monitor with no sound
  • Do not display the sound slider
  • Sound control should "pass-through"

Dim all monitors

It would be nice to be able to dim all monitors when dimming one screen
(It could be set as an option)

Listen for contrast only

Please add an option for listening for contrast value only. On some displays contrast value has much more steps for dimming display.

Listening for volume doesn't work with non monitor output

If I have "listen for volume" activated I can't use media keys to adjust volume of laptop's internal speakers or wireless headphones. I can still use default macos volume slider to do that. Would be great if for audio the app could check which output device is selected and then decide whether to override volume commands or not.

Fix keyboard shortcut

In this issue I will focus on working on my own system to handle the brightness and volume key. I will also allow the key to be pass-through, meaning that if your current screen is a native display, the app will simply pass the command to macOS default, changing the brightness/volume natively.

Hopefully this will fix the following issues :

  • Karabiner Elements dependency
  • Using the shortcut keys while in an app making use of the same shortcuts would result in the app registering the shortcut too.
  • You could not change a native display brightness/volume using Karabiner Elements as it would override the default key.

I'll update the issue when the dev of the features discussed will be completed.

Anyone interested in joining forces and fixing the problems together?

Hi there,

I found this wonderful tool two weeks ago and it solved the one problem for me that Apple couldn't address: controlling my screens volume over HDMI.

But it has some flaws that are already documented in the issues and it doesn't seem to get updated for some months now. What do you think of fixing those bugs and if everything's alright adding the app to the Appstore for free, so everyone can profit from a simple app that solves a major macOS issue? ;-)

To be honest, I'm quite new to Xcode development. I can compile and build, I can rewrite stuff, but I can't write an app on my own. I can to do testing and graphical design as well. What I already did was taking an old version of this app (without the key controls) and reducing it to a simple volume slider for single screen only. This works absolutely stable for me and wastes no CPU time, so I can just keep it in my startup.

So what do you think? Anyone interested? :-)

  • Max

image

Functions keys aren't working

Thank you for your work, app is super cool, best looking monitor brightness manager on macOS nowdays. Working fine with my Viewsonic and Dell. App starts at login, but f1-f2 keys still don't work for changing brightness. Or maybe there is another shortcut?

Some suggestions:
Ability of changing order of displays in preferences. (now second display is first, first display is second in menu bar).
If function keys will work, let them listen for contrast change too.

Native Volume Control on Keyboard stops working with program open

On version 1.1, the volume wheel on my keyboard stops working, the HUD still shows up but it doesn't change volume. Selecting the volume in my menu bar still works, but I must quit the program to use my volume wheel.
F1/F2 also doesn't change my brightness, unless I'm missing something.

Activate / Deactivate any monitor

Feature request : be able to Activate / Deactivate any monitor

Here is the the use case :
When my external monitor is plugged, I deactivate my mac internal monitor, using shortcut
(I use SwitchResX to do that)
Also one thing to be careful about with SwitchResX, I sometimes fall in a situation where not display I working. For instance, when unplugging an external display, or when the computer go out of sleep.
The nice thing with SwitchResX, is that you can define any display scenario and assigne a shortcut for it.

Here is my setting :
capture d ecran 2018-02-19 a 07 29 58

Ability to manually set Brightness and Contrast levels for keyboard control

Unfortunatelly my display (LG's 27UD88) cannot dim the Brightness that much. At night time I would like to dim it even more by reducing the Contrast a bit with Brightness set to "0". The app now has an option to "Lower Contrast after Brightness", however this is sets the contrast way too low (+ my display does not seem to have proper support for reading DDC values, so Contrast is not properly restored afterwards since the app does not know what was the original Contrast level to begin with).

My recommendation is this: there should be an "advanced" setting, where the user can exactly specify the Brightness and Contrast levels manually for all 17 steps ("ticks") of the brightness levels that can be set by the F1/F2 keyboard keys.

This way I could set the level 0 to 30% Contrast, 0% Brightness, level 1 to "50%C, 0%B", level 2 to "70%C 0%B", level 3 to "70%C 5%B", and so on..., level 17 being "70%C 100%B" (the default/optimal contrast level for my display is 70% opposed to the more common 75%).

This addition would make the app perfect for me!

Thank you for your great work!

Does Not Work After Waking from Sleep

The app works great, generally, so thanks!

But if my Mac goes to sleep, once it wakes it no longer sees the monitor as an output source. The media keys will switch to controlling the Mac display and volume itself, rather than the monitor.

A reset restores functionality.

Removing this app restores that functionality.

I'm on macOS 10.13.5.

My monitor is an LG 32UD89-W.

Bluetooth keyboard support

I am using a Logitech K760 BL keyboard and when I use brightness control on it. It controls only the MacBook display.

Add a Preferences View

I'd like for the app to be able to better handle multiple screens and/or external screens.
Here's what I hope to achieve in this issue for 1.1 :

  • Add a settings window for the options below :
    • List all screens (showing the "default" screen)
    • Ability to include/exclude screens (so you could control only the one you want, the others would be unaffected)
    • Ability to change the brightness/volume of all screen at once (checkbox)
    • Ability to have the app open automatically when the mac is plugged to an external screen (checkbox)

I'll update the issue when the dev of the features discussed will be completed.

Thunderbolt dock and stuttery mouse pointer movement

After starting MonitorControl, my mouse pointer movement is no longer smooth. Moving a window around is also much less smooth (you could say it's about 10 fps). This is with a Samsung SyncMaster 226BW (DVI) plugged into the HDMI port of a Caldigit Thunderbolt Station 2 and a Mid-2014 15-inch MacBook Pro.

When I directly connect the monitor to my MacBoo, there is no noticeable change in pointer smoothness!

I can control the brightness of my external monitor using Monitor Control in both cases. Also, Activity Monitor shows MonitorControl using around 10% CPU time constantly (with and without dock). I'll open a separate ticket for this.

"Lower contrast after Brightness" is not working as expected - bug?

Problem: brightness=0 / contrast=75 is still too bright to work at night

Starting point:
Brightness=100
Contrast=75

What I expect:

  1. By pressing F1 repeatedly, brightness gets lowered from 100 to zero, after that contrast gets gradually lowered from 75 to zero.
  2. Pressing F2 repeatedly increases contrast from 0 to 75, after that brightness starts to increase from 0 too 100 (do we need a setting for max contrast? it should not go above 75 in my case, but it may be different for other monitors)

What happens:

  1. By pressing F1, brightness gets lowered from 100 to zero. Next key press lowers contrast to 0 (bug?)
  2. A single press of F2 increases contrast from 0 to 75 (bug?), brightness from 0 to 6. Slider for contrast stays at 0 at all times (bug?). Subsequent keypresses increase brightness as expected, effective contrast stays at 75 (good), but contrast slider shows 0 (bug?).

It's a very minor issue, since it's not that hard to use sliders to adjust contrast as needed.

Increasing brightness over 100%

This app works great, but is there a way to increase the brightness for over 100%? If I set my display manually to full brightness, the app shows 255%, but the moment I move the slider, the screen goes dimmer and I can't increase it above 100%.

With an app called Brightness Menulet, I'm able to set the monitor to 255 (full brightness), but it lacks all the features.
screen shot 2018-07-05 at 20 24 25

Image freezes with Dell P2715Q

I've been using ddcctl to set the brightness of my Dell P2715Q screen from the terminal without problems. However when trying to, for instance, get the brightness value without setting it, the screen freezes (keeps the last image frozen).

The same freezing happens when opening your app (1.3.0)

App does not work with multiple identical monitors

Unexpected behavior w/ 2 identical BenQ BL3201PH monitors connected via DisplayPort on a GTX 980ti, running 10.13.6. App is only able to control DDC on one of the two monitors. When the working monitor is the primary "Mac" monitor as chose in Display Preferences in the Arrangement tab.

Disabling the primary monitor in MonitorControl settings does not fix this issue. When I disable the "main" working monitor in Monitor Control preferences, adjusting the other monitor brightness causes the main monitor brightness to then change. Same applies for the brightness sliders in menubar. Has anyone else experienced this?

I've tried changing the system monitor names with no luck, no change in name in the MonitorControl app. Will keep trying other options.

screen shot 2018-09-24 at 10 14 41 pm

screen shot 2018-09-24 at 9 14 27 pm

v1.30 keyboard control works intermittently on some displays

v1.30 - Keyboard control seems to be working as far as the bezel notification (system brightness overlay) is displayed properly. However the actual Brightness is usually not changed or the changes are applied only intermittently. I have to long press F1 decreasing the brightness all the way down, then it eventually dims the display, or I have to long press F2 to increase brightness all the way up and it eventually brightens the display - or sometimes the changes are applied halfway, but not always. Single keystrokes almost never work. The manual slider seems to work but is a bit more choppier than the previous version.

v1.21 - Brightness control is silky smooth.

EDIT: the issue in v1.30 seems to be display specific. Brightness level control is semi broken on my LG 27UD88 4K display (+macbook 2017) but works properly on my Lenovo L24Q display (+mac mini 2012).

EDIT2: only a hunch: @reitermarkus said "I added a loop which tries more often to get the values from the display, since for me the default value of 10 tries in ddcctl does not work reliably. For me, the average is at about 200 tries, and can be up to 600 tries". The difference between the 27UD88 and L24Q is that ddcctl is unable to read values from the 27UD88 (this might be a bug in ddcctl itself, since LG's own DDC/CI control app for MacOS reads the settings just fine - or LG displays might have a nonstandard DDC/CI implementation). The choppiness might be related to the increase in the "tries"? I did not examine the code so it's only a guess on my behalf.

Hide icon on status bar

Hey very nice work you have done ! 🥇
Want to ask, if is possible to hide the icon on the status bar?.
I'm not really a fan about having to much different icons there :)

Brightness works but no volume control? (U28E590)

Hi,

First of all thank you so much for making this program, I never thought it would be possible to change brightness on a non apple or ultrafine monitor.

On my U28E590, changing the brightness works like a charm, but the volume never changes, I can change the sliders or use the volume keys and I will see the overlays but the actual volume on the speakers which are connected to my monitor remains unaffected.

Samsung U28E590 connected to a 2015 rMB via an USB-C to displayport cable.

Perhaps somebody here has an idea what could be causing this, in any case I love the program for the brightness controls already.

Brightness keys not detected in fullscreen

While display focus detection works very well in my set up (MBPr 13 2015 + Dell P2415Q), if an app is running in full screen mode on the external display, media keys control the built-in display.

10.13.5 (17F77)

High CPU usage.

Activity Monitor shows Monitor Control using around 10% CPU time constantly.

I see this behavior with a Samsung SyncMaster 226BW. This monitor does not support querying settings:

$ ddcctl -d 1 -b ?
D: NSScreen #188788209 (1680x1050 0°) 90.00 DPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.name: SyncMaster
I: got edid.serial: HSDP819382
D: action: b: ?
D: querying VCP control: #16 =?
E: No data after 10 tries!
E: DDC send command failed!
E: VCP control #16 (0x10) = current: 0, max: 0

Feature: Use touchbar keys to control brightness/volume

External Monitor: Dell U3818DW
Connection: USB-C / Thunderbolt 3
Device: 2016 Macbook Pro touchBar

Unable to control brightness/volume of external monitor using touchbar keys on latest version. Everything works fine on version 1.1

Identical monitors cannot be distinguished

I was surprised to find that my VP2770-LED monitors supported DDC/CI; allowing your app to partially work.

However, where I have two identical monitors, it seems the app can't tell them apart. In the menu bar, it lists both the monitors. They have the same name. It doesn't matter what monitor I adjust the brightness on, it only adjusts one monitor (my primary display).

Also, the "Default" button wasn't working for me.

Let me know if there is any more information you'd like to know. Or any other tests I can do to help. Thanks for all your time and efforts on this.

Works on Dell P2715Q but not on LG IPS277

Hi,
Thank you for the great app, but a have an issue with the LG IPS277-L display. The Dell P2715Q display connected via DisplayPort works perfectly, but I can't control the brightness of the LG one (connected via HDMI). Is there anything I can do to make that one work?

Congratulations! (and a question)

Wow! your fork looks very neat!

I cannot wait for it to mature a little more and look forward to seeing the stuff you put into TODO implemented in the future :)

For now, I was wondering about how exactly I should use Karabiner Elements and its rules for MonitorControl. Should I install KE? and Then enter the URL you provide into my browser? Excuse my ignorance but could you please elaborate a little bit on how to achieve this?

Thank you so much for your help.
Best,
-a-

Where is "Donate" button?

This little app is so lovely I have just one issue with it: how can I donate a few quid for all your nice work?

Lint

  • Add SwiftLint to the project & lint + fix the entire codebase.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.