This is a rant that's been bugging me for a long time and has just recently boiled over.
My work computer runs Windows. I wouldn't have chosen that, but there are good reasons for it. I'm told. Whatever. I'm a technology pro, and I take my daily dose of copium so I can deal. But there is a fact of life about my working environment that amuses and frustrates me in equal measure: certain applications are just really bad at window placement on returning from sleep mode.
Now, this is actually a hard problem for three reasons. First, I work for a contracting firm so I actually sit at three sites (home, company office, and client facility) and due to hot-desking at the client site maybe seven different desks.1 Second, I'm a programmer and I prefer to work with multiple monitors. Five of those seats supply an external monitor to pair with my laptop's screen, one of them gives my two externals, and then there is the "sad" seat. Finally, I'm an older programmer and modern displays have lots-n-lots (tm) of itty-bitty-teeny-weeny pixels, so I use auto scaling to make everything easier to read.
The good news is that modern external display buses give the OS enough information that it can "remember" setups and restore all your settings. Yeah! But still, my machine is repeatedly going to sleep with one setup and waking up to find itself connected to another. How operating systems applications should respond to a changing display environment like that is far from trivial, but I feel like things have finally settled out a bit in recent years.
Still not every application is good at this, and my work environment features a few regular offenders.
In third place is that dancing-to-a-different-drummer perennial, Emacs. Particularly Emacs running from a WSL Linux (running from msys it seems to be fine). Every time you wake the computer at a new display location you can expect WSL Emacs windows to migrate to the virtual desktop that was active when you put the machine to sleep. And sometime to unnecessarily switch to the main display as well. Sigh.
Second place goes to Microsoft Teams which seems to jump virtual desktops on an intermittent basis. Often when you've missed an appointment. Maybe? But it also occasional does that when you're just working normally, so it's not clear that it relates to sleeping or to changing display environments at all.
And the biggest irony is Microsoft Edge. Which just can't seem to recall where it was or how big it was. More or less ever. At all. I mean, I re-size and reposition this POS a dozen times a day. What the #&|!, Microsoft?!? Honestly, if a major Microsoft product team can't figure out Microsoft's own interfaces for this stuff why would you expect anyone to get it right? And what does it say that many other application do a pretty good job none-the-less?
1 At least it's just one physical computer, which limits the issue of file synchronization to the usual domains of software repositories and shared drives.
I had to use a WIndows laptop at my last company too and had that aggravation too (not as many sites as you, but more than one). Rearranging things to where they were supposed to be was so tedious! And I feel like Microsoft could have averted part of the problem and didn't: if a window was minimized when the machine slept (or disconnected), it should be able to get its size and position from the new context when it wakes up. But no -- disconnecting from an external monitor to carry the laptop to a conference room and plug into a different external monitor resizes everything to the laptop screen even for windows that weren't being displayed! There's got to be a better way.
ReplyDeletePart of the problem is, of course, that user opinions are going to differ. The heuristic I'd like (when possible everything, including top-left corner positions, window sizes, control sizes, and font sizes, should scale with the size of the display so that things look "the same" on the new display) is going to be anathema to users who really care about the pixels.
ReplyDeleteAnd dealing with cases when it is _not_ possible is another headache. The safe thing to do is just move everything to be fully contained on the first virtual desktop of the main-display. But picking apart the resulting jumble is awful.
Slightly better is to move everything that seems to be in trouble. Which can at least leave some bread crumbs for putting the other windows back.
For windows that are currently being displayed, there's no one-size-fits-all solution. User settings (preferences) are a tool they could use, but of course users need to be able to find them too.
ReplyDeleteFor windows that are currently minimized, I don't know why they need to do anything at all. Moving from one set of external monitors to another should not require that minimized windows get messed up -- they're never being rendered on the laptop-only screen, so there's no need to adjust for that screen size. If I know I'm going to be moving, I'll minimize what I care about and then restore on the other end. (This is how I assumed it would work the first time I did this, and was surprised to have to spend the first few minutes of a meeting fixing things in the conference room to set up my presentation again.)