|
| 1 | +# Roadmap |
| 2 | + |
| 3 | +PowerShell/WPF utility for DDC/CI monitor control — brightness, contrast, color temp, input switching, RGB gain, gamma, VCP exploration. Roadmap prioritizes tray mode, hotkeys, and multi-GPU monitoring. |
| 4 | + |
| 5 | +## Planned Features |
| 6 | + |
| 7 | +### System Tray Mode |
| 8 | +- Persistent tray icon with brightness slider popup (like Twinkle Tray) |
| 9 | +- Per-monitor unison group / link mode |
| 10 | +- Auto-hide main window to tray on minimize |
| 11 | +- Tray-click cycling through saved profiles |
| 12 | + |
| 13 | +### Hotkeys & Automation |
| 14 | +- Global hotkey registration (RegisterHotKey WinAPI) — brightness up/down, input switch, profile cycle |
| 15 | +- Per-application profile switching (monitor foreground window exe → apply profile) |
| 16 | +- Scheduled profile switching (sunrise/sunset via SunCalc, or explicit times) |
| 17 | +- Idle-dim on inactivity (GetLastInputInfo polling) |
| 18 | + |
| 19 | +### Display Controls |
| 20 | +- Extended VCP set: Gamma (0x72), OSD Language (0xCC), OSD Transparency, Power Indicator LED |
| 21 | +- Dynamic contrast toggle (VCP 0xFC where supported) |
| 22 | +- Picture mode presets (Cinema/Game/Web) via VCP 0xDC |
| 23 | +- Dual-Input PiP/PbP control for ultrawide monitors that support it |
| 24 | + |
| 25 | +### GPU Monitoring |
| 26 | +- NVAPI integration for Digital Vibrance (stop being a placeholder) |
| 27 | +- AMD ADL SDK for Radeon temperature/clock/fan |
| 28 | +- Intel Arc / iGPU monitoring via IGCL |
| 29 | +- CPU temperature via LibreHardwareMonitor/OpenHardwareMonitor lib |
| 30 | +- Per-GPU FPS overlay (PresentMon integration) |
| 31 | + |
| 32 | +### Laptop Support |
| 33 | +- WMI fallback (`WmiMonitorBrightnessMethods`) for integrated laptop displays |
| 34 | +- Ambient light sensor polling (`ILightSensor`) for auto-brightness |
| 35 | +- Battery-aware profile: dim on battery, bright on AC |
| 36 | + |
| 37 | +### Data & Profiles |
| 38 | +- Profile JSON schema version + migration on load |
| 39 | +- Export/import profile bundle (all profiles at once) |
| 40 | +- Cloud-sync profiles via OneDrive/Dropbox folder pointer |
| 41 | +- Profile scheduling UI (graphical timeline, not just trigger rules) |
| 42 | + |
| 43 | +## Competitive Research |
| 44 | +- **Twinkle Tray** — tray leader; borrow slider popup UX and time-based automation precision. |
| 45 | +- **Monitorian** — clean WPF unison-mode implementation; reference for multi-monitor grouping. |
| 46 | +- **ClickMonitorDDC** (discontinued) — classic feature density; fill that gap. |
| 47 | +- **LightBulb (Tyrrrz)** — gamma-based color temp with smooth transitions; match the interpolation curve. |
| 48 | + |
| 49 | +## Nice-to-Haves |
| 50 | +- MQTT/Home Assistant integration (monitor-as-device with brightness entity) |
| 51 | +- NUC/mini-PC HDMI-CEC remote control compatibility |
| 52 | +- Stream Deck plugin (brightness/input as buttons) |
| 53 | +- Per-monitor wallpaper switcher (stretches existing WPA work) |
| 54 | +- OSD overlay rendered by the app itself (dxgi output duplication) when monitor lacks OSD |
| 55 | +- VCP code crowdsource database (users share supported VCPs by monitor model) |
| 56 | + |
| 57 | +## Open-Source Research (Round 2) |
| 58 | + |
| 59 | +### Related OSS Projects |
| 60 | +- https://github.com/emoacht/Monitorian — WPF/.NET, Microsoft Store + Winget, per-monitor range adjustment, WMI + DDC/CI |
| 61 | +- https://github.com/xanderfrangos/twinkle-tray — Electron tray app, hotkey bindings, brightness normalization across monitors, VCP codes (`--VCP=0xD6:5`) |
| 62 | +- https://github.com/hensm/ddccli — .NET CLI, scriptable brightness/contrast |
| 63 | +- https://github.com/ddccontrol/ddccontrol — classic Linux DDC/CI stack, reference for VCP code tables |
| 64 | +- https://github.com/unix755/displayController — Go Windows DDC/CI package, full VCP matrix (brightness/sharpness/contrast/RGB/input/power) |
| 65 | +- https://github.com/Defozo/ddc-ci-control-bridge — MCP server + MQTT client for Home Assistant integration |
| 66 | +- https://github.com/synle/display-dj — cross-platform (Win/macOS) Electron DDC/CI with hotkey adjust |
| 67 | +- https://github.com/musqz/ddc-slider — ddcutil backend with per-monitor controls, state cache, tray variants |
| 68 | + |
| 69 | +### Features to Borrow |
| 70 | +- Brightness normalization across heterogeneous panels (twinkle-tray) — a 50% slider produces perceptually equal brightness on all monitors |
| 71 | +- Global hotkey bindings for brightness +/- on specific or all displays (twinkle-tray) |
| 72 | +- Arbitrary VCP code send (e.g. `0xD6` for power mode) instead of hardcoded brightness/contrast only (twinkle-tray `--VCP`) |
| 73 | +- MCP server interface for AI/agent integration (ddc-ci-control-bridge) — let Claude/Copilot adjust monitors via prompt |
| 74 | +- MQTT Home Assistant integration (ddc-ci-control-bridge) — ties monitor state into smart home scenes |
| 75 | +- Per-monitor adjustable range (monitor X: 20-80%, monitor Y: 0-100%) so the slider maps to each display's usable range (Monitorian) |
| 76 | +- Brightness state cache with disk persistence (musqz/ddc-slider) — restore last-used values on boot before DDC handshake |
| 77 | +- Input-source switching via VCP 0x60 (displayController Go package) — one-click KVM-like monitor input switching |
| 78 | + |
| 79 | +### Patterns & Architectures Worth Studying |
| 80 | +- WMI path vs low-level DDC/CI path — Monitorian falls back between them because some docks only expose one; MonitorControl should probe both |
| 81 | +- VCP capabilities string parsing (`0xF...`) — interrogate monitor for supported codes instead of hardcoding (ddccontrol, Monitorian) |
| 82 | +- Scheduled/ambient brightness automation — sunrise/sunset curves driving VCP 0x10 (display-dj pattern) |
| 83 | +- Tray-only minimal UI vs full control panel — Monitorian ships a tray popup, Twinkle Tray a richer overlay; MonitorControl can do both with a mode switch |
| 84 | +- Cable/dock compatibility warnings — VGA/DVI and some HDMI adapters break DDC, surface a "DDC not detected" banner with docs link (Monitorian compatibility notes) |
0 commit comments