Bug 500531 - Can't select appropriate scale setting in Display Settings
Summary: Can't select appropriate scale setting in Display Settings
Status: RESOLVED FIXED
Alias: None
Product: systemsettings
Classification: Applications
Component: kcm_kscreen (show other bugs)
Version: 6.3.0
Platform: NixOS Linux
: NOR normal
Target Milestone: ---
Assignee: kscreen-bugs-null@kde.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-02-21 17:02 UTC by Allan Gardner
Modified: 2025-03-01 04:15 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In: 6.3.3
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Allan Gardner 2025-02-21 17:02:49 UTC
SUMMARY

Per https://wayland.app/protocols/fractional-scale-v1#wp_fractional_scale_v1:event:preferred_scale the appropriate denominator for the scale is 120, e.g. a scale of 174.1666...% (209/120) should be able to be selected. In the Display & Monitor "Display Configuration" dialog, this cannot be selected or input - it rounds it to either 170% or 175% (204/120 or 210/120).

STEPS TO REPRODUCE
1. Open Display Configuration dialog
2. Select monitor
3. Enter 174.1666% for the output scale

OBSERVED RESULT
It does not allow applying the new setting and the scale is rounded when switching away. The selector arrows go between 170% and 175%.

EXPECTED RESULT
Selected scale is applied, selector arrows allow selecting 174.167%.

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: NixOS, nixpkgs revision 73cf49b8ad837ade2de76f87eb53fc85ed5d4680
KDE Plasma Version: 6.3.0
KDE Frameworks Version: 6.10
Qt Version: 6.8.3

ADDITIONAL INFORMATION
Changing the constant from 20.0 to 120.0 in https://invent.kde.org/plasma/kscreen/-/blob/d35969460d99e042ae21802cf767c682ef31dfe0/kcm/ui/OutputPanel.qml#L107 appears to be sufficient to fix this.
Comment 1 Nate Graham 2025-02-24 15:27:58 UTC
Rounding to 5% increments is currently intentional here. Can you describe the reason why this isn't sufficient for your purposes?
Comment 2 Allan Gardner 2025-02-24 16:01:57 UTC
I have a monitor with pixel pitch 0.27 mm, and a monitor with pixel pitch 0.155 mm, both the same height. So to get them to match up exactly I need a scaling factor of 0.27 / 0.155 = 174.19%. Rounding to 174.16% is closer than rounding to 175%. With 175%, there is a noticeable mismatch when for example a window is split across the two screens.

Can you explain more about how 5% increments are intentional? It seems from bug 412447 the original intention was to "allow the user to enter an arbitrary [scaling] value" and then due to limitations of the Qt toolkit (specifically the lack of a decimal-input spinbox), this was retargeted to 5% increments.
Comment 3 Zamundaaa 2025-02-24 16:24:57 UTC
You can use kscreen-doctor to set such a specific scale.

(In reply to Allan Gardner from comment #0)
> Changing the constant from 20.0 to 120.0 in
> https://invent.kde.org/plasma/kscreen/-/blob/d35969460d99e042ae21802cf767c682ef31dfe0/kcm/ui/OutputPanel.qml#L107
> appears to be sufficient to fix this.
If you adjust the step size to still be 5%, I think that would be fine. Feel free to send a MR.
Comment 4 Bug Janitor Service 2025-02-24 17:40:22 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kscreen/-/merge_requests/351
Comment 5 Allan Gardner 2025-02-24 17:44:11 UTC
OK. I guess libkscreen itself also rounds to x/120, https://invent.kde.org/plasma/libkscreen/-/blob/4ced246d90d4a7f609b03a9d97174f04dda043b4/backends/kwayland/waylandoutputdevice.cpp#L379. At least, that is the behavior with kscreen-doctor.

I am not so sure about setting the scale to 5%. I did it in the merge request, but the behavior is (for example) that it goes from 174.167% to 179.167%, rather than going from 174.167% to 175% to 180%. It seems like it would need some logic to jump to multiples of 5%. I think it is easier to just allow the fine increments of 1/120.
Comment 6 Allan Gardner 2025-02-24 18:10:01 UTC
Git commit 8721fdad89958c295632f5e03fb8592f5f9892dc by Allan Gardner.
Committed on 24/02/2025 at 17:36.
Pushed by zamundaaa into branch 'master'.

kcm: Support scaling with denominator of 120

This matches the denominator used in Wayland's fractional scaling

M  +3    -2    kcm/ui/OutputPanel.qml

https://invent.kde.org/plasma/kscreen/-/commit/8721fdad89958c295632f5e03fb8592f5f9892dc
Comment 7 Zamundaaa 2025-02-24 18:14:01 UTC
Git commit 9b1ce203e2e3c97b9755e05d65570b7193280673 by Xaver Hugl.
Committed on 24/02/2025 at 18:10.
Pushed by zamundaaa into branch 'Plasma/6.3'.

kcm: Support scaling with denominator of 120

This matches the denominator used in Wayland's fractional scaling


(cherry picked from commit 8721fdad89958c295632f5e03fb8592f5f9892dc)

Co-authored-by: Allan Gardner <allan.e.gardner+kde@googlemail.com>

M  +3    -2    kcm/ui/OutputPanel.qml

https://invent.kde.org/plasma/kscreen/-/commit/9b1ce203e2e3c97b9755e05d65570b7193280673