Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable high-DPI scaling to support 4k screens #2404

Merged
merged 1 commit into from Oct 21, 2018

Conversation

Projects
None yet
7 participants
@phoerious
Copy link
Member

phoerious commented Oct 20, 2018

Description

This enables coordinate system scaling for high-DPI displays, which enforces correct proportions even on small 4k displays. The icons are scaled up without interpolation, which makes them crisp, but a bit pixelated. A new scalable icon set will solve this problem, but is not scope of this patch.

Resolves #548
Resolves #1381
Resolves #1710
Resolves #1888

As a small extra cookie, I snuck in enforcement of our icon set for the message box close icon (which has displayed a weird box on my KDE system ever since #2317 was merged).

Motivation and context

Icons were tiny, widgets had inhomogeneous proportions and windows were way too small as a result.

How has this been tested?

Tested on a 13.3" 4k Dell InfinityEdge display under Windows 10, works perfectly.

I also tested it in an Ubuntu 18.10 VM. It works in principle, but Gnome does not set all required properties. For Qt to pick up the correct scaling, DPI may need to be set manually using xrandr or KeePassXC needs to be started with

QT_SCREEN_SCALE_FACTORS=2 keepassxc

If the fonts are still slightly off, they can be corrected by also setting QT_FONT_DPI=225. I don't think I can fix this any better. It is definitely working, though, Qt just may not pick up all settings automatically.

Screenshots (if appropriate):

Before:
before

After:
after

Types of changes

  • Bug fix (non-breaking change which fixes an issue)

Checklist:

  • I have read the CONTRIBUTING document. [REQUIRED]
  • My code follows the code style of this project. [REQUIRED]
  • All new and existing tests passed. [REQUIRED]
  • I have compiled and verified my code with -DWITH_ASAN=ON. [REQUIRED]

@phoerious phoerious added this to the v2.4.0 milestone Oct 20, 2018

@phoerious phoerious requested review from weslly and droidmonkey Oct 20, 2018

@phoerious phoerious force-pushed the feature/dpiscaling branch 2 times, most recently from 65cb4ad to c32f417 Oct 20, 2018

@weslly

weslly approved these changes Oct 20, 2018

Copy link
Member

weslly left a comment

Looks good on macOS with retina/hidpi

Enable high-DPI scaling to support 4k screens.
This enables coordinate system scaling for high-DPI
displays, which enforces correct proportions even
on small 4k displays. The icons are scaled up without
interpolation, which makes them crisp, but a bit
pixelated. A new scalable icon set will solve this
problem, but is not scope of this patch.

Resolves #548, #1381, #1710, #1888

In addition, this patch enforces the KeePassXC icon
theme for the KMessageBox close icon, since using
the system theme produces very ugly icons on some
Linux systems.

@phoerious phoerious force-pushed the feature/dpiscaling branch from c32f417 to 37f6266 Oct 20, 2018

@phoerious phoerious merged commit b45f0e3 into develop Oct 21, 2018

3 checks passed

CodeFactor No issues found.
Details
Ubuntu Linux (KeepassXC) TeamCity build finished
Details
Windows 10 (KeepassXC) TeamCity build finished
Details

@phoerious phoerious deleted the feature/dpiscaling branch Oct 21, 2018

@jo-so

This comment has been minimized.

Copy link

jo-so commented Oct 21, 2018

Works for me. Looks fine. Thank you!

@emptyrusso

This comment has been minimized.

Copy link

emptyrusso commented Nov 9, 2018

Icons still super-small on windows: 3000×2000 (267 PPI) respectively.

@droidmonkey

This comment has been minimized.

Copy link
Member

droidmonkey commented Nov 9, 2018

This was merged into develop, are you using the 2.4.0 snapshot to test? https://snapshot.keepassxc.org

droidmonkey added a commit that referenced this pull request Mar 19, 2019

Release 2.4.0
- New Database Wizard [#1952]
- Advanced Search [#1797]
- Automatic update checker [#2648]
- KeeShare database synchronization [#2109, #1992, #2738, #2742, #2746, #2739]
- Improve favicon fetching; transition to Duck-Duck-Go [#2795, #2011, #2439]
- Remove KeePassHttp support [#1752]
- CLI: output info to stderr for easier scripting [#2558]
- CLI: Add --quiet option [#2507]
- CLI: Add create command [#2540]
- CLI: Add recursive listing of entries [#2345]
- CLI: Fix stdin/stdout encoding on Windows [#2425]
- SSH Agent: Support OpenSSH for Windows [#1994]
- macOS: TouchID Quick Unlock [#1851]
- macOS: Multiple improvements; include CLI in DMG [#2165, #2331, #2583]
- Linux: Prevent Klipper from storing secrets in clipboard [#1969]
- Linux: Use polling based file watching for NFS [#2171]
- Linux: Enable use of browser plugin in Snap build [#2802]
- TOTP QR Code Generator [#1167]
- High-DPI Scaling for 4k screens [#2404]
- Make keyboard shortcuts more consistent [#2431]
- Warn user if deleting referenced entries [#1744]
- Allow toolbar to be hidden and repositioned [#1819, #2357]
- Increase max allowed database timeout to 12 hours [#2173]
- Password generator uses existing password length by default [#2318]
- Improve alert message box button labels [#2376]
- Show message when a database merge makes no changes [#2551]
- Browser Integration Enhancements [#1497, #2253, #1904, #2232, #1850, #2218, #2391, #2396, #2542, #2622, #2637, #2790]
- Overall Code Improvements [#2316, #2284, #2351, #2402, #2410, #2419, #2422, #2443, #2491, #2506, #2610, #2667, #2709, #2731]
@affinityv

This comment has been minimized.

Copy link

affinityv commented Mar 20, 2019

Nice on HiDPI screen, but makes second screen that is FHD un-usable. Needs to be adjustable, best if automatic, when moving the displayed windows b/w monitors of different types.

@affinityv

This comment has been minimized.

Copy link

affinityv commented Mar 20, 2019

Version 2.3.4 still works perfectly well, both screens are fully usable for me, 2.4.0 doesn't have any option, that I can see to turn off this new "feature".

@stucki

This comment has been minimized.

Copy link

stucki commented Mar 22, 2019

I'm affected by this problem too. It looks like this is now discussed in #2808, so I suggest to continue over there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.