BetterDisplay - A MacOS Lifesaver

2024-07-21 - Chris Kephart

BetterDisplay is a free display management app for MacOS that extends your built in Mac screen functionality and allows you to control external monitors. It comes with a nice user interface and CLI, fixes some issues with Mac displays and makes your Mac experience better.

I love MacOS generally, especially as Windows has gone downhill over the years, but there are a few definite pain points related to displays that I have nearly eliminated with just one app- BetterDisplay. This is not paid or affiliated, just high praise and a setup tutorial. Each of the uses below is worth the app individually to me. Some aspects may require the paid version, but most should be available in the free one. I've also included some bonus display related apps at the bottom that I use in tandem for the ultimate experience.

Here is what I use BetterDisplay for:

  • Fixing the infernal external monitor flickering issue on Apple Silicon processors (GPU dithering).
  • Arrange my external monitors exactly in the same place every time (mainly after restarting) in 1 click.
  • Control external monitor settings without touching them or using menus via DDC/CI
  • Making the display brighter and darker than the normal range for bright days and night.

Fixing External Monitor Flickering

If you haven't experienced this behavior with an Apple Silicon device, consider yourself lucky. Myself along with several others online reported flickering with external monitors on M series Apple Devices (iPads included) which is distracting and hurts the eyes. This was seen most commonly on darker colors all across the system, and no real fix was discovered until I discovered the answer- GPU dithering within BetterDisplay! It was confirmed on multiple devices and replies to my forum post that this works. Toggling this option on and off per external display turns the flickering on and off at will. When I discovered this, I was ecstatic, finally free from the flicker. This alone has been one of the most impactful changes on my entire MacOS computing experience, as I can now work distraction and eye-strain free thanks to BetterDisplay (and no thanks to Apple, who did not fix this for years and still may not have!).

Arrange External Monitors In 1 Click

I have had mixed experiences with my Mac screens losing their place after a restart, but my M2 Pro MacBook will always reset the display configurations after any shutdown. This gets annoying, as it takes a minute to navigate the mouse on incorrectly configured screens and arrange them in settings. I also use a separate app called DisplayMaid to arrange my app windows to where I like them with a shortcut, but for my 3 screen setup at my desk, any slight deviance in the positions will throw this off and have windows sit barely outside of the screen bounds. The solution has been using Shortcuts (the built in app) and BetterDisplay (specifically BetterDisplayCLI) to arrange them exactly how I like in 1 click for each of my unique setups, and also ensure the GPU dithering is off to prevent flickering. Here is how that is done:

  • Set your screens in the positions you want them.
  • For each display, run this command to find out the current placement:
    • /Applications/BetterDisplay.app/Contents/MacOS/BetterDisplay get -name="DisplayName" -placement
    • The DisplayName should be what is listed here, for example -name="Built-in Display":
    • image
    • Record what the value is for each one.
    • Open Shortcuts on Mac and create a new one. Add a "Run Shell Script" action.
    • Here is my script that I use as a full example:
# Set the full path to the betterdisplaycli executable
betterdisplaycli_path="/Applications/BetterDisplay.app/Contents/MacOS/BetterDisplay"

# Set the display positions
"$betterdisplaycli_path" set --name="Built-in Display" --main=on
"$betterdisplaycli_path" set --name="Built-in Display" --placement="0x0"
"$betterdisplaycli_path" set --name="PA247CV" --placement="-1056x-1080" || true
"$betterdisplaycli_path" set --name="DELL P2419HC" --placement="864x-1080" || true

# Turn off GPU dithering for external monitors
"$betterdisplaycli_path" set --name="PA247CV" --gpuDithering=off || true
"$betterdisplaycli_path" set --name="DELL P2419HC" --gpuDithering=off || true
  • This sets this arrangement nearly instantly from any current positions:
    • image
    • Note the numbers: 1056 and 864 both add up to 1920, which is the width of each monitor. This may require a bit of math to get exactly centered as I have done (my manually set coordinate outputs were slightly off from this), but you can also just set it manually in that dialog and use those positions.
    • The monitor at 0x0 is my main one and I recommend putting it first in the script. I'd also set it as the main although this may be redundant.
    • Due to how scripts work in shortcuts, I have found this path variable method to work most consistently. There is a betterdisplaycli install from Homebrew, but that also requires the same path variable setup to work here.
    • The GPU dithering part applies the fix each time, as it may get reset if the monitor changes ports.
    • You can change any other settings you'd like, such as setting brightness or anything else supported by the tool and your monitor.
    • || true prevents a command failing from stopping the rest of the shortcut from executing in the case that an external monitor isn't available for example. It is not required but recommended for anything that may change.
  • To get DisplayMaid to set my app window positions back to default after the display arrangement, I have the bottom part of this shortcut, and the app is set to arrange them on open. I could not find a way to send a keypress shortcut to the program otherwise, and this works well enough.
    • image While this may seem a bit involved for something that is an annoyance built into MacOS, you only need to set it up once per setup and it has saved me lots of time and the annoyance of setting screen and window positions how I want them every time I restart.

Controlling External Monitor Settings via DDC/CI

As someone who mixes and matches monitors between brands and has a few desk setups, one annoyance that I have no longer dealt with is reaching under my monitors to use an awkward joystick, or accidentally moving them by pressing buttons on the front / sides. This feels like the difference between rolling up your car windows manually, and pressing a button, I can never go back. DDC/CI support and values used vary somewhat by monitor manufacturer, but most have basic support. One super nice feature is that you can send the same commands to multiple monitors at once, saving the need to touch them at all. You may need to look up commands specific to your monitor or play with different values, but you are able to control any of the following from the app, command line or shortcut as we did above:

  • Brightness
  • Input select
  • Volume
  • Picture settings
    • Contrast
    • Colors
  • Power on and off
  • Much more, the full list is here! Some monitors (In my experience Asus) will even allow you to change these settings when another input is selected, such as changing the brightness for a device like a game console and changing the input back to your Mac later.

Side note: A similar tool exists for Windows, ControlMyMonitor from NirSoft which is free and includes a similar feature set to BetterDisplay's DDC/CI controls with a complete focus on these commands. It can be used via the GUI or command line to set similar brightness or other control shortcuts from within Windows.

Extending the Display Brightness Above and Below Standard

The ability to make my MacBook screen brighter than the max standard brightness has allowed me to work outside with sunglasses on with no issues (except maybe the screen getting hot after a while). This uses the high dynamic range of the screen to boost brightness of normal content for working, and it is an excellent addition to my workflow. I also find the opposite to be great: This allows screens (built in and external) to get darker than the minimum brightness setting normally by using a mix of hardware brightness control and digital methods to darken the content onscreen. This makes working late into the night or checking something quickly in the dark a breeze, and I find myself consistently reaching for the extra brightness notches on both ends of the spectrum this provides.

With the extended dynamic range you may need to use different values than 100% for setting your monitors to the same brightness, as the BetterDisplayXDR 81% seems equivalent to hardware 100%. The default XDR preset uses 100% to represent the max hardware and 150% is the max extended. I use the BetterDisplayXDR profile, so I use the following shortcut to set all of my screens to be the same brightness (I included all monitors from all setups to have only 1 script):

# Set the full path to the betterdisplaycli executable
betterdisplaycli_path="/Applications/BetterDisplay.app/Contents/MacOS/BetterDisplay"

# Set the display brightness per display
"$betterdisplaycli_path" set --name="Built-in Display" --brightness=.81
"$betterdisplaycli_path" set --name="PA247CV" --brightness=1 || true
"$betterdisplaycli_path" set --name="DELL P2419HC" --brightness=1 || true
"$betterdisplaycli_path" set --name="27GN7" --brightness=1 || true
"$betterdisplaycli_path" set --name="VG275" --brightness=1 || true

Bonus: DisplayMaid, Snap, TopNotch and Magnet

While I'm covering display related tools for MacOS, I figured I'd shout these out here as well as these all add up to a flawless experience for me on Mac.

DisplayMaid

As mentioned above, I use DisplayMaid to arrange my windows into saved positions that I have at my workspace. This workflow saves me a few minutes on average when restarting my computer. I just open all apps I use, connect to my dock / monitors, run the shortcut and everything is where I need it to be every time.

Magnet

There are alternatives to Magnet such as Rectangle which are free, but I have only used Magnet as my window snapping tool of choice on Mac, similar to the feature on Windows. I got this app day one of using Mac years ago and have not looked back.

TopNotch

I no longer use this app as I use one of the built in Apple video backgrounds which is nearly black at the top near the menu bar section, but if the notch on the mac screen bothers you you can hide it cleanly with this tool and keep your custom desktop below. (BetterDisplay has an alternate notch hiding method which lowers overall screen real estate).

Snap

Snap can be used to show and hide certain apps with a shortcut press. I find this to work nicely on a single screen setup, where I can manage which apps I have pulled up with this, the sizing with magnet and save positions with DisplayMaid. I have apps bound to Option and the number keys, as I use this in tandem with the Chrome shortcut of Cmd and the number keys to access that numbered tab. You can get very quick at switching apps with no animations or gestures needed.

In Review

While I have expressed some frustrations with certain parts of Mac's display handling (which are valid complaints to have) I do believe that these tools have fixed several of my biggest pain points and I have saved tons of time and effort. BetterDisplay has a free and paid version, and while the free version has many of the features available, I highly suggest supporting them and getting the full version. This app is a lifesaver, especially given the eye strain and flicker issues it managed to solve for myself and others before Apple could. It is $18 at the time of writing, but you can do most of this in the free version. I hope this helps improve your MacOS experience and saves you time and effort. Please let me know if you do anything cool on top of this or have questions, suggestions or improvements, I'd love to hear them.