Bug 486462

Summary: Fractional Scaling affects the wallpaper, making it look blurry even when sized 1:1 with the monitor
Product: [Plasma] plasmashell Reporter: max
Component: Image & Slideshow wallpaper pluginsAssignee: Plasma Bugs List <plasma-bugs-null>
Status: RESOLVED INTENTIONAL    
Severity: minor CC: fanzhuyifan, nate, notmart, qydwhotmail
Priority: NOR    
Version First Reported In: 6.0.4   
Target Milestone: 1.0   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: 2x Zoomed comparison between 100% and 150% scaling

Description max 2024-05-02 15:23:05 UTC
Created attachment 169107 [details]
2x Zoomed comparison between 100% and 150% scaling

SUMMARY
The wallpaper looks slightly blurry when using fractional scaling, even when it has the same resolution as the screen. This might be because the image is scaled up with the system scale only to be resized again to fit the screen.

STEPS TO REPRODUCE
1. Use a wallpaper with clear lines/edges
2. Set the system scale to a non-integer value

OBSERVED RESULT
The wallpaper looks blurry because it is unnecessarily resized

EXPECTED RESULT
The wallpaper is displayed as-is, unaffected by the system scale

SOFTWARE/OS VERSIONS
Linux: Fedora Kinoite 40.20240429.0
KDE Plasma Version: 6.0.4
KDE Frameworks Version: 6.1.0
Qt Version: 6.7.0

ADDITIONAL INFORMATION
That the wallpaper is scaled with the system scale becomes especially obvious when using the "centered" positioning mode for the wallpaper. Even though the image should fit the screen perfectly, it is sized up according to the system scale factor.
Comment 1 fanzhuyifan 2024-05-02 20:15:52 UTC
Is this on wayland or x11 or both?
Comment 2 max 2024-05-02 21:21:35 UTC
It happens the same way on both wayland and x11.
Comment 3 Nate Graham 2024-05-03 19:50:47 UTC
Yup, I'm afraid this is expected due to the way fractional scaling works on Qt: we can't fractionally scale some things but not others, unfortunately. Well, I mean technically we could, but since the scaling is per-process, it would require splitting up plasmashell into multiple processes which is considered infeasible for the time being.