Implement comprehensive high-DPI scaling support for 4K and high-resolution displays #2860
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses issue #2855 where users experienced extremely small UI elements (text, buttons, icons) on 4K and high-DPI displays, making Meshroom difficult to use effectively.
Problem
On modern high-resolution displays, Meshroom's UI elements appeared tiny and were hard to read or interact with because:
Solution
Implemented a comprehensive high-DPI scaling system that provides both automatic detection and manual control:
1. Automatic DPI Detection
2. User Controls
3. Persistent Settings
Implementation Details
Core Infrastructure:
meshroom/ui/app.py
with DPI detection and scaling managementUISettings.qml
singleton providing scaling factors to all QML componentsdp()
for dimensions andsp()
for fontsUI Components:
MaterialToolButton.qml
andFloatingPane.qml
to use scaled dimensionsDisplaySettingsDialog.qml
with preview functionalityUser Experience:
Testing
Impact
For users on 4K/High-DPI displays:
For users on standard displays:
This solution follows Meshroom's existing patterns and conventions, making it easy to extend to additional components as needed. The minimal, surgical changes ensure compatibility while providing significant usability improvements for users on modern high-resolution displays.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.