5 ms·
> (aka the Wayland Nightmare and DPI issues everywhere) It’s more of a pick-one. Wayland has pretty good per monitor scaling; your X11 apps will be blurry but
by jchw 6y ago
> (aka the Wayland Nightmare and DPI issues everywhere)
It’s more of a pick-one. Wayland has pretty good per monitor scaling; your X11 apps will be blurry but that’s about all I’ve experienced.
The Windows DPI nightmare long surpassed it anyways. On a typical Wayland desktop the usual biggest problem is the DPI being set wrong for a monitor. Even on X11 the worst you get is applications that don’t scale correctly.
On Windows mixed DPI is damn near unusable. I don’t mean “sometime in the past.” I mean, now. I have a laptop with a HiDPI screen, that I sometimes connect to two monitors that are normal DPI. The process of connecting them causes Windows to throw a fit, jumping between multiple DPI levels before actually settling on the correct DPI. This often screws up apps that are slow to respond to DPI changes, like Explorer, which sometimes manages to resize my locked taskbar during this process, and it frequently leaves applications in a totally broken state. Here’s an explorer window that didn’t make the transition. https://m.imgur.com/VgrStHQ https://m.imgur.com/VgrStHQ
Some builtin Windows apps don’t handle DPI switches correctly even then. You have to entirely sign out for Explorer to enforce minimum column widths correctly on a new DPI, and it just won’t on mixed DPI; it appears to adjust them on startup and never again. I filed a feedback item about this one.
As for third party apps, it’s a crapshoot. Qt supports scaling but on Windows mixed DPI setups its broken. IDA Pro launches with enormous window borders and some controls still scaling when loaded after a DPI change. You can of course use compatibility mode to force System scaling, and that makes it work at the cost of blur.
Why are third party apps such a crapshoot? Partly, history. Windows has undergone no less than 4 different iterations of DPI scaling. No, really:
https://docs.microsoft.com/en-us/windows/win32/hidpi/dpi-awareness-context https://docs.microsoft.com/en-us/windows/win32/hidpi/dpi-awa...
There’s plenty of good information on this issue, but as someone who has tried to adhere to per monitor v2, I can say it is not terribly easy unless you limit yourself to dialogs. Builtin resources like fonts do not appear to update, so you need to create your own to support scaling a window with Win32 controls.
And that’s not all. I close my laptop lid when my laptop is docked. Windows helpfully sleeps the laptop even though external monitors, a mouse, and a keyboard are connected. There is no fix. Of course, I tried to make my own solution. https://github.com/jchv/SwitchOnDock https://github.com/jchv/SwitchOnDock
All in all, the Linux desktop sucks, but the Windows desktop gets a free pass because everyone has internalized the ways that it sucks. Meanwhile Linux with Wayland has progressed meaningfully and is still being regarded with unwarranted disdain nonetheless. It isn’t quite to the level of macOS with scaling, but it’s close. And that docking issue is also something that is not an issue on either Linux or macOS. So YMMV.
One thing I cannot do is allow someone to shame Linux for its DPI problems without acknowledging Windows DPI problems.
- jfim 6y ago> And that’s not all. I close my laptop lid when my laptop is docked. Windows helpfully sleeps the laptop even though external monitors, a mouse, and a keyboard are connected. There is no fix. Right click the battery icon in the system tray > Power Options > Choose what closing the lid does > Do nothing.
- hvis 6y agoAnd yet, my Ubuntu does the right thing in both cases: - When the lid is closed and there are no external monitors, the laptop goes to sleep. - When there is an external monitor, it switches to it entirely. And when the external is disconnected after that (the laptop is still closed), it goes to sleep fine.
- jchw 6y agoOf course, then lid close will never work as intended. What I want is for lid close to sleep IFF no external monitors are connected, regardless of whether the machine is on AC power or not. Thank you for the suggestion, and in my actual solution, I basically programmatically switch this setting on and off based on whether or not external monitors are connected.
- SiebenHeaven 6y agoI think there's an option in settings to select the primary display - if you set that to the external display, theoretically it should work. My laptop stops sleeping on lid close with this.
- tjoff 6y agoAs it should not. Need to move the laptop into another room? Better not close the lid! Just disable it and actively sleep when you do want to sleep. This is the most sensible way even if you never have any external monitors attached.
- jchw 6y agoWhat the hell. It’s one thing to say you prefer nothing to happen on lid close. That’s cool. I don’t want that. This is like saying, “I would like a mocha” and having the barista say “Wrong, you want an iced coffee.” No, I do want my laptop to sleep on lid close, just not when it’s docked. This is clearly not much to ask for considering Linux and macOS do it just fine by default and I can still disable sleep on lid close if I want to. Why is it better for Windows to do this wrong? It is clearly a side effect of the fact that the Power Policy system only differentiates between AC and DC and no other conditions. What happens when I move rooms? Well, I only have one docking setup. But also, it is not a problem if my laptop spuriously goes to sleep. (My solution does not automatically sleep the laptop when it is undocked, either, so this is also still not an issue.)