| ▲ | BatteryMountain 5 days ago |
| Try Fedora with KDE. It has fractional scaling, per display. I set my laptop (1920x1080) to 120%, effectively making it 1600x900 but with very good physical size of things. I set my external panel (2560x1440) to 160%, effectively making it 1600x900 also. KDE even visualizes the two panels to be the same size. Ontop of these basic DPI settings, you can then tweak font/text even further. Its quite amazing. Windows cannot do custom dpi per monitor, only a single custom dpi that gets applied to all monitors. If you do go down the fractional scaling rabit hole, make sure whatever values you pick, both the height and width ends without any fractions after applying your custom dpi... that elimnates all blurs. In my example above, 2560/1.6 and 1440/1.6 gives nice round numbers, even though the operating systems typically only offer 100/125/150/175/200 etc. I built a small console app for myself that takes the resolution and tests all increments of 1% to see which resolution combinations gives values that don't end with fractions at the end. So it tells me which effective resolutions I will get at which % settings. Its awesome and made it so that I can easily make so that my laptop and external display has the same amount of space (or line of code) on the screen, even though they are different physical sizes. |
|
| ▲ | okanat 5 days ago | parent | next [-] |
| > Windows cannot do custom dpi per monitor, only a single custom dpi that gets applied to all monitors. This is wrong. Windows supports per monitor DPI since Windows 8 and have an improved API since Windows 10. I find it the only good implementation among desktop OSes. It is the only one that guarantees that font renders align with the pixel grid. Many old apps do not support this API though. It is opt-in and while there is a hybrid mode to let Windows scale fonts and Win32 components via API hooks, without implementing DPI change callback most apps turn into blurry mess. Usually browsers have the gold standard implementation of those callbacks hence why Electron is used everywhere. |
| |
| ▲ | BatteryMountain 4 days ago | parent [-] | | Brother I'm looking right at it. I cannot set one monitor to 120% and another to 160% (both are custom values), like on KDE. If I use a custom setting it gets applied to both monitors, in fact it gets grayed out for some reason - the values don't even show properly. Only a reset button available that logs you out to reset it to 100%. If I want to set them to different scaling factors, I have to use one of the values from the drop downs (100/125/150/175/200%), which is not what I want. | | |
| ▲ | okanat 4 days ago | parent [-] | | You have literally said this: > Windows cannot do custom dpi per monitor, only a single custom dpi that gets applied to all monitors. Here are all of my monitors at different DPIs: https://imgur.com/a/q3z2P1E . They don't have a "single DPI" that gets applied to all of them. The custom DPI setting is for changing all base system DPI. > I cannot set one monitor to 120% and another to 160% (both are custom values), like on KDE. Okay you're unhappy with the granularity. Yes Windows uses 25% granularity. I don't know if this will work but you can probably do a combination of changing the base DPI and then calculating the 25%. So you can set the base DPI to something like 120 (which is 125%) and then set the other monitor to 125% which gives 156%: I think the base DPI is stored in this registry key: HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI It is a DWORD value |
|
|
|
| ▲ | johnh-hn 5 days ago | parent | prev [-] |
| Thanks for detailed response. Do you happen to know if this is a recent change in Fedora/KDE? I tried somewhat recently, although I can't remember quite when that was. Gnome had experimental support for fractional scaling at the time but it wasn't good enough to switch to. > Windows cannot do custom dpi per monitor, only a single custom dpi that gets applied to all monitors. Yeah, support for custom DPI in general isn't great. I've been using https://www.majorgeeks.com/files/details/windows_10_dpi_fix.... for years to at least partially help. Edit: I think I answered my own question about how recent the change might have been: https://blogs.kde.org/2024/12/14/this-week-in-plasma-better-... This seems to be just after I last tried. I'll give it another go, thanks BatteryMountain! |
| |
| ▲ | jchw 5 days ago | parent | next [-] | | As a word of warning, it is still not 100% perfect. I've noticed that on my laptop, when the Zed editor is maximized, there is a tiny gap between it and the panel at the bottom. I think this happens when an app, even if it supports fractional scaling in general, can't handle a logical window size that is not a whole number. To be fair, this is one of the only apps I've really had any scaling issues with lately, and it is just a minor visual annoyance. The Linux DPI scaling story is finally pretty solid. Also, many apps (including Electron/Chromium apps) will still run under XWayland when using a Wayland session by default, because there are still a handful of small issues and omissions in their Wayland drivers. (It's pretty minor for Electron/Chromium so you can opt to force it to use native Wayland if you want.) In case of XWayland apps, you'll have to choose between allowing X11 apps to scale themselves (like the old days) or having the compositor scale them (the scaling will be right, even across displays, but it will appear blurry at scales higher than 1x.) I still recommend the Wayland session overall; it gives a much more solid scaling experience, especially with multiple monitors. | | |
| ▲ | johnh-hn 5 days ago | parent | next [-] | | > In case of XWayland apps, you'll have to choose between allowing X11 apps to scale themselves (like the old days) or having the compositor scale them (the scaling will be right, even across displays, but it will appear blurry at scales higher than 1x.) I still recommend the Wayland session overall; it gives a much more solid scaling experience, especially with multiple monitors. I'm wondering if this was the problem I was running into before – it sounds eerily familiar. I never got far enough to explore individual apps outside of preinstalled ones because I couldn't get comfortable enough. I appreciate your response as I wasn't aware of the different session types. | | |
| ▲ | jchw 5 days ago | parent [-] | | Yeah, it probably has something to do with this. In X11 sessions, the display server does not typically handle scaling. Instead, the desktop environments provide scaling preferences to UI toolkits that then do the scaling themselves. In Wayland, the display server does handle scaling. In both X11 and Wayland, you should usually see most applications following your scaling preferences nowadays. In Wayland sessions, you can ensure that applications always appear at the correct size, though at the cost of "legacy" applications appearing blurry. This behavior is configured in the Display Settings in KDE Plasma. Also possibly useful: if you like the KDE Plasma session, it has a built-in magnifier; just hold Ctrl+Meta and use the scroll wheel. | | |
| ▲ | johnh-hn 5 days ago | parent [-] | | > Yeah, it probably has something to do with this. In X11 sessions, the display server does not typically handle scaling. Instead, the desktop environments provide scaling preferences to UI toolkits that then do the scaling themselves. In Wayland, the display server does handle scaling. Presumably this leads to a more unified scaling experience. This was one thing I was concerned about before, as it didn't seem that way. That's a solid improvement on its own. > Also possibly useful: if you like the KDE Plasma session, it has a built-in magnifier; just hold Ctrl+Meta and use the scroll wheel. This is useful yes, along with the rest of your comments. Thanks for your help. |
|
| |
| ▲ | BatteryMountain 4 days ago | parent | prev [-] | | Thats why you need to calculate which "eventual resolutions" divides down to values without fractions after your scaling has been applied. So if you take a 2560x1440 panel, 160%/1.6 scaling factor will give you 1600x900, hence there won't be any artifacts. Between 100% and 200% there are maybe 5 combinations that will give you clean resolutions. As an example: Enter monitor Width (1920): Enter monitor Height (1080): 1920x1080 at 100% 1600x900 at 120% 1536x864 at 125% 1280x720 at 150% 1200x675 at 160% 960x540 at 200% 800x450 at 240% 768x432 at 250% 640x360 at 300% Aything besides these value WILL give you artifacts at some level. |
| |
| ▲ | yndoendo 5 days ago | parent | prev | next [-] | | Curious about GNOME fractal scaling issues you experience. I currently have the experimental feature enable at 150% scale for a laptop screen at 2560x1600 resolution. Have not had any issues by itself nor with an external 3440x1400 at 100% scale with GNOME 48. | | |
| ▲ | johnh-hn 5 days ago | parent [-] | | I wish I could give you a better answer here, but I honestly don't remember. I only remember that something I needed was missing from it for me to make the switch. |
| |
| ▲ | BatteryMountain 4 days ago | parent | prev [-] | | So Gnome does support it, but it is terrible. Last I tried it, it also applied the custom scaling value to all the displays like Windows. KDE does it perfectly. |
|