A lightweight Windows desktop application for managing display profiles — save your monitor layout, resolution, refresh rate, HDR state, DPI, audio devices, and scripts into named profiles and switch between them on demand.
This is a fork based on zac15987/DisplayProfileManager. Distributed under MIT + Commons Clause.
Profiles & switching
- 🗂️ Unlimited display profiles — save any combination of monitor settings as a named profile
- 🖱️ Multiple ways to switch — GUI, global hotkey, system tray, or CLI
- 📺 Full per-monitor control — resolution, refresh rate, rotation, HDR, DPI, position, enable/disable, primary
- 🪞 Mirror display support — clone monitors in pure or mixed extended/mirror configurations
- 🖼️ Custom profile icons — assign a
.icoicon to any profile; shown in the profile list, details panel, and system tray when active - 📋 Profile duplication — copy an existing profile as a starting point
- 📥 Import — import
.dpmprofile files
Automation
- ⌨️ Global hotkeys — assign a keyboard shortcut to any profile for quick switching
- 🔊 Audio device switching — automatically switch default playback and recording devices with each profile
- 📜 Script execution — run
.exe,.ps1,.bat,.vbs,.js,.py, or.ahkscripts automatically on profile apply - 💻 CLI support — apply profiles, switch themes, and trigger refreshes from scripts or external tools
- 🚀 Auto-start with Windows — Registry mode (no admin) or Task Scheduler mode (faster, one-time admin setup)
Themes
- 🎨 Built-in themes — Light, Dark, Black, and System (follows Windows)
- 🖌️ Custom themes — import compatible
.xamltheme files; they appear in the dropdown instantly on refresh - 🛠️ DPM Theme Builder — included Python tool to generate themes from the tinted-themes database
- Download the latest release from the Releases page
- Run
DisplayProfileManager.exe - The application lives in your system tray
- Your current display settings are automatically saved as the "Default" profile on first launch
Requirements
- Windows 10 version 1709 or later (Windows 7/8 unsupported — HDR, mirror displays, and some UI elements will not work correctly)
- .NET Framework 4.8
- No administrator rights required for normal use. Admin is only needed once for Task Scheduler auto-start mode setup.
- Creating and Managing Profiles — profiles, hotkeys, mirror displays, audio
- Scripts — supported types, execution, arguments, examples
- Settings — set theme and UX behavior, see configured hotkeys and attributions
- Themes & DPM Theme Builder — built-in themes, importing, generating custom themes
- CLI Reference — all flags and usage examples
- Reporting Issues — what to include when filing a bug report
See CLAUDE.md for architecture, display engine details, and development guidelines.
- Visual Studio 2019 or later
- .NET Framework 4.8 SDK
git clone https://github.com/exytral/DisplayProfileManager.git
cd DisplayProfileManager
nuget restore DisplayProfileManager.sln
powershell -File dev-build.ps1MIT + Commons Clause — see LICENSE for details. Third-party licenses: THIRD-PARTY-LICENSES.md.
- Newtonsoft.Json (MIT) — JSON serialization
- NLog (BSD-3-Clause) — Logging
- windows-DPI-scaling-sample (Unlicense) — DPI scaling foundation
- tinted-themes (MIT) — Theme database for DPM Theme Builder
- Claude Code — Built in collaboration with Anthropic's Claude Code
Upstream
- @zac15987 (Original project) — Display profiles, themes, system tray, auto-start, global hotkeys, initial audio device switching support
- @jarandal (PR #8) — Initial HDR support, screen rotation
- @jonathanasdf (PR #14) — Initial clone display support
- @rvahilario (PR #23) — Partial clone fixes, clone UI, test infrastructure
- @xtrilla (fork) — Safe file saves
Community


