Keep control in the app
Call one command and let Display Dimmer handle display identity, DDC/CI health, gamma fallback, and live UI state.
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.
Call one command and let Display Dimmer handle display identity, DDC/CI health, gamma fallback, and live UI state.
Adjust brightness and warmer screen colors from keyboard tools, scheduled tasks, Stream Deck, C# apps, and desk sensors.
Use named sources so external controllers can stand down while schedules or app rules own a display.
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.
DisplayDimmer.Cli.exe --list-displays
Copy a targetId. Prefer a stable dd_... target for scripts you plan to keep.
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.
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.
Use the app-owned commands for brightness, contrast, and temperature. Display Dimmer keeps its sliders, software color controls, and automation state in sync.
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
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
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 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
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
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
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.
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.
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.
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.
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
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
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
This page gives you the practical path into the CLI. Use GitHub for runnable examples, exact JSON fields, exit codes, and deeper integration notes.
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.
--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
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.
No. This page is the product-friendly tutorial. Use GitHub for the complete command reference, JSON fields, exit codes, VCP tables, and runnable examples.
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.
Yes. Use --target all for every connected display, or repeat --target for a specific set of displays. Use stable dd_... targets for saved scripts.
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.
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.
Run the commands above to verify your setup, then open GitHub for the full CLI API reference, exit codes, JSON schemas, and runnable examples.