Local automation API 1.1

Automate brightness and blue light filtering with the Display Dimmer CLI API.

Control brightness, contrast, and screen temperature from PowerShell, Task Scheduler, Stream Deck, AutoHotkey, C# apps, and sensors. Display Dimmer handles monitor identity, DDC/CI, software dimming, and rule handoffs.

Local-only PowerShell JSON output DDC/CI + fallback

Keep control in the app

Call one command and let Display Dimmer handle display identity, DDC/CI health, gamma fallback, and live UI state.

Build real integrations

Adjust brightness and warmer screen colors from keyboard tools, scheduled tasks, Stream Deck, C# apps, and desk sensors.

Cooperate with automation

Use named sources so external controllers can stand down while schedules or app rules own a display.

Quick start

Local automation requires Display Dimmer Pro. Start the app, then open Settings > General > Advanced > Local automation > Manage... and turn on Local automation. Temperature commands require Display Dimmer 2.2.10 or later; use the CLI bundled with the running app.

1

List connected displays

DisplayDimmer.Cli.exe --list-displays

Copy a targetId. Prefer a stable dd_... target for scripts you plan to keep.

2

Set brightness for one display

DisplayDimmer.Cli.exe --set-brightness 70 --target dd_your_stable_id

Brightness changes are live-only by default. Add --save only when a script should change saved Display Dimmer settings.

3

Read state for scripts

DisplayDimmer.Cli.exe --get-state --target all --json --pretty

JSON state includes brightness, contrast, temperature, control availability, and automation ownership. Check the server's capabilities for temperature before sending temperature commands to an older app.

Practical command chooser

Use the app-owned commands for brightness, contrast, and temperature. Display Dimmer keeps its sliders, software color controls, and automation state in sync.

Brightness

Set an absolute value or adjust relative to the current value.

DisplayDimmer.Cli.exe --set-brightness 40 --target primary
DisplayDimmer.Cli.exe --adjust-brightness -10 --target dd_your_stable_id

Contrast

Change Display Dimmer's software/gamma contrast state.

DisplayDimmer.Cli.exe --set-contrast 60 --target dd_your_stable_id
DisplayDimmer.Cli.exe --adjust-contrast 5 --target primary

Blue light filtering

Choose warmer colors with approximate Kelvin input, or adjust warmth in small steps.

DisplayDimmer.Cli.exe --set-temperature 4000 --temperature-unit kelvin --target primary
DisplayDimmer.Cli.exe --adjust-temperature -200 --temperature-unit kelvin --target primary

Neutral or resume

Neutral removes the tint. Resume instead releases your manual temperature override so rules can take over.

DisplayDimmer.Cli.exe --set-temperature 0 --target primary
DisplayDimmer.Cli.exe --resume-temperature --target primary

DDC/CI or gamma route

Force the route only when a script needs a specific control path.

DisplayDimmer.Cli.exe --set-brightness 35 --brightness-mode gamma --target dd_your_stable_id
DisplayDimmer.Cli.exe --set-brightness 70 --brightness-mode ddc --target dd_your_stable_id
DisplayDimmer.Cli.exe --set-ddc enabled --target dd_your_stable_id

State and watch

Poll state once, or stream cached state changes as JSON Lines.

DisplayDimmer.Cli.exe --get-state --target all --json --pretty
DisplayDimmer.Cli.exe --watch --json

Blue light filtering from your own tools

Temperature commands control the same Temperature slider as the app. Warmer settings reduce the blue channel relative to red; neutral removes the tint. Brightness remains a separate control.

Choose your units

Native values run from -100 (warmest) through 0 (neutral) to 100 (coolest). Add --temperature-unit kelvin for 2500 to 8300 K; 6500 K is neutral. Kelvin is approximate, not a measured display temperature.

Temporary or saved

Manual temperature is temporary by default and remains your session baseline beneath later rules. Add --save to manual set/adjust commands to update the saved temperature baseline. The settings write is queued, not confirmed on disk when the command returns.

Named controllers cooperate with temperature rules independently of brightness. A brightness-only rule does not block your controller's temperature setting; a rule with temperature enabled does, even when its setting is Neutral.

DisplayDimmer.Cli.exe --set-temperature 4000 --temperature-unit kelvin --source desk-controller --target primary
DisplayDimmer.Cli.exe --update-external-temperature 4000 --temperature-unit kelvin --source desk-controller --target primary
DisplayDimmer.Cli.exe --resume-temperature --source desk-controller --target primary

The first command applies unless a temperature rule or manual temperature override is active; otherwise, it records standby intent. The second only refreshes standby intent. The third releases that source without clearing a newer controller. Named controllers cannot use --save.

Standby intent stays fresh for five seconds. A tint already applied can remain after that, but expired intent will not return after a later rule replaces it. Use explicit resume when stopping a controller. For built-in automation, see schedules and app rules.

API 1.1 adds these features without changing wire protocol 1. --api-version still prints 1; use the running server's apiRevision and capabilities in JSON state for feature discovery.

Automation handoff behavior

By default, --set-brightness acts like a manual override. That is usually what you want for a keyboard shortcut, macro button, or no-motion dimmer.

Manual override

Use --source cli when a script is intentionally taking control and should interrupt active schedules or app rules for the target.

DisplayDimmer.Cli.exe --set-brightness 45 --target primary --source cli

Cooperative external source

Use a stable source name when a sensor or helper should apply only when Display Dimmer automation is not already controlling the display.

DisplayDimmer.Cli.exe --set-brightness 45 --target dd_your_stable_id --source desk-light-sensor

Handoff-only update

Refresh a standing-by external value without moving the display or interrupting schedules and app rules.

DisplayDimmer.Cli.exe --update-external-brightness 45 --target dd_your_stable_id --source desk-light-sensor

Where the CLI fits

This page gives you the practical path into the CLI. Use GitHub for runnable examples, exact JSON fields, exit codes, and deeper integration notes.

Advanced DDC/CI and VCP commands

VCP commands are for monitor-specific DDC/CI features such as input source, monitor volume, raw hardware contrast, color presets, power mode, or usage time. VCP color presets and RGB gains are not the app's Temperature slider. Prefer normal brightness, contrast, and temperature commands unless you intentionally need a raw monitor value.

Use VCP writes carefully. VCP support and accepted values vary by monitor. High-impact writes require --force and a target that resolves to exactly one display.
DisplayDimmer.Cli.exe --list-vcp --target dd_your_stable_id --pretty
DisplayDimmer.Cli.exe --get-vcp input-source --target dd_your_stable_id --pretty
DisplayDimmer.Cli.exe --set-vcp input-source hdmi1 --target dd_your_stable_id --force

Local-only by design

The CLI sends requests to the already-running Display Dimmer app. There is no network listener. The local automation pipe is created for the current Windows user, and Local automation must be enabled from Display Dimmer before scripts can control the app.

CLI API FAQ

Is this the full CLI reference?

No. This page is the product-friendly tutorial. Use GitHub for the complete command reference, JSON fields, exit codes, VCP tables, and runnable examples.

Can it control external monitors?

Yes, when Display Dimmer detects the display. Normal brightness commands use Display Dimmer's DDC/CI-or-gamma route instead of bypassing the app state.

Can I control every display at once?

Yes. Use --target all for every connected display, or repeat --target for a specific set of displays. Use stable dd_... targets for saved scripts.

Can I use it with Task Scheduler, Stream Deck, or AutoHotkey?

Yes. Any local tool that can run a command can call DisplayDimmer.Cli.exe, including PowerShell scripts, Windows Task Scheduler, Stream Deck actions, AutoHotkey shortcuts, and small helper apps.

Does the CLI replace schedules and app rules?

No. Use manual commands for deliberate overrides, or a named source for cooperative control. Temperature commands affect temperature ownership only: brightness automation can keep running. Standby updates refresh external brightness or temperature intent without applying it.

Control your displays from your own tools

Run the commands above to verify your setup, then open GitHub for the full CLI API reference, exit codes, JSON schemas, and runnable examples.

Display Dimmer CLI documentation on GitHub