Why isn’t the screen resolution a per-user setting?


Via the suggestion box, Dominic Self asks why screen resolution is a global setting rather than a per-user setting. Well, first of all, it's not even a global setting. It's a session setting.

That it's not a global setting is not readily apparent most of the time since only Windows Terminal Server is set up to support multiple simultaneous interactive sessions. On Windows Terminal Server, you specify the properties of the virtual monitor you wish to connect with, including resolution, and the server accommodates your wishes. Well, up to a point. I mean if you ask for a 1,000,000×1,000,000 pixel screen, the server is probably going to say "As if!" (The Remote Desktop Connection feature found in, for example, Windows Vista Ultimate is basically the same thing, but on a smaller scale.)

You can have ten different people logged on, each using a different video configuration. Some users might be running at lowly 640×480, others at 800×600 and still others at 1024×768. Some of them are running in 16-color mode, others 8-bit color, and some really adventuresome people with a lot of network bandwidth running at 24-bit color. You can even have the same user logged on more than once, with each session running at a different screen resolution.

If the resolution settings really were per-user, you'd have some conflict resolution to deal with. If a user logs on and specifies a resolution different from the one stored in the user profile, does the new resolution overwrite the existing one? Or is the new resolution just a temporary resolution and the original one should stay? If a user tries to log on a second time with a conflicting resolution, is the second resolution ignored? Does the second resolution force the first session to change its resolution? Do you just get two sessions running with different resolutions? Which one gets saved as the user's preferred resolution?

You also have to come up with a way to customize the resolution of the screen when nobody is logged on, a way to reconcile the effect of roaming profiles, what happens if you do a Run As on a user whose screen resolution conflicts with the user who opened the session.

I'm not saying that these problems can't be solved. They probably can, given enough thought, but not all of the solutions will please everybody all the time, because no matter what you do, somebody will tell you that you're an idiot. And think of all the time and effort necessary to design how the feature should work, nail all the boundary conditions ("What happens if your per-user setting conflicts with an administrative policy?"), then code it up, write automated tests for it, run it through usability exercises ("Does the behavior match what users intuitively expect?" The answers may surprise you.) write up the documentation and help text, and continue maintaining the code, tests, and documentation for the feature's anticipated lifetime (which in this case is probably forever). Could all those resources have been spent on something that would have a greater total benefit to the customer base? (The answer to that is always "Yes"—everybody and her sister-in-law can find a way to finish the sentence, "I can't believe they wasted all that time on this stupid feature instead of fixing...")

Remember, every feature starts with minus 100 points.

Comments (50)
  1. Jeff says:

    Use case:

    I like 1920×1200 on my 24″ lcd with xp.

    My kids and wife don’t read computer screens all day and strongly like a setting with lower resolution.

    Changing back and forth is a pain.

    There seems to be no way to get what we want so one of us is always unhappy or we both switch resolutions after logging in.

    I imagine a shared computer to be a very common use case.

    [Actually, according to statistics posted on the E7 blog, shared computers are nowhere near the common case. -Raymond]
  2. Pierre B. says:

    … or you could just use the same logic used for the appearance (windows colors, fonts, etc). The logic is all there. All you need is to add a screen resolution entry in that configuration set.

    Maybe it would be the optimal solution, maybe not. At least it would be consistent with what user currently experience on that front.

    [The difference is that you don’t connect to a computer from “a monitor that uses blue as the button color” or “a monitor that uses Arial.” Any monitor can display blue, and any monitor can display Arial. But not any monitor can display 1600×800. -Raymond]
  3. Brian says:

    [Actually, according to statistics posted on the E7 blog, shared computers are nowhere near the common case. -Raymond]

    It looks like 29% of computers have 2+ users.  I’d say that’s a pretty common case.

  4. Neil says:

    I always thought that it was a per-user setting, and it continually annoys me on some PCs when something (but not this, presumably, given the subject) switches the screen resolution when I log in, and back again when I lock the screen or log out… well, those screens are different sessions, which makes sense in a way, but where are the settings coming from for those sessions?

  5. laonianren says:

    This is a bit of a moot point now.  Using an LCD monitor with anything other than its native resolution looks terrible.

    Re Jeff.  In my experience when people grumble about high resolutions they actually want physically larger text rather than lower resolution.  Sadly, the DPI setting in XP isn’t per-user either.

  6. Alexandre Grigoriev says:

    OK. If all users (and FUS screen) get the same display settings, why the hell does XP reset the video card every time user switch happens? Even worse, XP does reset the video card not at the moment when the desktop opens, but a split second after that.

    I would understand if it involves a change in display settings, but it does not!

    Vista is even worse. It does a video reset when it switches to “Switch user” screen (which with one popular video card takes 5 (five!) seconds), and then does another reset (another 5 sec) when you switch to the user’s session. Oh, and Win+L logic is completely broken in Vista.

    Have you ever seen Vista logoff? It jumps back and forth between “logging off” screen and the desktop several times. So lame.

    [The reset happens at a session change, because sessions are isolated. The real question is “Why are video drivers so sucky at resetting?” Indeed, the hope was that Windows XP’s use of reset would convince video driver vendors to make their reset code better. So much for the “Make crappy code look crappy to convince the authors to make them better” theory that everybody seems to be a big fan of. -Raymond]
  7. Rick C says:

    [Actually, according to statistics posted on the E7 blog, shared computers are nowhere near the common case. -Raymond]

    <i>It looks like 29% of computers have 2+ users.  I’d say that’s a pretty common case.</i>

    "A pretty common case" is not "the common case."

  8. Adrian says:

    Oh, more confusion over the term "resolution".  For me resolution is measured in dots per inch, because it’s like the resolving power of an optical system.  When you say something like 1024×768, that’s screen size measured in pixels.  When that’s mapped to a physical device, you can then derive resolution, er, dpi.

    So when Dominic Self asked why you can’t change the resolution per user, I assumed he meant the dpi setting.  That remains a good question.  I’ve never understood why I can play with the number of pixels on my screen all day long, but I need to elevate to Administrator to change the dpi used in screen calculations.  I also don’t understand why changing the latter forces a restart.  A WM_SETTINGCHANGE broadcast and a repaint should be sufficient for an application to respond to a change in the dpi setting.

  9. Bryan says:

    "Have you ever seen Vista logoff? It jumps back and forth between "logging off" screen and the desktop several times. So lame."

    I’ve been using Windows Vista since Beta 1 on a fairly regular basis at work and have never seen this behavior even once.  This includes use of two of the major graphics card vendors as well as a large variety of PC vendors.

    Honestly, I think you picked up a bad video card.

  10. Brian says:

    Adrian makes a very good point.  "screen size in pixels" is really a hardware setting, and thus it makes sense to be global (or rather, per monitor).  "resolution" (ie: "how big things are in real life") should be a per-user setting, and windows should be able to figure out DPI by dividing the two.  Unfortunately, that would require a lot of work and fall apart once you throw 16×16 icons in the mix.

  11. GregM says:

    [Actually, according to statistics posted on the E7 blog, shared computers are nowhere near the common case. -Raymond]

    <i>It looks like 29% of computers have 2+ users.  I’d say that’s a pretty common case.</i>

    "A pretty common case" is not "the common case."

    Jeff said "I imagine a shared computer to be a very common use case.", not "the common case", or "the majority of cases".  Raymond is the one that said "the common case".  I’d agree that "more than 1/4" is "a very common case".

    Now, whether or not "a shared computer where different users want to run at different resolutions" is "a very common case" is a completely separate issue.  By definition, it can’t be more than 29% of all installations if we go by that statistic, and is likely to be a lot less.

  12. Jeremy says:

    [[Actually, according to statistics posted on the E7 blog, shared computers are nowhere near the common case. -Raymond]]

    [It looks like 29% of computers have 2+ users.  I’d say that’s a pretty common case.]

    Even so, the numbers here may not be totally accurate. My wife, kids and I share a computer, but all under the same user account. I like my resolution higher, she likes hers lower. So, we do the old married thing and compromise.

  13. Alexandre Grigoriev says:

    Bryan,

    Try Vista x64, with FUS enabled, and with quite a few backround OEM_specific crapware. I don’t believe this is video card. The video card doesn’t control switching of the desktops (Logging Off message is on a separate desktop).

  14. Alexandre Grigoriev says:

    "My wife, kids and I share a computer, but all under the same user account"

    Jeremy,

    You just set yourself up for the malware feast!

    Are you running with Administrator privileges, as well?

  15. Gabe says:

    The most annoying aspect of this is that the DPI setting appears to be per-computer, instead of per-session, per-user, or per-monitor (as it should be). This means that a remote desktop connection with a tiny monitor gets stuck with the same DPI as the huge monitor.

  16. RichB says:

    I sometimes wonder what would have happened if the wasted work done on Longhorn prior to the reset had been spent on more useful features like this.

    The Mac I’m typing on has a user for me, and a user for my 2 year old. I’m running at 1900×1200 and he runs at 800×600. Seems a very useful use-case to me (as he’s not that good with a mouse).

    I so wish that user satisfaction was a higher criteria during feature triage at MS, just as I wish that QA was a higher criteria at Apple…

  17. Gene says:

    I love how everyone actually treats this like some sort of critical issue.

  18. Mark says:

    I think some video drivers preserve the user’s resolution somehow.  That’s the best solution (doesn’t affect remote desktop driver), but still annoying.

    Resolution should have been virtualised post-XP, so programs could be zoomed.  Come on MSR…

  19. DrkMatter says:

    "Even so, the numbers here may not be totally accurate. My wife, kids and I share a computer, but all under the same user account."

    For the sake of this discussion, this use-case is just the same as a computer that is used by a single person, since per-user settings would not do any good if everyone uses the same user account.

  20. Jeff Tyrrill says:

    @Jeremy: "My wife, kids and I share a computer, but all under the same user account. I like my resolution higher, she likes hers lower. So, we do the old married thing and compromise."

    I don’t know why people inflict this on themselves. Using separate user accounts is SO easy. Sharing an account categorically eliminates the benefits of personalization (per-user settings) and any improvements that Windows or applications may make to it–like fast user switching added in Windows XP.

  21. Mark says:

    Jonathan: http://blogs.msdn.com/ts/archive/2008/08/07/smart-sizing-the-ts-client.aspx

    Here’s one for Yuhong Bao: last time I checked, 4000×4000 was the maximum RDP display size.  It fits into a WORD, anyway, so couldn’t exceed 4 gigapixels…

  22. Mark says:

    Jonathan: oops, misunderstood.

  23. manicmarc says:

    Fair point Jeff. The E7 blog also mentioned many people wrongly change resolution instead of using a higher DPI setting.

    Why can’t the DPI setting be per user? That would be really useful.

  24. cwindhausen says:

    I’ve a similar question. Why isn’t the Screen Saver setting a per-machine setting instead of a per-user? If you turn the machine on but no one logs in, I’d expect it to still display a screen saver of my (the administrator’s) choosing. A non administrator can’t change the screen saver settings anyway (at least on XP).

  25. Alexandre Grigoriev says:

    cwindhausen,

    It’s screwier than you think. An user can’t change monitor power-off delay. Nevertheless, the monitor goes power off after some users, and doesn’t do that after another (monitor stays powered)… And often, when you fire a Task Manager, you see a screen saver process running in another (disconnected) session. I thought a disconnected session should not be running a screensaver.

  26. Pierre B. says:

    "Any monitor can display blue, and any monitor can display Arial. But not any monitor can display 1600×800."

    Ever plugged a different monitor on an existing computer? Somehow, even if the monitor has a lower resolution, Windows copes with it.

    Before the question is asked, no I would no make the resulting automatic lower-resolution setting permanent. It’s a fall-back. nVidia used to get this wrong. (You’d lose your resolution settings each time you upgraded the video driver.) Now it gets it right.

  27. Joseph Koss says:

    I would not say that people "wrongly" change resolution instead of DPI, since many programs render incorrectly with non-default DPI settings.

    Remember that on XP the problem was pretty rampant, which pretty much trained users to not change that setting under any circumstances. My father, who still runs XP Home and has an outdated prescription for his glasses, falls right into this catagory.

  28. Mark Sowul says:

    "My wife, kids and I share a computer…I like my resolution higher, she likes hers lower. So, we do the old married thing and compromise."

    So, you use the low resolution then, eh?

  29. Cheong says:

    Actually, according to statistics posted on the E7 blog, shared computers are nowhere near the common case. -Raymond

    Actually, in my home I own 3 computers, my sister own 2, my brother own 1 computer. All these PCs are not shared.

    And all relatives I know of have 2+ PCs (that number includes Media Centers), I guess PCs are so common that they’re more or less like cell phones now?

  30. Ned says:

    There are a number of free utilities that will do this for you. SetRes & UniqueDisplay come to mind. You could also find ResSwitch (which is command-line) and implement it via a logon script based on username. All free on the internet.

  31. Jonathan says:

    Virtual PC display "driver" resizes the guest’s screen when you resize the gust OS’s window on the host. It’s pretty slick. I wish Remote Desktop did that too.

    Remote desktop can connect with *any* resolution. For example, if you use "Remote Desktops" mmc, it will just use whatever screen area is left inside the mmc window. You can easily end up with 987 X 742 res. And it works without a hitch.

    There was a time when I needed this feature – per-user res (only when logged-on interactively). On our 17" CRT, I liked 1024X768, and my wife liked 800X600. Later on the 17" LCD, I liked the native 1280X1024, and she preferred 1024X768. I managed to convince her to use the native res eventually. Now with fixed-res displays, you’re better off with the native res anyways, so there’s less need for it. Just make sure it changes when you switch screens (like connecting to projector/etc).

    Alexandre Grigoriev: My laptop does that 5-second delay. Really annoying. I never noticed what logoff looks like, because I never use it. And I agree that some of the logon/lock screens are really screwy.

  32. Weeble says:

    "Actually, according to statistics posted on the E7 blog, shared computers are nowhere near the common case." -Raymond

    Interestingly, that graph shows two things:

    * The majority of computers have more than one user account.

    * The majority of user accounts share a computer with one or more other user accounts.

    Interpret that how you will.

  33. Friday says:

    Why do you leave pingbacks from your marketing department only?

  34. ender says:

    Speaking of remote desktop, has anybody noticed that when you connect to remote desktop you can’t interact with maximized windows with mouse (the clicks are sent to whatever is under those windows) until you unmaximize the window (you can either minimize and maximize it again, or just restore it). This seems to only happen when the remote desktop resolution is same as native resolution, and it happens to me on both XP and Vista.

    Any idea what’s causing this?

  35. Miral says:

    One thing that does annoy me is when I use RDC to connect to my PC from a computer with a different desktop resolution (which defaults to displaying my machine with that resolution as well, which is fair enough).  Then I come back to my real machine, log in again, and discover that all my windows have resized.

    Now, I have a lot of windows sized to full screen but not actually maximised (primarily because I dislike the way that the captions go black on Vista — yay for fixing that in Win7!), and I kind of expect those windows to resize (since I also expect them to not go off-screen while in RDC).  That’s fair enough (though if someone can work out some magic to avoid it, I’d be overjoyed).

    What I really don’t understand is that those windows that *were* maximised will *also* be resized to fit the smallest rectangle.  For example, if I started with a 1280×1024 window (ignoring the taskbar for the moment for simplicity), logged in on a 1440×900 machine, then returned to my 1280×1024 machine, the window would now be 1280×900 and *still "maximised"*.  In order to actually make it fill the screen properly again I have to restore it and re-maximise it.

    This is just weird behaviour.

  36. Gregory Kong says:

    Regretfully, the term ‘session’ in Windows NT (and derivatives) does not map to ‘user login session’. As you have said, Raymond, you can even log in multiple times as the same user with different resolutions.

    Of course, I understand Microsoft not wanting to enable multiple users interacting with the same *workstation* OS simultaneously. And while it is a nuisance to change resolutions back to my default (especially after some visually challenged individual monkeyed around with it), at least there are ways and means of reducing the amount of work required to do so. And restoring the desktop icon positions, which is the real major thing.

    Now, I admit it would be nice if we could run *two* users (one local console, one remote desktop) interactively at the same time on a workstation OS. Technically no challenge, but something for the higher-ups at Microsoft to think about. The number of times I wanted to kick guests staying at my house because they forgot to switch user or logoff and I needed to remote in to do stuff…

  37. SuperKoko says:

    It is a per-session setting? Really?

    My family has a Windows XP based computer. Several sessions are open at once and we switch between them with the fast user switching system.

    However, the screen resolution is shared by all sessions. When it’s modified in one session it’s modified in others.

    I wouldn’t call that "a per-session setting" but a per-terminal (or per-desktop) setting,

    I always assumed there were some sort of graphic server (not necessarily with a network protocol but with a local inter-process communication protocol) and multiple sessions on the same desktop created several graphic server sessions (like X.org on GNU/Linux that you can launch several times on the same desktop with a different DISPLAY number and bound to a different TCP port).

    In that case, a screen resolution should be bound to a graphic server instance (as with X.org), with a possibility of multiplexing graphic server instances on the same display.

    Obviously I’m wrong.

    I see other possibilities: There might be a "GDI server" at a lower level: With global (not bound to a window but to the whole display) basic drawing and bit blitting API + raw mouse and keyboard input. There would not be more than one instance of this GDI server running on a desktop at a time. This would be the low-level abstraction layer. Then, there might be a Windowing server at an upper layer. Several instances of this Windowing server could run on the same desktop but they would share the same unique GDI server. Of course, the GDI server would manage the screen resolution. Hence, one screen resolution per desktop.

    I don’t think there’s anything wrong with this design, but it should have been possible to provide per-session (Windowing server) screen resolution as there’s at most one Windowing server using the GDI of a desktop at a time (with possibilities of switching between them). Switching between windowing servers would change the screen resolution as needed.

    The case of multiple screens is basically the same except the low-level abstraction becomes a list of screens with their own individual resolutions rather than a single screen with a single resolution.

    That’s a wild guess.

    I hope what I wrote makes sense.

    "A pretty common case" is not "the common case."

    The point is that their owners are very common. Even more common than you think.

    Computers do not buy Windows. People (users) buy Windows.

    29% of COMPUTERS are shared. Since these computers are shared by at least two people, while non-shared computers are owned by only one person, that makes much more computer-sharing people than you think.

    Actually, if there’s an average of 1 user per computer (with some people owning several computers while others share a computer), which is probably wrong, but that’s just an example, then, there’re at least 58% of computer users who share at least one of their computers.

    Now the question is: Knowing that this concerns lots of people, would this feature be a significant improvement?

  38. Mark says:

    SuperKoko: that’s not what I see.  Have you tried changing the resolution as a non-admin user?  Perhaps it depends on the driver (not sure how)?

  39. SuperKoko says:

    This is how it’s architectured:

    http://windowsitpro.com/Files/3594/Figure_01.gif

    I guess it depends on whether the video driver stores the resolution in session space.

  40. SuperKoko says:

    Have you tried changing the resolution as a non-admin user?  Perhaps it depends on the driver (not sure how)?

    Yes, I did.

    The video card is an Asus Extrem AX600.

    Same behavior with another computer owning a GeForce Ti 4200.

    Windows XP on both.

    I guess it depends on whether the video driver stores the resolution in session space.

    You may be right.

  41. Etienne says:

    Oh the nice programmer’s dodge ball game…

    MS should have been working on separating resolution from actual on-screen size of things since Win95…

    Not your best post…

  42. laonianren says:

    Etienne wrote "MS should have been working on separating resolution from actual on-screen size of things since Win95…"

    The DPI setting (which separates resolution from on-screen size) has been supported since Windows 3.1 to my knowledge, maybe earlier.  At least 16 years.

    It wasn’t well supported by application vendors, possibly because the setting wasn’t easy to find and consequently not used much.

    And worse, Vista took a dump on all the applications (like mine) that supported it already.  When Raymond asks "how do you convince developers to pay their taxes" one answer is "don’t dump on the ones who do".

  43. Anonymous Coward says:

    Two things. Firstly, I can confirm that the Windows DPI settings doesn’t work as expected. Not just because third party applications ignore it or screw up because of it, but because even some internal Windows controls’ rendering gets borked. Running XP Pro here.

    Secondly, when I have a shared computer kind of situation I put a little program in my startup folder that changes the resolution to what I need it to be. Not elegant, but it works.

  44. Brian Hoyt says:

    Has this changed somewhat in Vista?  I was surprised the first time I switched user and the resolution first changed on the login screen then changed yet again to a third resolution on login.  Is it now stored per user and applied per session?  This is on Vista Business / Ultimate running in a domain context if it matters.  I was used to the resolution being per machine in XP.

  45. iroha says:

    I don’t know why people inflict this on themselves. Using separate user accounts is SO easy.

    My wife doesn’t like having more than her own profile on her computer because it’s ‘hers’ and, as such, she thinks it’s inconvenient to have to click her profile when she reboots. Not to mention that if I’m not careful to log off on ‘my’ computer she’s likely to just use my profile since it’s already logged in rather than logging in as herself and waiting for her desktop to become ready.

    Don’t even get me started about having password-protected accounts. Then you’re obviously ‘hiding’ things.

    I understand Microsoft is filled with individuals with a huge grasp on technological matters, but sometimes I wonder how often they deal with real people, or, at the very least, my wife.

  46. Cooney says:

    Not to mention that if I’m not careful to log off on ‘my’ computer she’s likely to just use my profile since it’s already logged in rather than logging in as herself and waiting for her desktop to become ready.

    I solve this with a 5 minute autolock. winxp isn’t my favorite thing, but it works pretty well.

    Don’t even get me started about having password-protected accounts. Then you’re obviously ‘hiding’ things.

    That’s a serious problem that has nothing to do with computers. My GF has trust issues and she hasn’t broached the password thing.

    sometimes I wonder how often they deal with real people, or, at the very least, my wife.

    I don’t really have a solution for this. Do you?

  47. SuperKoko says:

    > but sometimes I wonder how often they deal with real people, or, at the very least, my wife.

    Enough to make it *too* easy to use Windows XP with a password-unprotected auto-login admin account.

  48. SM says:

    @Cooney: You might want to consider calling the people with the butterfly nets.

  49. Joseph Koss says:

    I think the number one reason that the DPI setting is so poorly supported and basically sucks is that it has nothing at all to do with Dots-Per-Inch, and that in actuality it seems to be impossible for an application developer to properly aquire the physical dimensions of the display device without asking the user how big his screen is.

    Had it been properly named to something like User Scaling Factor (USF) or System Scaling Factor (SSF) then it might have been better understood and better supported by developers.

    I had played around with the system metrics several years ago trying to derive the physical display size, but found that no matter what resolution I was in (1280×1024, 800×600, didn’t matter) I always came up with 96 DPI (ie: it was just an echo of the DPI setting, completely unrelated to dots per inch)

Comments are closed.