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).
- 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
- VGA 1 & 2
- DVI 1 & 2
- DisplayPort 1 & 2
- HDMI 1 & 2
- USB-C
- Windows 10/11 (64-bit)
- Qt 6.x framework
- Visual Studio 2022 (for building from source)
- Monitor with DDC/CI support
- Linux distribution with ddcutil support
- Qt 6.x framework
- Monitor with DDC/CI support
- Download the latest release from the releases page
- Extract the files to your desired location
- Run
monitorControllerCrossPlatform.exe
- Qt 6.x SDK
- Visual Studio 2022 with C++ development tools
- CMake (optional)
-
Clone the repository:
git clone https://github.com/roozbeh-gholami/Monitor-Controller-Cross-Platform.git cd Monitor-Controller-Cross-Platform -
Open the solution file in Visual Studio:
monitorControllerCrossPlatform.sln -
Build the project:
- Select your desired configuration (Debug/Release)
- Build → Build Solution (Ctrl+Shift+B)
-
The executable will be generated in:
x64/Debug/monitorControllerCrossPlatform.exeor
x64/Release/monitorControllerCrossPlatform.exe
-
Launch the Application: Run the executable to open the Monitor Controller interface
-
Monitor Selection: Use the monitor dropdown to select which monitor to control (if multiple monitors are connected)
-
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
-
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
-
Input Source: Select the desired input source from the dropdown menu
-
Log Output: Monitor the log box for system messages and error reporting
- 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)
- Windows: DDC/CI via
monitorController.h/cpp: Main application logic and monitor control functionsmonitorController.ui: Qt Designer UI layoutmain.cpp: Application entry pointmonitorController.qrc: Qt resource file
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.
- Most modern monitors with DDC/CI support
- External monitors connected via HDMI, DisplayPort, DVI, or VGA
- 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
-
Monitor not detected:
- Ensure your monitor supports DDC/CI
- Try different cable connections
- Check if DDC/CI is enabled in monitor settings
-
Settings not applying:
- Verify monitor compatibility
- Check log output for error messages
- Try running as administrator
-
Application crashes:
- Ensure Qt runtime libraries are installed
- Check Windows compatibility mode if needed
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
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Linux support with ddcutil integration
- macOS support
- Color temperature control
- Monitor profiles and presets
- System tray integration
- Hotkey support
- Multiple monitor configuration management
This project is licensed under the MIT License - see the LICENSE file for details.
- Qt Framework for the cross-platform GUI toolkit
- Microsoft DDC/CI APIs for Windows monitor control
- ddcutil project for Linux monitor control inspiration
Roozbeh Gholami
- GitHub: @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.