Remix.run Logo
okanat 5 days ago

> 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