Skip to content

Releases: zac15987/DisplayProfileManager

v1.3.0 - HDR Support, Rotation Control & Enhanced Display Engine

14 Oct 07:57

Choose a tag to compare

🎉 Release Highlights

This release brings significant improvements to display management with HDR support, screen rotation control, and a completely rewritten display configuration engine for unprecedented reliability in multi-monitor setups. Perfect for users with HDR-capable displays, portrait monitors, or complex multi-monitor configurations.

✨ What's New

🎨 HDR (High Dynamic Range) Support

  • Enable/Disable HDR per monitor - Control HDR settings for each display independently
  • Automatic HDR capability detection - The application automatically detects which monitors support HDR
  • Per-profile HDR configuration - Save different HDR settings for different usage scenarios (gaming, content creation, etc.)
  • HDR status preservation - HDR settings are reliably applied when switching profiles

🔄 Screen Rotation Control

  • Full orientation support - Configure screen rotation for each monitor (0°, 90°, 180°, 270°)
  • Perfect for portrait setups - Easily manage monitors in portrait orientation
  • Multi-orientation profiles - Create profiles with different monitor orientations (e.g., one landscape, one portrait)
  • Reliable rotation application - Rotation is applied atomically with other display settings

⚙️ Staged Application Mode

  • Two-phase profile application - New optional mode that applies complex settings in phases for enhanced stability
  • Improved reliability for complex setups - Dramatically reduces failures when switching profiles with HDR, high refresh rates, or multiple displays
  • Configurable pause duration - Adjust the delay between phases (1-5000ms) to optimize for your specific hardware
  • Smart activation - Only used for multi-monitor profiles when enabled in settings
  • User-controlled - Easily toggle on/off in Settings > Display Configuration

🔧 Enhanced Display Configuration Engine

  • Complete rewrite using modern Windows APIs - Replaced legacy ChangeDisplaySettingsEx with atomic SetDisplayConfig API
  • Atomic topology application - All display settings (resolution, refresh rate, position, primary, HDR, rotation, enable/disable) are applied in a single operation
  • Drastically improved reliability - Eliminates iterative setting application failures that plagued multi-monitor setups
  • Better error handling - More robust detection and recovery from display configuration issues
  • Future-proof architecture - Built on modern Windows Display Configuration API for better compatibility with future Windows versions

🔍 Technical Details

Updated Components

  • DisplayConfigHelper - Complete rewrite using Windows Display Configuration API (SetDisplayConfig)
  • ProfileManager - Enhanced ApplyProfileAsync with staged application support
  • DisplaySetting - New properties: IsHdrSupported, IsHdrEnabled, Rotation
  • SettingsManager - New settings: UseStagedApplication, StagedApplicationPauseMs
  • AboutHelper - Updated with v1.3.0 version and new contributor information

Profile Structure Changes

.dpm profile files now include:

  • isHdrSupported (bool) - Whether the monitor supports HDR
  • isHdrEnabled (bool) - HDR enabled state for the profile
  • rotation (int) - Screen orientation (1=0°, 2=90°, 3=180°, 4=270°)

Backward Compatibility: Profiles created with older versions will load correctly with default values (HDR disabled, 0° rotation).

Settings Configuration

New settings in settings.json:

{
  "useStagedApplication": false,
  "stagedApplicationPauseMs": 1000
}

System Requirements

  • Operating System: Windows 7 or later
  • .NET Framework: 4.8 or later
  • Privileges: Standard user (no admin required)
  • Recommended: HDR-capable display for HDR features

Dependencies

No new dependencies added. Application continues to use:

  • .NET Framework 4.8
  • Newtonsoft.Json 13.0.3
  • NLog 6.0.4
  • AudioSwitcher.AudioApi 3.0.0/3.0.3

📦 Installation

Available Builds

  • Installer (x64) - DisplayProfileManager-v1.3.0-x64-setup.exe
  • Installer (x86) - DisplayProfileManager-v1.3.0-x86-setup.exe
  • Installer (ARM64) - DisplayProfileManager-v1.3.0-ARM64-setup.exe
  • Portable (x64) - DisplayProfileManager-v1.3.0-x64-portable.zip
  • Portable (x86) - DisplayProfileManager-v1.3.0-x86-portable.zip
  • Portable (ARM64) - DisplayProfileManager-v1.3.0-ARM64-portable.zip

Upgrading from v1.2.0

  1. Download and run the appropriate installer for your architecture
  2. Your existing profiles and settings will be preserved
  3. Existing profiles will work with default HDR (disabled) and rotation (0°) settings
  4. Edit profiles in the Profile Editor to configure HDR and rotation for each monitor

📊 Development Statistics

  • 10 files changed
  • +890 additions / -184 deletions
  • Commits: 83abe7f, 536c3be, f81955d, baf1130
  • Primary contribution by @jarandal via PR #8

🙏 Special Thanks

Feature Implementation

  • @jarandal - Implemented the complete HDR support, screen rotation control, Staged Application mode, and rewrote the display configuration engine for enhanced reliability (PR #8)

🐛 Known Issues

None currently identified. Please report any issues at GitHub Issues.

📝 Notes

  • HDR Configuration: HDR can only be enabled on monitors that report HDR capability. The Profile Editor will automatically disable the HDR checkbox for non-HDR displays.
  • Staged Application: If you experience issues when switching complex multi-monitor profiles, try enabling "Staged Application Mode" in Settings > Display Configuration.
  • Performance: Staged Application mode may add a slight delay (default 1 second) when switching profiles, but significantly improves reliability for complex configurations.
  • Testing: This release has been extensively tested, but display configurations can vary widely. Please report any issues you encounter.

🔗 Links

What's Changed

New Contributors

Full Changelog: v1.2.0...v1.3.0

v1.2.0 - Advanced Multi-Monitor Management & Enhanced Reliability

09 Oct 05:28

Choose a tag to compare

Display Profile Manager v1.2.0 brings major improvements to multi-monitor management with advanced configuration options, enhanced reliability, and professional logging infrastructure.

🖥️ Multi-Monitor Management

Complete Monitor Control

  • Enable/Disable Monitors: Selectively enable or disable individual monitors within each profile
  • Primary Display Selection: Choose which monitor should be the primary display for each profile
  • Monitor Position Tracking: Automatically save and restore monitor positions in multi-monitor setups
  • Monitor Identification Overlay: Visual overlay to help identify physical monitors during configuration
  • Profile Duplication: Create new profiles based on existing ones with one click

Smart Profile Editing

  • Monitor Capabilities Storage: Profiles now store supported resolutions, DPI scaling values, and refresh rates for each monitor
  • Offline Editing: Edit profiles even when monitors are disconnected - capability data is stored for offline access
  • Visual Indicators: Disabled monitors are clearly marked with yellow backgrounds and warning labels
  • Connected Monitor Validation: Profiles are validated against connected monitors before application

🔒 Enhanced Reliability

EDID-Based Monitor Identification

  • Monitors are now tracked using EDID (Extended Display Identification Data) for reliable identification
  • Improved handling of monitor connection/disconnection scenarios
  • Better stability across display driver updates and system changes

Automatic Safety Features

  • Topology Rollback: Automatically reverts to previous working layout if display configuration fails
  • Position Management: Untracked monitors are properly positioned to prevent overlapping layouts
  • Safety Checks: Enhanced validation prevents invalid configurations and array access errors

📊 Professional Logging

NLog Integration

  • Comprehensive logging system replaces basic debug output
  • Logs saved to %AppData%\DisplayProfileManager\Logs\
  • Daily log rotation with 30-day retention
  • Detailed diagnostics for troubleshooting display issues
  • Better support for issue reporting and debugging

⚡ Flexible Auto-Start Options

Dual Auto-Start Modes

  • Registry Mode (default): Standard startup, no admin privileges required
  • Task Scheduler Mode: Faster application launch, requires one-time admin setup
  • Choose the mode that best fits your workflow and security preferences
  • Clear documentation about privilege requirements in Settings

🎯 User Experience Improvements

  • More informative messages when applying profiles
  • Third-party library attribution in Settings window
  • Improved DPI positioning accuracy for multi-monitor setups
  • Enhanced audio system initialization
  • Better error handling and user feedback
  • Refreshed UI screenshots in documentation

Installation Notes

Clean Installation Recommended

For users upgrading from v1.1.0 or earlier beta versions:

  • Consider deleting %AppData%\DisplayProfileManager before upgrading for cleanest experience
  • First run will automatically save your current display settings as a "Default" profile
  • Your hotkey preferences and other settings will need to be reconfigured

System Requirements

  • Windows: 7 or later (Windows 10/11 recommended)
  • .NET Framework: 4.8 or later
  • Privileges: Standard user account (admin only required for Task Scheduler auto-start mode setup)

Architecture Support

  • x64 (64-bit Intel/AMD)
  • x86 (32-bit Intel/AMD)
  • ARM64 (ARM-based Windows devices)

What's Included

Installer Versions

  • DisplayProfileManager-v1.2.0-x64-Setup.exe: 64-bit installer (recommended for most users)
  • DisplayProfileManager-v1.2.0-x86-Setup.exe: 32-bit installer (legacy systems)
  • DisplayProfileManager-v1.2.0-arm64-Setup.exe: ARM64 installer (Surface Pro X, etc.)

Portable Versions

  • DisplayProfileManager-v1.2.0-x64-Portable.zip: 64-bit portable (no installation required)
  • DisplayProfileManager-v1.2.0-x86-Portable.zip: 32-bit portable
  • DisplayProfileManager-v1.2.0-ARM64-Portable.zip: ARM64 portable

Technical Details

New Dependencies

  • NLog 6.0.4: Professional logging framework

Enhanced Components

  • ProfileManager: Monitor enable/disable, primary display, position tracking, capabilities storage
  • DisplayHelper: EDID integration, topology rollback, improved positioning
  • AutoStartHelper: Dual-mode auto-start (Registry + Task Scheduler)
  • ProfileEditWindow: Offline editing, visual indicators, improved scrolling

Code Quality

  • Complete migration from Debug.WriteLine to NLog logging
  • Removed 5,069 lines of unused/redundant code
  • Improved error handling and validation throughout
  • Enhanced P/Invoke safety and reliability

Development Statistics

  • Commits: 44 commits since v1.1.0
  • Files Changed: 40 files
  • Code Changes: +3,967 additions / -5,069 deletions
  • Beta Testing: 4 beta releases (beta.1 through beta.4)

Beta Release History

This release was thoroughly tested through four beta versions:

  1. v1.2.0-beta.1 - Multi-monitor management foundation
  2. v1.2.0-beta.2 - Automatic topology rollback and visual indicators
  3. v1.2.0-beta.3 - NLog integration and dual auto-start modes
  4. v1.2.0-beta.4 - Monitor capabilities storage and offline editing

Thank you to all beta testers who provided valuable feedback!


Getting Help

  • Documentation: See README.md in the repository
  • Bug Reports: GitHub Issues
  • Feature Requests: GitHub Issues
  • Logs Location: %AppData%\DisplayProfileManager\Logs\ (helpful for troubleshooting)

Previous Releases


Special Thanks

  • @xtrilla - Reported monitor disable/exclude functionality issues (#4)
  • @Alienmario - Reported screen switching problems (#5)

Special thanks to all beta testers and users who provided feedback during development. Your input helped shape this release!


Enjoy the improved multi-monitor management! 🎉

What's Changed

  • Release v1.2.0: Advanced Multi-Monitor Management & Enhanced Reliability by @zac15987 in #7

Full Changelog: v1.2.0-beta.4...v1.2.0

v1.2.0-beta.4 - Offline Profile Editing

03 Oct 03:15

Choose a tag to compare

Pre-release

What's New

🖥️ Offline Profile Editing

  • Stored Monitor Capabilities: Profiles now capture each monitor's supported resolutions, DPI scaling values, and refresh rates when the device is detected.
  • Backward Compatible: Existing profile files continue to load and populate capability data the next time their monitors are seen.

✏️ Smarter Profile Editor

  • Offline Picker Support: The Profile Editor now fills resolution, scaling, and refresh rate pickers from the stored capability data.
  • Graceful Fallbacks: When capability data is missing, the editor automatically queries the system to keep legacy profiles editable.

Upgrade from v1.2.0-beta.3

This release focuses on:

  • Empowering offline profile editing through stored monitor capabilities.

Installation Notes

  • Clean installation recommended for beta testers
  • Consider deleting %AppData%\DisplayProfileManager folder before running if upgrading from other versions
  • First run automatically saves current display settings as "Default" profile
  • Standard user privileges sufficient (admin only needed for optional Task Scheduler auto-start setup)

Note: This is a pre-release version. Please report any issues on the GitHub Issues page.

Full Changelog: v1.2.0-beta.3...v1.2.0-beta.4

v1.2.0-beta.3 - Logging, Dual Auto-Start & Enhanced Monitor Identification

02 Oct 08:40

Choose a tag to compare

What's New

🔧 Enhanced Logging System

  • Complete NLog Integration: Replaced all Debug.WriteLine calls with structured NLog logging across the entire codebase
  • Comprehensive Diagnostics: Application logs now saved to %AppData%/DisplayProfileManager/Logs/ with daily rotation and 30-day retention
  • Better Troubleshooting: Detailed logging for display changes, profile operations, and system interactions

🚀 Dual Auto-Start Modes

  • Registry Mode (Default): Standard user startup without admin privileges
  • Task Scheduler Mode: Optional faster launch (requires admin for initial setup only)
  • Flexible Configuration: Choose the auto-start method that best fits your needs

🖥️ Improved Monitor Identification

  • EDID-based Identification: More reliable monitor tracking across system changes, restarts, and hardware reconnections
  • Enhanced Stability: Better handling of monitor identification when displays are disconnected/reconnected

ℹ️ Transparency & Attribution

  • Third-Party Library Credits: Added comprehensive attribution for all open-source libraries in Settings window
  • Clear Admin Requirements: Documentation now clarifies admin privileges only needed for Task Scheduler auto-start setup

📊 Better User Feedback

  • Detailed Profile Apply Results: Enhanced reporting when applying profiles with more informative success/failure messages

Documentation Improvements

  • Expanded README with detailed architecture documentation
  • Streamlined CLAUDE.md with clearer development guidelines
  • Clarified privilege requirements throughout documentation

Installation Notes

  • Clean installation recommended for beta testers
  • Consider deleting %AppData%\DisplayProfileManager folder before running if upgrading from beta.2
  • First run automatically saves current display settings as "Default" profile
  • Standard user privileges sufficient (admin only needed for optional Task Scheduler auto-start setup)

Upgrade from v1.2.0-beta.2

This release builds on beta.2's stability improvements with:

  • Enhanced diagnostic capabilities through comprehensive logging
  • More flexible startup options
  • More reliable monitor tracking
  • Better transparency and user feedback

Note: This is a pre-release version. Please report any issues on the GitHub Issues page.

Full Changelog: v1.2.0-beta.2...v1.2.0-beta.3

v1.2.0-beta.2 - Enhanced Display Stability & Monitor Management

26 Sep 00:22

Choose a tag to compare

📋 Overview

This beta release focuses on improving display configuration stability and handling edge cases in multi-monitor setups. The key enhancement is the introduction of automatic rollback functionality that ensures users never get stuck with broken display configurations.

⚠️ Important Installation Note

For the best experience with this beta release:

  • Clean installation recommended: Delete the existing %AppData%\DisplayProfileManager folder before running this version
  • First run behavior: The application will automatically save your current display settings as a "Default" profile
  • Administrator privileges required: The application needs admin rights for DPI scaling changes

✨ New Features

🔄 Automatic Display Topology Rollback

  • Automatically reverts to the previous working multi-monitor layout if topology changes fail
  • Specifically handles failures when enabling/disabling monitors or changing monitor arrangements
  • Shows informative notifications explaining what went wrong and confirming the successful rollback
  • Prevents users from being stuck with non-functional monitor configurations
  • Captures and preserves the original display topology before making layout changes
  • Note: This rollback applies to monitor layout/topology only, not to resolution, refresh rate, scaling, or primary display settings

👁️ Visual Monitor Status Indicators

  • Disabled monitors now display with distinct visual styling in the profile details panel:
    • Yellow-tinted background for immediate recognition
    • "⚠ DISABLED MONITOR" warning label
    • Reduced opacity to differentiate from active monitors
  • Enabled monitors show with a subtle border for visual consistency

🐛 Bug Fixes

Display Management

  • Fixed unspecified monitor handling: Monitors not included in a profile are now properly disabled when applying that profile
  • Fixed inactive monitor positioning: Skip inactive monitors during display layout positioning to avoid configuration errors
  • Added safety checks: Prevent array access errors with bounds checking for mode info indices

User Interface

  • Fixed profile editor scrolling: Removed nested ScrollViewer that was preventing mouse wheel scrolling in the Profile Edit Window
  • Improved content accessibility: Users can now smoothly scroll through all profile settings without manually dragging the scrollbar

📖 User Guide

Getting Started with Display Profile Manager

1. Understanding Monitor Management

Important: Manual monitor adding has been intentionally removed to make the program more controllable and simpler. Follow this workflow:

  1. Connect and enable all monitors you want to use in Windows Display Settings
  2. Arrange their positions in Windows Display Settings (this app doesn't support layout editing yet)
  3. Click "Detect Current" in the app to detect all connected/enabled monitors
  4. Configure the profile by:
    • Enabling/disabling specific monitors
    • Adjusting resolution, refresh rate, and DPI scaling
    • Setting audio devices if needed

2. Creating Your First Profile

  1. Open the main window
  2. Create a new profile: Click "Add Profile"
  3. Capture current setup: Click "Detect Current" to capture your current display configuration
  4. Configure displays:
    • Enable/disable monitors using the checkboxes
    • Set resolution and refresh rate for each monitor
    • Adjust DPI scaling (100%, 125%, 150%, etc.)
    • Choose which monitor should be primary
  5. Configure audio (optional):
    • Select default playback device (speakers, headphones)
    • Select default communication device (microphone)
    • Check the boxes to apply these settings with the profile
  6. Set a hotkey (optional): Click in the hotkey field and press your desired key combination
  7. Save the profile: Give it a descriptive name and click "Save"

3. Switching Between Profiles

Quick Methods:

  • System Tray: Right-click tray icon → "Profiles" → Click on any profile name
  • Hotkeys: Press the configured hotkey combination for instant switching
  • Main Window: Select a profile and click "Apply Profile"

4. Managing Profiles

  • Edit: Select a profile → "Edit" to modify settings
  • Duplicate: Create a copy of an existing profile for variations
  • Delete: Remove profiles you no longer need
  • Import/Export: Backup or share profiles using the File menu

5. Settings Configuration

Access via right-click tray icon → "Settings":

  • Start with Windows: Enable automatic startup
  • Default Profile: Choose which profile to apply on startup
  • Theme: Select Light, Dark, or follow system theme
  • Minimize to Tray: Keep running in background when closed

Tips for Best Results

  1. Use descriptive names like "Gaming - 144Hz", "Work - Dual Screen", "Presentation - Single Display"
  2. Set up hotkeys for frequently used profiles for instant switching
  3. Create a "Default" profile that matches your most common setup
  4. Use the duplicate feature to create variations of working profiles

🤝 Contributing

Found a bug or have a feature request? Please report it on our GitHub Issues page.

🙏 Feature Contributors

Thanks to the following community members whose issue reports led to improvements in this release:

  • @xtrilla - Reported monitor disable/exclude functionality issues (#4)
  • @Alienmario - Reported screen switching problems (#5)

Note: This is a pre-release version. While it includes significant stability improvements, please keep your important display configurations backed up and report any issues you encounter.

Full Changelog: v1.2.0-beta.1...v1.2.0-beta.2

v1.2.0-beta.1 - Multi-Monitor Management & Display Control

21 Sep 13:45

Choose a tag to compare

⚠️ Important: Clean Installation Required

Due to significant changes in profile structure, please delete your existing configuration before upgrading:

  1. Exit Display Profile Manager completely
  2. Delete the folder: %APPDATA%\DisplayProfileManager
  3. Run v1.2.0-beta.1

This ensures compatibility with the new monitor management features. Your current display settings will be saved as the "Default" profile on first run.


✨ New Features

🖥️ Advanced Multi-Monitor Management

  • Monitor Enable/Disable Support - Selectively enable or disable specific monitors within profiles, perfect for switching between single and multi-monitor setups
  • Primary Display Management - Set and save which monitor should be the primary display for each profile
  • Display Position Tracking - Automatically save and restore monitor positions and arrangements when switching profiles
  • Monitor Identification Overlay - Visual overlay system to easily identify monitors during configuration (shows monitor number on each display)

🔄 Enhanced Profile Management

  • Profile Duplication - Quickly duplicate existing profiles with all their settings for easy modifications
  • Connected Monitor Validation - Automatically checks if required monitors are connected before applying profiles, preventing configuration errors

🔧 Improvements

Display System Enhancements

  • Optimized Profile Application Workflow - Streamlined the process of applying display settings for faster profile switching
  • Improved DPI Positioning - Uses SetWindowPos for accurate multi-monitor DPI positioning, ensuring windows appear correctly on high-DPI displays
  • Better Refresh Rate Handling - Automatically populates empty refresh rate dropdowns with the current display's refresh rate
  • Simplified Display Controls - Cleaner and more intuitive display configuration interface in the profile editor

Audio System Improvements

  • Early Audio System Initialization - Audio system now initializes at app startup for faster device switching
  • Simplified Device Name Resolution - More reliable audio device name detection and display

Code Architecture

  • Removed Legacy Display Code - Cleaned up unused display topology code for better maintainability
  • Improved Display Config Retrieval - Now using modern QueryDisplayConfig API for more reliable display information
  • Profile File Naming - Profile files now use descriptive names instead of GUIDs for easier manual management

🐛 Bug Fixes

  • Fixed issue where empty display settings weren't properly initialized from controls
  • Fixed profile file naming to use profile name instead of ID for better file organization
  • Resolved audio device validation issues during profile loading
  • Corrected display settings initialization for new profiles

📦 What's Included

  • DisplayProfileManager.exe - Main application executable (requires administrator privileges)
  • All necessary dependencies are included in the package

⚠️ Beta Notes

This is a pre-release version intended for testing the new multi-monitor management features. While the core functionality is stable, you may encounter minor issues with complex multi-monitor setups. Please report any bugs or unexpected behavior via the GitHub Issues page.

🔍 Testing Focus Areas

We'd particularly appreciate feedback on:

  • Multi-monitor configurations with 3+ displays
  • Monitor enable/disable functionality with different monitor combinations
  • Display position restoration accuracy
  • DPI scaling across monitors with different DPI settings
  • Profile duplication with complex configurations
  • Monitor identification overlay visibility and accuracy

🛠️ Technical Details

  • Platform: Windows 7 or later (Windows 10/11 recommended)
  • Framework: .NET Framework 4.8
  • UI Framework: WPF (Windows Presentation Foundation)
  • Privileges: Administrator rights required for DPI changes and display configuration
  • Architecture: MVVM pattern with singleton managers

💡 Known Limitations

  • Administrator privileges are required for DPI scaling changes
  • Some display changes may require a brief screen flicker
  • Monitor enable/disable may not work with all graphics drivers
  • Display position changes work best with Windows 10/11

🙏 Acknowledgments

🤝 Feature Contributors

  • @xtrilla - Requested the monitor disable/enable feature for selective display control (#4)
  • @Alienmario - Reported multi-monitor switching issues and provided valuable feedback for improvements (#5)
  • @Catriks - Originally requested audio device switching functionality (#1)
  • @anodynos - Suggested global hotkey functionality (#2)

📚 Key Libraries

🤖 Development

Built in collaboration with Claude Code - Anthropic's AI assistant for software development


📝 How to Report Issues

If you encounter any bugs or have suggestions:

  1. Check the existing issues first
  2. Create a new issue with:
    • Your Windows version
    • Number and type of monitors
    • Steps to reproduce the issue
    • Any error messages
    • Your display configuration (resolution, DPI, arrangement)

🚀 What's Next

The next release will focus on:

  • Further multi-monitor switching improvements
  • Enhanced error handling and recovery
  • Performance optimizations for profile switching
  • Additional display arrangement options

Thank you for testing Display Profile Manager! Your feedback helps make this tool better for everyone.

Full Changelog: v1.1.0...v1.2.0-beta.1

v1.1.0 - Global Hotkeys & Audio Device Management

10 Sep 07:19

Choose a tag to compare

🚀 What's New

Display Profile Manager v1.1.0 introduces two highly requested features that transform how you manage your workspace configurations:

🎮 Global Hotkey System

Instantly switch between display profiles without opening the app! Assign custom keyboard shortcuts to each profile for lightning-fast workspace transitions.

  • System-wide hotkeys - Work from any application
  • Per-profile configuration - Unique shortcuts for each setup
  • Conflict detection - Prevents duplicate assignments
  • Visual indicators - See assigned hotkeys in the main window and system tray

🔊 Audio Device Management

Complete your workspace setup by automatically switching audio devices along with your display configuration.

  • Playback device switching - Speakers, headphones, and more
  • Communication device switching - Microphones and input devices
  • Bluetooth support - Seamless wireless device handling
  • Per-device control - Choose which devices to switch
  • Device refresh - Automatic detection of new devices

✨ Improvements

Interface & Usability

  • Resizable windows - All windows now support resizing with proper DPI scaling
  • Enhanced hotkey editor - Intuitive control for capturing key combinations
  • Improved visual feedback - Clear status indicators and conflict warnings
  • Dynamic theme support - Hotkey controls adapt to light/dark themes

Settings & Configuration

  • Cleaner settings structure - Removed redundant configuration options
  • Assembly version tracking - Version now reads directly from assembly
  • Semantic versioning - Support for beta and release tags
  • Better backward compatibility - Seamless migration from v1.0.0

Installation

  • Inno Setup installer - Professional installation experience (optional)
  • Portable versions - Continue to use without installation if preferred

🐛 Bug Fixes

  • Fixed Bluetooth device naming inconsistencies
  • Resolved cross-device name contamination issues
  • Improved hotkey conflict detection during profile editing
  • Fixed audio device selection and display problems
  • Corrected default device selection behavior
  • Enhanced error handling for device enumeration

📦 Downloads

Installer

Portable Versions

📋 System Requirements

  • Operating System: Windows 7 or later
  • .NET Framework: 4.8 or later (Download)
  • Privileges: Administrator rights required
  • Architecture: x64, x86, or ARM64 processor

🔄 Upgrading from v1.0.0

  1. Settings are preserved - Your profiles and preferences will automatically migrate
  2. No breaking changes - Full backward compatibility maintained
  3. New features are optional - Hotkeys and audio switching can be configured as needed

👥 Contributors

Special thanks to our community contributors who made this release possible:

  • @Catriks - Feature suggestions and extensive testing
  • @Alienmario - Bug reports and valuable feedback
  • @anodynos - Global hotkey feature inspiration and testing

📝 Changelog

Added

  • Global hotkey system with per-profile configuration
  • Audio device management (playback and communication)
  • Bluetooth device support
  • Resizable windows across the application
  • Hotkey editor control
  • Visual hotkey indicators
  • Inno Setup installer configuration
  • AboutHelper with community acknowledgments

Changed

  • Version now reads from assembly instead of settings.json
  • Improved settings structure and backward compatibility
  • Enhanced error handling and device enumeration
  • Updated UI with better visual feedback

Removed

  • Automatic update checking feature
  • Redundant version field in settings.json

Fixed

  • Bluetooth device naming issues
  • Hotkey conflict detection
  • Audio device selection problems
  • Default device selection behavior
  • Cross-device name contamination

🧪 Beta Testing

This release went through extensive beta testing:

  • v1.1.0-beta.1 - Initial audio device switching
  • v1.1.0-beta.2 - Global hotkeys and final refinements

Thanks to all beta testers for their valuable feedback!

📚 Documentation

  • README - Project overview and features
  • Issues - Report bugs or request features

⚡ Quick Start

  1. Download the appropriate version for your system
  2. Extract (portable) or Install the application
  3. Run DisplayProfileManager.exe
  4. Create profiles for your different display setups
  5. Assign hotkeys for instant switching
  6. Configure audio devices if desired
  7. Switch profiles from main window, the system tray or using hotkeys!

🆚 Version Comparison

Feature v1.0.0 v1.1.0
Display Profile Management
System Tray Integration
Multi-Monitor Support
DPI Scaling
Theme Support
Global Hotkeys
Audio Device Switching
Resizable Windows

Full Changelog: v1.0.0...v1.1.0

Questions or Issues? Please open an issue on GitHub.

v1.1.0-beta.2 - Global Hotkeys & Settings Cleanup

05 Sep 15:10

Choose a tag to compare

🔥 Pre-release with global hotkey system and settings improvements

This beta release introduces system-wide hotkey support for instant profile switching and includes important settings cleanup improvements. Audio device switching functionality is still in beta.

✨ New Features

Global Hotkey System

  • System-wide Profile Switching: Instantly switch between display profiles from anywhere using custom hotkey combinations
  • Per-Profile Hotkeys: Configure unique hotkey combinations for each profile (e.g., Ctrl+Shift+1, Ctrl+Shift+2)
  • Hotkey Status Display: Visual indicators in the main window show which profiles have hotkeys enabled/disabled
  • Conflict Detection: Graceful handling of hotkey registration conflicts with proper fallback

Enhanced Settings Management

  • Settings Cleanup: Removed redundant auto-update and version tracking from settings.json
  • Assembly Version Integration: Version information now properly sourced from AssemblyInfo.cs
  • Backward Compatibility: Existing settings files automatically migrate without issues

🔧 Improvements

Hotkey Integration

  • HotkeyEditorControl: New WPF control for capturing and editing hotkey combinations in the Profile Editor
  • Thread Safety: All hotkey operations properly dispatched to UI thread with cleanup on disposal
  • KeyConverter Mapping: Seamless conversion between WPF Key enums and Windows virtual key codes

Settings Architecture

  • Cleaner Data Model: Removed unused properties from settings.json for better maintenance
  • Assembly Version Fallback: Robust version detection with proper fallback chain (InformationalVersion → FileVersion → AssemblyVersion)
  • Settings UI Updates: Hotkey status display integrated into Settings window

Window Behavior

  • Resizable Windows: All application windows now support proper resizing across different DPI settings

📦 What's Included

  • 64-bit portable version (x64)
  • 32-bit portable version (x86)
  • ARM64 portable version (ARM64)

⚠️ Beta Notes

  • Pre-release version for testing global hotkey and audio switching functionality
  • Please report issues with:
    • Global hotkey registration/conflicts
    • Hotkey combinations not working
    • Audio device switching reliability
    • Audio device name accuracy
    • Bluetooth device compatibility
    • Settings migration issues

🔍 Testing Focus Areas

  1. Hotkey Registration: Test various hotkey combinations across different applications
  2. Conflict Handling: Try hotkeys that might conflict with existing system/app shortcuts
  3. Audio Device Switching: Verify audio switching works reliably across different device types
  4. Bluetooth Devices: Test audio switching with Bluetooth headphones/speakers
  5. Settings Migration: Upgrade from beta.1 to verify settings properly migrate
  6. Cross-Application: Test hotkeys work when other applications have focus

🛠️ Technical Details

  • .NET Framework 4.8 and WPF
  • AudioSwitcher.AudioApi 3.0.0 for audio device management
  • GlobalHotkeyHelper: P/Invoke wrapper for RegisterHotKey/UnregisterHotKey APIs
  • Per-monitor DPI awareness V2
  • Requires administrator privileges for hotkey registration
  • Windows Vista+ compatible

🙏 Acknowledgments

Community Features

Key Libraries

Development

  • Claude Code - Development assistance and code generation

Note: This is a beta release. Both global hotkeys and audio switching are new features that should be tested thoroughly before production use. For critical environments, consider using stable v1.0.0.

Full Changelog: v1.1.0-beta.1...v1.1.0-beta.2

v1.1.0-beta.1 - Audio Device Switching Preview

04 Sep 13:01

Choose a tag to compare

🎧 Pre-release with audio device management capabilities

This beta release introduces audio device switching functionality, allowing you to save and restore audio configurations along with your display profiles.

✨ New Features

Audio Device Management (#1)

  • Playback Device Switching: Save and restore default audio output devices with profiles
  • Communication Device Switching: Manage default communication devices (microphones, headsets)
  • Per-Device Control: Choose which audio settings to apply on a per-profile basis
  • Device Detection: Automatic enumeration of all available audio devices
  • Bluetooth Support: Full support for Bluetooth audio devices

Enhanced Version Display

  • Semantic versioning with beta/RC tag support
  • Version tags now visible in Settings window

🔧 Improvements

  • AudioHelper Integration: New helper class for robust audio device management via AudioSwitcher API
  • Profile Enhancement: Profiles now store audio device configurations alongside display settings
  • Settings UI: Updated settings window to display informational version strings
  • Device Refresh: Audio controller re-initialization for dynamic device updates

📦 What's Included

  • 64-bit portable version (x64)
  • 32-bit portable version (x86)
  • ARM64 portable version

⚠️ Beta Notes

This is a pre-release version for testing the new audio switching features. Please report any issues you encounter:

  • Audio devices not switching as expected
  • Missing or incorrect device names
  • Bluetooth device compatibility issues

🔍 Testing Focus Areas

  1. Profile Creation: Save profiles with different audio device configurations
  2. Device Switching: Verify audio devices switch correctly when applying profiles
  3. Bluetooth Devices: Test with Bluetooth headphones/speakers
  4. Communication Devices: Test microphone/headset switching
  5. Mixed Profiles: Test profiles with some audio settings disabled

🛠️ Technical Details

  • Built with .NET Framework 4.8 and WPF
  • AudioSwitcher.AudioApi 3.0.0 for audio management
  • Per-monitor DPI awareness (V2)
  • Requires administrator privileges
  • Windows Vista+ compatible

🙏 Acknowledgments

  • Community feedback on audio device management needs
  • AudioSwitcher library for Core Audio API wrapper
  • Contributors testing beta features
  • Built with Claude Code assistance

Special Thanks


Note: This is a beta release. For production use, please use the stable v1.0.0 release.

Full Changelog: v1.0.0...v1.1.0-beta.1

v1.0.0 - Initial Release

05 Aug 02:49

Choose a tag to compare

Release Notes

🎉 Initial Release of Display Profile Manager

A lightweight Windows desktop application for managing display profiles with quick switching from the system
tray.

✨ Features

  • Profile Management: Save and switch between multiple display configurations (resolution, refresh rate, DPI)
  • System Tray Integration: Quick profile switching from the system tray with dynamic context menu
  • Multi-Monitor Support: Configure settings for each connected monitor independently
  • Refresh Rate Selection: Choose specific refresh rates for each resolution
  • DPI Scaling: Adjust system-wide DPI scaling per profile
  • Theme Support: Light and dark theme with automatic switching
  • Windows 11 Snap Layouts: Full support for Windows 11 window snapping
  • Auto-start: Option to start with Windows and minimize to system tray
  • Hotkey Support: Print Screen detection for quick profile switching
  • Single Instance: Prevents duplicate application launches

🛠️ Technical Details

  • Built with .NET Framework 4.8 and WPF
  • Per-monitor DPI awareness (V2)
  • Requires administrator privileges for display configuration
  • Windows Vista and later supported

📦 Available Downloads

  • DisplayProfileManager-v1.0.0-x64-Portable - 64-bit portable version
  • DisplayProfileManager-v1.0.0-x86-Portable - 32-bit portable version
  • DisplayProfileManager-v1.0.0-ARM64-Portable - ARM64 portable version

🙏 Acknowledgments

  • DPI scaling implementation based on community contributions
  • Built with Claude Code assistance