Install
openclaw skills install mac-display-controlStep-by-step guide for controlling external display or monitor settings on a Mac without third-party GUI apps. Covers Apple Silicon and Intel Macs, all major display brands (LG, Dell, BenQ, Samsung, ASUS, etc.), all connection types (USB-C, DisplayPort, HDMI, DVI), and a software fallback for displays that don't support DDC/CI. Controls include brightness, contrast, volume, input source switching, color temperature, power, and more. Use this skill whenever a user wants to control external display brightness, volume, contrast, color, input, or any other setting via the command line or keyboard shortcuts on macOS.
openclaw skills install mac-display-controlmacOS doesn't natively expose controls for third-party displays, but most modern displays support DDC/CI — a protocol that lets software send commands directly to display hardware: brightness, contrast, volume, input source, color temperature, power, and more.
This skill is split into a setup section (below) and per-control reference files. Once set up, jump to the reference file for the control you need.
| File | Controls covered |
|---|---|
references/brightness.md | Brightness — scripts, keyboard shortcuts, cron presets |
references/contrast.md | Contrast — tips for color-mode lock |
references/volume.md | Display speaker volume, mute toggle |
references/input-source.md | Input switching, KVM setup, per-brand codes |
references/color-temperature.md | Color presets, RGB gain, night/day mode scripts |
references/power-and-misc.md | Power on/off, rotation, factory reset, capability probing |
uname -m # arm64 = Apple Silicon | x86_64 = Intel
Or: Apple menu → About This Mac.
| Cable | Apple Silicon | Intel |
|---|---|---|
| USB-C / Thunderbolt | ✅ Full DDC support | ✅ Full DDC support |
| DisplayPort | ✅ Works | ✅ Works |
| HDMI (built-in port) | ⚠️ Blocked on M1/M2 Mac Mini, M1 MBP, Mac Studio | ✅ Works |
| HDMI via Thunderbolt adapter | ✅ Usually works | ✅ Works |
| DisplayLink dock | ❌ No DDC | ❌ No DDC |
If you're on Apple Silicon with HDMI and can't switch cables → jump to Software Fallback.
m1ddcbrew install m1ddc
m1ddc display list # your display should appear here
ddcctlbrew install ddcctl
ddcctl -d 1 -p 1 # probe display 1 — lists supported controls
Homebrew not installed?
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Verify DDC is working before scripting anything:
# Apple Silicon
m1ddc set luminance 30 # screen should visibly dim
m1ddc set luminance 80 # screen should brighten
# Intel
ddcctl -d 1 -b 30
ddcctl -d 1 -b 80
No change? → See Software Fallback below.
Multiple displays? Target a specific one:
m1ddc display list # find index
m1ddc display 2 set luminance 60
ddcctl -d 2 -b 60 # Intel equivalent
All controls work as one-line shell commands. Create a ~/scripts/ folder
and save scripts there so Automator, cron, and keyboard shortcuts can call them.
mkdir -p ~/scripts
Always use full binary paths in scripts — Automator and cron don't load your shell PATH:
/opt/homebrew/bin/m1ddc/usr/local/bin/ddcctlSee each references/*.md file for ready-to-paste scripts per control.
Make scripts executable after creating them:
chmod +x ~/scripts/*.sh
Works for any script. Do this once per action you want to bind to a key.
/Users/yourname/scripts/brightness-up.sh)⌃⌥↑)If the shortcut doesn't fire: System Settings → Privacy & Security → Automation → grant access.
Use cron to switch display settings automatically at certain times:
crontab -e
# Day mode at 8am
0 8 * * * /Users/yourname/scripts/day-mode.sh
# Night mode at 9pm
0 21 * * * /Users/yourname/scripts/night-mode.sh
See references/color-temperature.md for ready-made day/night scripts.
If your display doesn't respond to DDC (TVs, budget displays, DisplayLink docks), use macOS Gamma table control to dim the image in software:
# Set brightness to 60% (range: 0.0–1.0)
osascript -e 'tell application "System Events" to set brightness of (first screen of (get every screen)) to 0.6'
As a script (~/scripts/brightness-soft.sh):
#!/bin/bash
# Usage: brightness-soft.sh 0.6
osascript -e "tell application \"System Events\" to set brightness of (first screen of (get every screen)) to ${1:-0.7}"
⚠️ Software dimming changes appearance only — no power saving, slight colour shift at low values. Hardware DDC is always preferable when available.
| Symptom | Fix |
|---|---|
m1ddc display list returns nothing | Must use USB-C; HDMI blocked on M1/M2 Mac Mini |
| Display found but control has no effect | DDC/CI may be off in OSD; or Dynamic Contrast is on |
| Wrong display changes | Use m1ddc display 2 … or ddcctl -d 2 … |
| Command not found in Quick Action | Use full path: /opt/homebrew/bin/m1ddc |
| Shortcut doesn't fire | System Settings → Privacy & Security → Automation |
| No DDC at all | Use Software Fallback (osascript gamma) |
m1ddc (Apple Silicon): https://github.com/waydabber/m1ddcddcctl (Intel): https://github.com/kfix/ddcctl