Skip to content

roozbeh-gholami/Monitor-Controller-Cross-Platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monitor Controller Cross-Platform

A Qt-based desktop application for controlling external monitor settings such as brightness, contrast, and input source selection through DDC/CI (Display Data Channel Command Interface).

Features

  • Brightness Control: Adjust monitor brightness using sliders or spin boxes with real-time updates
  • Contrast Control: Modify monitor contrast settings with intuitive controls
  • Input Source Selection: Switch between different input sources (VGA, DVI, HDMI, DisplayPort, USB-C)
  • Multi-Monitor Support: Detect and control multiple connected monitors
  • Real-time Feedback: Live updates of current monitor settings
  • Cross-Platform Design: Built with Qt for potential cross-platform compatibility

Supported Input Sources

  • VGA 1 & 2
  • DVI 1 & 2
  • DisplayPort 1 & 2
  • HDMI 1 & 2
  • USB-C

Requirements

Windows

  • Windows 10/11 (64-bit)
  • Qt 6.x framework
  • Visual Studio 2022 (for building from source)
  • Monitor with DDC/CI support

Linux (Planned)

  • Linux distribution with ddcutil support
  • Qt 6.x framework
  • Monitor with DDC/CI support

Installation

Pre-built Binaries

  1. Download the latest release from the releases page
  2. Extract the files to your desired location
  3. Run monitorControllerCrossPlatform.exe

Building from Source

Prerequisites

  • Qt 6.x SDK
  • Visual Studio 2022 with C++ development tools
  • CMake (optional)

Build Steps

  1. Clone the repository:

    git clone https://github.com/roozbeh-gholami/Monitor-Controller-Cross-Platform.git
    cd Monitor-Controller-Cross-Platform
  2. Open the solution file in Visual Studio:

    monitorControllerCrossPlatform.sln
    
  3. Build the project:

    • Select your desired configuration (Debug/Release)
    • Build → Build Solution (Ctrl+Shift+B)
  4. The executable will be generated in:

    x64/Debug/monitorControllerCrossPlatform.exe
    

    or

    x64/Release/monitorControllerCrossPlatform.exe
    

Usage

  1. Launch the Application: Run the executable to open the Monitor Controller interface

  2. Monitor Selection: Use the monitor dropdown to select which monitor to control (if multiple monitors are connected)

  3. Brightness Control:

    • Use the brightness slider or spin box to adjust monitor brightness
    • Changes are applied when you release the slider or finish editing the spin box
  4. Contrast Control:

    • Use the contrast slider or spin box to adjust monitor contrast
    • Changes are applied when you release the slider or finish editing the spin box
  5. Input Source: Select the desired input source from the dropdown menu

  6. Log Output: Monitor the log box for system messages and error reporting

Technical Details

Architecture

  • Framework: Qt 6.x with Widgets module
  • Language: C++
  • Platform APIs:
    • Windows: DDC/CI via dxva2.lib, lowlevelmonitorconfigurationapi.h, highlevelmonitorconfigurationapi.h
    • Linux: ddcutil command-line interface (planned)

Key Components

  • monitorController.h/cpp: Main application logic and monitor control functions
  • monitorController.ui: Qt Designer UI layout
  • main.cpp: Application entry point
  • monitorController.qrc: Qt resource file

DDC/CI Protocol

The application uses the Display Data Channel Command Interface (DDC/CI) protocol to communicate with monitors. This allows software control of monitor settings that are typically only accessible through the monitor's on-screen display (OSD) menu.

Compatibility

Tested Monitors

  • Most modern monitors with DDC/CI support
  • External monitors connected via HDMI, DisplayPort, DVI, or VGA

Known Limitations

  • Some monitors may not support all VCP (Virtual Control Panel) features
  • Laptop built-in displays typically don't support DDC/CI
  • USB-connected monitors may have limited support

Troubleshooting

Common Issues

  1. Monitor not detected:

    • Ensure your monitor supports DDC/CI
    • Try different cable connections
    • Check if DDC/CI is enabled in monitor settings
  2. Settings not applying:

    • Verify monitor compatibility
    • Check log output for error messages
    • Try running as administrator
  3. Application crashes:

    • Ensure Qt runtime libraries are installed
    • Check Windows compatibility mode if needed

Log Messages

The application provides detailed logging in the log box at the bottom of the interface. Common messages include:

  • Monitor detection results
  • VCP feature support status
  • Error codes and descriptions

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Future Enhancements

  • Linux support with ddcutil integration
  • macOS support
  • Color temperature control
  • Monitor profiles and presets
  • System tray integration
  • Hotkey support
  • Multiple monitor configuration management

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Qt Framework for the cross-platform GUI toolkit
  • Microsoft DDC/CI APIs for Windows monitor control
  • ddcutil project for Linux monitor control inspiration

Author

Roozbeh Gholami


Note: This application requires monitors that support DDC/CI protocol. Not all monitors support this feature, particularly older models or some budget displays.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages