13 ms·
MonitorControl: Control external monitor brightness and volume on your Mac
- aaomidi 6y agoI'm so annoyed my OS doesn't integrate with DDC :/
- GekkePrutser 6y agoOh wow great, I hope this works for me too! I have an LG 4K screen and the LG tool to change brightness and contrast is really terrible, it has some stupid built-in fake Picture in Picture mode which is constantly flashing red borders around the screen when you use it. And the UI is really bad and slow. This little menubar control looks like just what I wanted. Edit: Yes it works great! On my LG24UD58. Perfect! Unfortunately it doesn't seem to work with my Eizo L568 but that's ancient. And I think it had some special USB-based control method. But really glad to be able to get rid of the LG software now. PS: You have to enable the contrast with a tickbox, otherwise that slider is not shown.
- k0stas 6y agoI use Brightness Sync (https://github.com/OCJvanDijk/Brightness-Sync https://github.com/OCJvanDijk/Brightness-Sync) for my external LG 5K screen attached to my iMac. The iMac light sensor controls the brightness of both monitors automatically. You can even insert a fixed offset to match the absolute brightness of both monitors.
- GekkePrutser 6y agoOh thanks as well! But my Mac has no brightness sensor (it's a mini). I use the screen with my PC and a raspberry pi as well so I couldn't use an iMac, though I have one at the office (if I ever go back there...). It's really a shame they got rid of the target display function, this would have been perfect :(
- leo150 6y agoHappy to see this app mentioned on HN. If you have Swift experience please check the issues of the repo. Need assistance with the identical monitors issue, it’s there for two years already.
- alin23 6y agoYou could try Lunar[1] for that issue. It supports any number of monitors and contains a workaround that seems to also work with multiple identical monitors that can't be uniquely identified through their EDID data. There are still some issues with some multiple port docks but so far that only turned out to be hardware related. I'm the developer of Lunar so feel free to ask any questions about it. [1] https://lunar.fyi https://lunar.fyi
- nico_h 6y agoWorked over VGA with my DELL monitor and MacBook Air (both from 2012). Where has this been all my life! I didn't even know it was a thing and thought there was a special chip in the Apple screens to be able to control your screen from your computer.
- alin23 6y agoIf this works for you, please also give Lunar[1] a try! It's free, and has a handy mode where it can sync your already adaptive built-in brightness to the external monitors. I'm the developer of Lunar so feel free to ask any questions about it. [1] https://lunar.fyi https://lunar.fyi
- etaioinshrdlu 6y agoI have often wondered if you could exploit a monitor over the DDC bus sending i2c commands. There have just got to be memory corruption bugs in the display controller code. They probably also typically have some flash memory, so perhaps one could permanently reprogram a monitor after the exploit?
- gardaani 6y agoCould monitors be malicious and exploit vulnerabilities in computers by sending corrupted data over the DDC bus? The crazy thing is that computers send +5V over the DDC bus to the monitor so that they are able to read data even if the monitor is powered off and not connected to the mains! So, simply connecting something to the computer's display port could be enough.
- Zenbit_UX 6y agoThere's already at least one exploit Ive heard of in which the monitor was the attack vector and was used to selectively alter screen pixels.
- blep-arsh 6y agoYes. Dell U2414 (afair) could be updated via DDC and the firmware could draw over the input image.
- fwip 6y agoI haven't had my office monitor in a while, but from what I remember, ctrl+brightness button would change the external screen's brightness. This might not work with all monitors.
- anoncareer0212 6y agodid they disable this in OS X? Used to work fine for me, but I gave up buying $2,500 iPads after the keyboard debacle and ensuing 1984 treatment
- kevinherron 6y agoIt's available on the TouchBar control, not sure about elsewhere.
- p_l 6y agoDDC was afaik never officially supported, and whatever they did with the connection path means that there's enough reports of "crash whole OS trying to change brightness of display"
- morsch 6y agoOn linux: `ddcutil setvcp 0x10 + <value>` to increase brightness (and - <value> to lower it). Ymmv.
- garaetjjte 6y agoAlternatively, you could use kernel module to expose it as standard backlight control: https://milek7.pl/ddcbacklight/ddcci_bl.c https://milek7.pl/ddcbacklight/ddcci_bl.c insmod ddcci_bl.ko modprobe i2c-dev echo ddcci_bl 0x37 > /sys/bus/i2c/devices/i2c-2/new_device (replace i2c-2 with bus number for your monitor)
- voltagex_ 6y agoDisabling Secure Boot so you can have control of your monitors seems very 2020.
- vladvasiliu 6y agoThat's not necessary. There is ddcci-dkms which can be built against the running kernel and signed as all the other modules. I use it on both Ubuntu (via shim + grub) and Arch (via direct boot). This allows controlling the screen brightness from the usual places (gnome power menu thingy or via light for the i3 crowd). See the Arch Linux Wiki for more info [0]. Arch : ddcci-driver-linux-dkms (aur) Ubuntu : ddcci-dkms [0] https://wiki.archlinux.org/index.php/Backlight#External_monitors https://wiki.archlinux.org/index.php/Backlight#External_moni...
- virtualwhys 6y agoAn eye saver with this ultra lightweight 16" USB-C travel monitor I picked up. On resume from suspend the monitor always dims down to some ridiculously low setting, and without `ddcutil` I'd have to manually adjust the brightness via hardware toggle. As a workaround for the limitation of the monitor I just have a bash script that invokes `ddcutil` on resume from suspend - wonderful :)
- neal_jones 6y agoThis works with my Caldigit dock and Dell monitors and I love it. No one else in my house cares though.
- willdub 6y ago"No one else in my house cares though." This is my favorite comment on hn.
- 0xCMP 6y agoI love this thing. It only seems to work over DisplayPort cables for me. HDMI doesn't work. I'm using a MBP mid-2014. Saved me from buying a new monitor or something silly like getting an iMac. Seriously weird why they don't just support DDD/CI natively.
- aaronmiler 6y agoIt does work over USB-C on 2019/2020s
- 0xCMP 6y agoThat's good to hear. If/when I get forced into a new MBP I can look forward to that working at least.
- pottertheotter 6y agoWorks for me over HDMI. I have a hackintosh and an LG 34" ultrawide.
- hysan 6y agoGreat codebase. I stumbled on this while trying to figure out how to programmatically control screen brightness in a macOS app. Turns out that this is far more difficult than imagined. Even controlling just the built-in screen, something I assumed would be included in Apple's libraries, was not included. The source code in MonitorControl is very well written and commented and helped me catch the mistakes I was doing in my very hacky solution.
- mgsk 6y agoDoing anything on macOS is more difficult than I imagine it to be. For example, writing an alt-tab-type app, enumerating the list of apps and their windows. Good luck.
- qmmmur 6y agoI really would love something like rofi for macos
- jamesgeck0 6y agoI think a combination of Alfred and Hammerspoon could get you most of the way there?
- bluedino 6y agoYou can get the dock icon (app) list pretty easily, along with their windows https://github.com/robilic/DockHand https://github.com/robilic/DockHand
- wallflower 6y agoThe famous Dropbox Mac finder hack. It may have been mythologized a little, as Rajiv Eranki was probably the genius hacker who figured it out. > Here’s that rare Steve Jobs story, one that’s never been told, about the company that got away. Jobs had been tracking a young software developer named Drew Houston, who blasted his way onto Apple’s radar screen when he reverse-engineered Apple’s file system so that his startup’s logo, an unfolding box, appeared elegantly tucked inside. Not even an Apple SWAT team had been able to do that. > Rajiv Eranki (early employee, no longer at Dropbox) did much of the reverse-engineering required to get the our file overlay icons onto files in the Finder, and also to get us into context menus. https://www.forbes.com/sites/victoriabarret/2011/10/18/dropbox-the-inside-story-of-techs-hottest-startup/ https://www.forbes.com/sites/victoriabarret/2011/10/18/dropb... https://www.quora.com/Many-articles-about-Drew-Houston-say-that-he-reverse-engineered-Apple’s-file-system-so-that-his-startup’s-logo-an-unfolding-box-appeared-elegantly-tucked-inside-what-does-this-mean https://www.quora.com/Many-articles-about-Drew-Houston-say-t...
- deleted 6y ago[deleted]
- throwanem 6y agoFor a command-line option, ddcctl (https://github.com/kfix/ddcctl https://github.com/kfix/ddcctl) works nicely in my experience, with a Dell Ultrasharp connected via USB-C. I have a script hacked together to fetch the internal display's brightness once a minute and apply it, with a scaling factor, to the external, so that they're both effectively controlled by the laptop's ambient light sensor. It's really nice for working in a room with lots of windows. A more batteries-included alternative, which appears to also provide brightness sync, is Lunar (https://lunar.fyi/ https://lunar.fyi/). I haven't had a chance to try it, but the Github repo makes it look pretty solid.
- stevenguh 6y agoI used lunar on a daily basis. It syncs the brightness of my display with my MacBook Pro display pretty well. Give it a try.
- rolleiflex 6y agoI did recently write a script to read the room brightness value from a Hue Light Sensor and adjust my external monitor brightness, with some smoothing applied. It was triggered by being stuck at home like everyone else. Funny how similar thought processes can be sometimes. I’m now up to motorising my blinds so that the light sensor also controls the blinds to keep the room at the same light level through the day.
- throwanem 6y agoNot all that similar, I think. I did mine precisely so I can always keep the blinds open and also not get eyestrain. I miss the roof deck at work. This time of year, weather and meeting schedule permitting, I'd typically spend somewhere between four and sixteen hours a week up there, enjoying the heat and watching ospreys, gulls, and the occasional peregrine while I waited for builds or test runs or whatever. I think like many folks lately, I seem to have developed a touch of agoraphobia this year. But I need to at least be able to see outside, or I start to forget I exist.
- tta 6y agoThanks for the recommendation! I use ddcctl + an Alfred workflow[1], but Lunar looks much nicer! [1]: https://storage.googleapis.com/ta-share/2020-07-10.11.01.02.png https://storage.googleapis.com/ta-share/2020-07-10.11.01.02....
- crazygringo 6y agoWow, I didn't know this was even possible. It says the controls operate via DDC [1]. How do you know if your monitor, television, or project supports this? And does it depend on the connector used? (HDMI, DisplayPort, VGA?) Does this work for most display peripherals, only newest/expensive ones, or something in between? [1] https://en.wikipedia.org/wiki/Display_Data_Channel https://en.wikipedia.org/wiki/Display_Data_Channel
- jonpurdy 6y agoI also have absolutely no idea this was possible. Just tested it on my 2015 MBP with relatively cheap AOC 27" 4K and DisplayPort and it works perfectly!
- seanalltogether 6y agoSame. It looks like most of the heavy lifting comes from this library. There's a lot of commands available. https://github.com/reitermarkus/DDC.swift/blob/master/DDC/DDC.swift https://github.com/reitermarkus/DDC.swift/blob/master/DDC/DD...
- garaetjjte 6y agoIt works for virtually all monitors on HDMI/DisplayPort/VGA. I guess not for TVs. More specifically it is called MCCS: https://milek7.pl/ddcbacklight/mccs.pdf https://milek7.pl/ddcbacklight/mccs.pdf
- knr2345 6y agoWorks with my Samsung 4K TV. I also use a display port to hdmi adapter to enable 4k @ 60 hz on the TV.
- will_raw 6y agoSometimes I just wonder why does apple don't provide such a basic features/necessities.
- jakear 6y agoIf you have a touch bar it does, in my experience. Tap the brightness button to open up controls for each monitor.
- vladvasiliu 6y agoI don't have a touchbar mac to test, but does it work with external non-apple displays? Via Karabiner you can configure keys to change the external display brightness. Works great on a Thunderbolt Display. Completely ignores my Dell / LG. The main reason why I think this wouldn't work is because in the display properties there's no brightness slider for non Apple external displays. There is one for Apple displays.
- jakear 6y agoYep, works with my external non-Apple display, LG.
- thehesiod 6y agoI have touchbar, it only sets brightness of laptop, not external
- wayneftw 6y agoWho needs basic features when you have marketing to convince everyone you’re already perfect in every way?
- Animats 6y agoAw. I was expecting this would involve a phone app and a service you sign up for.
- minikites 6y agoThere's software that does this on Windows too: https://clickmonitorddc.bplaced.net/ https://clickmonitorddc.bplaced.net/
- sotsoguk 6y agoFantastic program. Not the nicest UI but very capable
- dawnerd 6y agoNot if only someone could figure out how to make external monitors on mac actually work consistently. Macos still tends to not pick up the correct refresh rate or even the monitor itself.
- toyg 6y agoWorks great with my Iiyama ProLite 82888UHSU / MBP 15" late 2016 / CalDigit dock. Nice one!
- jimmcslim 6y agoWhat are the keys anyway? I'm using a WASD Code Tenkeyless keyboard so only have F1 through F12.
- divbzero 6y agomacOS should ship with this feature by default.
- wu_tang_chris 6y agoOMG, thank you so much danso and all the developers of this app! This is the biggest inconvenience and overall PITA docking my MBP, it annoys me constantly on a daily basis. just tried it out, it's like my prayers were answered!
- syntaxing 6y agoThis is too awesome! Adjusting the brightness of my monitor has been a pain especially at night since WFH. Does this work with dynamic lighting?
- alin23 6y agoYou could try Lunar[1] for that. It syncs your builtin monitor brightness to all your external monitors. As long as you have adaptive brightness enabled on your Macbook, the external monitors will also be adaptive. [1] https://lunar.fyi https://lunar.fyi
- Zaheer 6y agoDoes anyone have trouble with their Macbook recognizing an external display? I have a new 2020 Macbook Pro and it struggles to recognize my Samsung display. I often have to reboot the Mac for it to be recognized.
- 0x202020 6y agoI’ve got issues where macOS sees both monitors but won’t send output to both every time I come out of sleep. Like one of the displays will turn on like it has signal, then hang for a second and go back to sleep, repeat. I use a program called disable monitor, which shows all the profiles for the display. For some reason when one doesn’t connect it goes into the first profile for the resolution/refresh rate/color depth, then I manually select the third and it connects right away
- vladvasiliu 6y agoI wonder wether there's some problem with the usb-c alternate modes and their implementations / drivers. Below are a bunch of my experiences with this which shows that behaviours are all over the place which kind of excludes an outright broken OS or piece of equipment. To me it looks much more like a compatibility issue. I don't own a usb-c mac, but I've never had any problems whatsoever with my 2013 retina, always works perfectly even with 4k@60Hz screens. I have a desktop PC which exhibits the same kind of weird behaviour you have. It has a thunderbolt 3 / usb-c / dp connector which is downright awful. I've managed to connect an Apple thunderbolt display to it with official tb2 -> tb3 adapter, it works well most of the time. Put the computer to sleep though and the screen never comes back on. Sometimes it doesn't detect the USB ports on it either. Mostly works if I force the thunderbolt mode to DisplayPort only in the bios. I've next connected a regular usb-c monitor to it (DP alternate mode + usb2 for peripherals). Works great in bios. Mostly works on Linux. On windows it turns off when getting to the login screen. I don't know how, but I've managed to get it to work exactly once. When I turned the computer back on the next morning, it was again off on the windows login screen. The monitor IS detected, it shows up in the Display Preferences if I connect it to both usb-c and display port. It just won't turn on. On Linux, it kinda works. I would say there's a 50/50 chance it won't detect it at 60 Hz. Sometimes, if it works at 60Hz, if the display goes to sleep it won't come back on at 60Hz. I guess at least there is some output, so it's got that going over windows. I found an option on the bios to enable "high speed display output". No idea what exactly that means, it didn't do anything. This same screen works perfectly with a usb-c (no thunderbolt) laptop on linux. Never had any issue, always detected as 4k@60Hz. The same monitor and same PC over DP: no problem.
- muska3 6y agoFor those on Windows there's Twinkle Tray, works remarkably well. It has the ability to set timers, which I set to dim my monitor at night and increase the brightness during the day.
- voltagex_ 6y agoI have 2 Dell monitors and I haven't been able to get this to work either on the built-in Intel graphics or with HDMI plugged into an AMD card.
- muska3 6y agoMy setup is an Asus monitor connected to a usb hub using HDMI, and it works wonderfully. I wonder what's causing issues in your chain.
- thesandlord 6y agoI just tried this with two Dell U2711s connected via DisplayPort to a USB-C adapter[0] and everything is working really well! I have a laptop with a Ryzen 3 and a 1660ti, so it might be the Nvidia graphics that is enabling this. [0] https://smile.amazon.com/Cable-Matters-Multiport-DisplayPort-Ethernet/dp/B0746NKVBN/ref=asc_df_B0746NKVBN https://smile.amazon.com/Cable-Matters-Multiport-DisplayPort...
- nghiatran_feels 6y agoI use External Display Brightens app (https://github.com/fnesveda/ExternalDisplayBrightness https://github.com/fnesveda/ExternalDisplayBrightness) and it seems to be easier to use
- alin23 6y agoIf you like keyboard shortcuts you might like to give Lunar[1] a try. It also has shortcuts for changing contrast and volume of the monitor as well as do that automatically for you based on the builtin monitor brightness or the sun elevation in your location. [1] https://lunar.fyi https://lunar.fyi
- chrismorgan 6y agoI believe that the difficulty of controlling external monitor brightness is a significant factor in almost all people running external displays too bright (often much too bright). Because the standard software that comes out of the box doesn’t let you adjust the brightness of external monitors in any operating system I know of, and adjusting brightness by pressing buttons on the monitor’s on-screen display is invariably a pain. Windows has two completely different APIs for adjusting screen brightness: one seems to only work on internal displays, the other seems to only work on external displays. I say “seems to” because they don’t document these facts, this is just what I observe by fiddling with the APIs. And only the first one is exposed anywhere in the UI: in Settings → System → Display (where you change the screen resolution and such) it lets you change the brightness of an internal display, but says something like “you can’t adjust the brightness of this device” for external monitors. Laptop brightness keys (what Linux calls XF86BrightnessUp and XF86BrightnessDown) can’t be remapped by any means I know of. I don’t know of any way of being notified when the internal display brightness changes, either. I think you can poll the value, though it’s three years since I prodded this stuff and my memory is vague. Even so, it’d always be a delayed reaction. Kinda wish I were back on my last laptop where I used Arch Linux + i3 and handled XF86Brightness{Up,Down} myself. (That brings me to my second major annoyance about built-in monitor brightness control software: stepping by a linear 10% the whole way is stupid; something like a logarithmic scale is much more sensible. The difference between 1% and 10% is at least as important in low lighting as the difference between 10% and 50%. I wrapped xbacklight to make it logarithmic on Arch, but I can’t do that on Windows, where the keys just jump by 10%. Similar deal with phone brightness, the difference two millimetres makes at the left end of the scale is more than the whole right hand half of the scale. Who on earth thought linear brightness was the right thing? Do they know nothing about human perception of brightness? Why is this obviously-badly-wrong practice universally adopted?) What would be rather nice would be the ability to calibrate internal and external displays to match, so that the brightness of connected external displays could match my internal monitor immediately, following my chosen curve. As it is, I use ScreenBright and script it so I can do both my external displays at once. (Now, I could reimplement the needed functionality from the relevant API in a short time, but ScreenBright does the job so I don’t bother.) I tend to type `b 20` in the mornings, sometimes `b 40` in the afternoons, and `b 0` in the evening. Seldom do I want to go past 40%. As I said, most people run their external monitors too bright, often much too bright.
- pantulis 6y agoVolume control is the killer feature for me.
- lucaspiller 6y agoOn Linux you can do the same with ddccontrol. I wrote an article last year explaining how I have my monitor automatically dim at night, in combination with Redshift: https://www.stackednotion.com/blog/2019/05/07/automatically-dimming-your-monitor-at-night/ https://www.stackednotion.com/blog/2019/05/07/automatically-...
- kosma 6y agoI dropped the author ten bucks as a thank you. This is exactly the program that I needed.
- turdnagel 6y agoHow? Trying to do the same thing.
- turdnagel 6y agoI would love to be able to donate to continued development & support of this software - it's great! There doesn't appear to be a Patreon/tip jar but I'd love to contribute if there is one.
- farns 6y agoThis works great in my setup: MBP 15-Inch, 2018, macOS Catalina 10.15.5, Installed via Homebrew Cask, LG 34" 5k2k 34WK95U-W via Thunderbolt 3, Sonnet Echo 11 Thunderbolt 3 Dock, Dell U3417W 34" via HDMI via Echo 11 Dock. Volume and brightness work on both displays. Contrast only works on the Dell (after enabling in the preferences) - no big deal. I can adjust brightness on both displays at the same time via the keyboard... that is spectacular. Volume controls work as expected - finally!! Fantastic!!
- perryizgr8 6y agohttps://twinkletray.com/ https://twinkletray.com/ Brilliant app that does the same for windows 10.
- igornadj 6y agoMight be useful to some: LG Ultrafine 4k/5k brightness can be controlled with the touch bar. Press the Brightness icon on the touch bar and two sliders show up, one for your mac and one for the LG.
- xenonite 6y agoThere also is https://github.com/Bensge/NativeDisplayBrightness/ https://github.com/Bensge/NativeDisplayBrightness/ (I use it on macOS 10.11 with an external Dell P2415Q, with Fn+F1 and Fn+F2)