Control external monitors and MacBook displays — adjust brightness, contrast, volume, input source, rotation, apply presets, manage schedules, and sync displays. Use when the user asks to change monitor settings, dim/brighten screens, switch inputs, activate display presets, or manage multi-monitor setups.
You control monitors using the displaybuddy CLI. The DisplayBuddy app must be running for commands to work.
Always start by discovering what displays are connected:
displaybuddy status --json
This returns a compact overview of all displays with their current values. Use the display names from this output in subsequent commands — never guess display names.
All commands support --json for structured output. Always use --json when you need to parse results.
# Compact overview table (start here)
displaybuddy status --json
# Full details for all displays
displaybuddy list --json
# Full details for one display
displaybuddy get "Display Name" --json
# Single property
displaybuddy get "Display Name" --brightness --json
Target a display by name, --uuid, --index (from status output), or --all.
# Brightness (0-100)
displaybuddy set "Display Name" --brightness 80
# Contrast (0-100)
displaybuddy set "Display Name" --contrast 70
# Volume (0-100)
displaybuddy set "Display Name" --volume 30
# Multiple properties at once
displaybuddy set "Display Name" --brightness 80 --contrast 70 --volume 30
# All displays at once
displaybuddy set --all --brightness 50
# Input source (by name or DDC code)
displaybuddy set "Display Name" --input hdmi1
displaybuddy set "Display Name" --input displayport1
displaybuddy set "Display Name" --input usbc
# Valid inputs: displayport1, displayport2, hdmi1-4, thunderbolt, usbc, usbc2
# Rotation
displaybuddy set "Display Name" --rotation 90 # 0, 90, 180, 270
# XDR/Ultra-bright (MacBook Pro only, 0-100)
displaybuddy set "Built-in Display" --xdr-brightness 50
# Control mode
displaybuddy set "Display Name" --control-mode external
# Valid modes: external, internal, software, nativelySupported, samsungSmart
# List all presets
displaybuddy preset list --json
# Activate a preset
displaybuddy preset activate "Preset Name"
# Activate with delay (seconds)
displaybuddy preset activate "Preset Name" --delay 5
# List all schedules
displaybuddy schedule list --json
# Enable/disable a schedule by UUID (or unique prefix)
displaybuddy schedule enable "uuid-string"
displaybuddy schedule disable "uuid-string"
Sync makes all displays follow one source display's brightness, contrast, and volume.
# Check sync status
displaybuddy sync status --json
# Enable sync with a display as source
displaybuddy sync enable "Display Name"
# Disable sync
displaybuddy sync disable
displaybuddy version --json
Most commands with --json print the successful payload directly, not a wrapper object.
Examples:
displaybuddy status --json prints an array of displaysdisplaybuddy get "Display Name" --json prints the display objectdisplaybuddy get "Display Name" --brightness --json prints the property value payloaddisplaybuddy version --json prints a custom object with cliVersion, appVersion, and buildNumberOn failure, the CLI prints Error: ... to stderr and exits non-zero.
"Dim everything for a movie":
displaybuddy set --all --brightness 30 --contrast 50
"Set up my coding environment":
displaybuddy preset activate "Coding"
"Switch my monitor to HDMI":
First run displaybuddy status --json to find the display name, then:
displaybuddy set "Monitor Name" --input hdmi1
"Make all monitors match my main display":
displaybuddy sync enable "Main Display Name"
"Turn brightness up a bit":
First get current value with displaybuddy get "Display Name" --brightness --json, then set a value 10-20 higher.