Displayflow | Universal Rust Display Controller

CLI tool to control monitor settings including ddc brightness and contrast on Windows.

View the Project on GitHub

Displayflow

🇯🇵日本語

live_displayflow.webm

Displayflow

Key Features

See it in Action 📺

DisplayFlow Showcase

Click the image above to see how DisplayFlow automates monitor switching and launches Playnite.

Quick Start: The “Snapshot” Feature

If you provide –save without a configuration string, the tool reads your current live setup and saves it exactly as it is.

  1. Manually arrange your windows/monitors in Windows Settings.
  2. Run this to save the current state as “Gaming”:
   displayflow.exe --save Gaming --hotkey

Task Format

For manual configuration or scripting, use the following colon-separated string format. Note that the Animation Direction is defined per monitor at the very end of its string. Format: ID : Width : Height : X : Y : Primary : Rotation : Freq : Brightness : Contrast : [Animation] | Field | Description | |—|—| | ID | Persistent ID (e.g., BNQ78A7 or 1). Find via –scan. | | Primary | 1 for primary monitor, 0 for secondary. | | Rotation | 0 (Normal), 90 (Portrait), 180 (Inverted), 270 (Portrait Flipped). | | Brightness | Hardware level 0-100 (via DDC/CI). | | Animation | Direction for screen_animation.exe (up, down, left, right, none). |

Examples

1. Per-Monitor Animation (The “Split” Transition)

If you have a vertical setup, you can trigger animations in opposite directions for a seamless transition effect. PowerShell Top monitor slides ‘down’, Bottom monitor slides ‘up’:

displayflow.exe "1:1920:1080:0:0:1:0:60:60:80:down 2:1920:1080:0:1080:0:0:60:70:90:up" --save Productivity

2. The “Ghost” Monitor (Soft Disable)

Completely disable a monitor by setting its dimensions to zero while keeping its ID in the config.

displayflow.exe "2:0:0:0:0:0" --save FocusMode

3. High-Performance Gaming (144Hz + Full Brightness)

Force the primary display to its max refresh rate and hardware brightness.

displayflow.exe "1:2560:1440:0:0:1:0:144:100:80" --save HighFPS --post "start steam://open/main"

Command Reference

| Flag | Effect | |—|—| | –scan | Crucial: Lists all IDs and current hardware values. | | –save | Saves the provided string (or current live state if string is missing). | | --apply-suite | Instantly restores a saved layout. | | --hotkey | Records a global shortcut (e.g., Alt+Shift+G) for the suite. | | --daemon | Starts the background service for Hotkeys and Tray-Icon. | | --silent | No console output (perfect for .bat or .ps1 scripts). |

How it works