Why doesn’t the Maximize button maximize across all monitors?


Cheong wonders why there isn't a way for the Maximize button to maximize a window across multiple monitors. (Troll asks a similar question: Why doesn't Windows support spanned mode for multiple monitors?)

We tried it that way at first. And we quickly discovered why it was a bad idea.

Having multiple monitors behave as a single giant display surface creates a bunch of problems, because there's this annoying line down the center that breaks up everything it touches. Everything on one side of the line is on one monitor and everything on the other side of the line is on the other monitor. (And add additional annoying lines if you have more than two monitors.) If that line intersects text, then you have letters chopped in half, and then you have to mentally glue the two pieces back together in order to read them.

What's even worse, the broken-up-text problem shows up more often than you might expect, because a lot of programs like to do things like center their dialog boxes. The result is that nearly every dialog box that you see is perfectly bisected by the annoying line. The dialog boxes consistently appear in the worst possible location.

(Accessibility note: The text in this table cell is identical to the text in the previous cell.)

Having multiple monitors behave as a single giant display surface creates a bunch of problems, because there's this annoying line down the center that breaks up everything it touches. Everything on one side of the line is on one monitor and everything on the other side of the line is on the other monitor. (And add additional annoying lines if you have more than two monitors.) If that line intersects text, then you have letters chopped in half, and then you have to mentally glue the two pieces back together in order to read them.

What's even worse, the broken-up-text problem shows up more often than you might expect, because a lot of programs like to do things like center their dialog boxes. The result is that nearly every dialog box that you see is perfectly bisected by the annoying line. The dialog boxes consistently appear in the worst possible location.

It gets worse if the two monitors do not have exactly the same dot pitch, because it means that no matter how you position your monitors, you will never get all the lines of text to line up perfectly. If you carefully align the monitors so that, say, the baselines of the first lines of text match up, you'll find that the bottom lines don't. Not only do your eyes have to navigate the horizontal gap between the monitors, they also have to navigate the vertical gap created by the pixel density mismatch. Which is even harder because the vertical gap varies from line to line.

It's like that trick where you put a pencil in a glass of water and observe it from the side. Now imagine a glass filled with pencils, and each pencil refracts differently. And now imagine each pencil is a line of text you're trying to read.

(Accessibility note: The text in this table cell is identical to the text in the previous cell.)

It gets worse if the two monitors do not have exactly the same dot pitch, because it means that no matter how you position your monitors, you will never get all the lines of text to line up perfectly. If you carefully align the monitors so that, say, the baselines of the first lines of text match up, you'll find that the bottom lines don't. Not only do your eyes have to navigate the horizontal gap between the monitors, they also have to navigate the vertical gap created by the pixel density mismatch. Which is even harder because the vertical gap varies from line to line.

It's like that trick where you put a pencil in a glass of water and observe it from the side. Now imagine a glass filled with pencils, and each pencil refracts differently. And now imagine each pencil is a line of text you're trying to read.

Wait, I'm not finished yet. Things get still worse if your two monitors are not the same size. In that case, the virtual screen is larger than the visible region. For example, my monitor arrangement has a landscape monitor on the left and a portrait monitor on the right, with the bottoms of the monitors aligned.

   Virtual monitor   
   
Monitor 2
   
Virtual
Monitor
   
Monitor 1

If a window were maximized across the virtual screen, the contents of the upper left corner would not be visible at all!

Now, there may be specific cases where it would be meaningful to maximize a window across the virtual monitor, and if a program wants to do that, it can certainly implement that on its own. But even for a picture-viewing application, maximizing across the virtual monitor may not be a great idea: Pictures often have people in the center, and then you end up with somebody's head cut in half.

Comments (42)
  1. kinokijuf says:

    Other multimonitor stuff: you have those VB5 apps that don’t accept clicks if the windows coordinates are negative.

  2. Mc says:

    What a coincidence.  I was testing one of our in house applications this morning.   It has a field with a dropdown list on it (our own control), when I put the screen on to my second monitor and pressed the dropdown button, the dropdown list was not appearing. In fact it was appearing, but not on the correct monitor, somehow the coder had mapped it's position onto the first monitor and not the second.

  3. Rob P says:

    RealTimeSoft's UltraMon has a button that will maximize across all monitors based on some rules (I don't believe it would maximize like Raymond's picture, for example).  That said, I can count the number of times that I've ever used that feature (since 2006) on one hand, and it's probably more by accident than on-purpose.

  4. Mike Mol says:

    This presentation of the problem is awesome. Kudos.

  5. Motti says:

    … and then you end up with somebody's head cut in half.

    You say that like it's a bad thing.

  6. SimonRev says:

    Wow, I bow before the CSS-fu master.

  7. Trevel says:

    Historical note: Some early attempts at multi-monitors would treat them like a single monitor with a double-wide screen. I had this at one point; the problems listed above were really, really annoying. It might have worked out better if I'd had two absolutely identical monitors, I suppose; instead, I was forced to have one of them use a lower resolution than optimal in order to match up with the other. And if I wanted to use just the one monitor for something, I had to manually resize the window to fit.

    In short: The new way is much, much better.

  8. Joshua Ganes says:

    I've tried using a pair of monitors spanned for a couple of days, and I remember how annoying it was to get centered pop-up dialog boxes. I'd always move them to one side or the other instead of trying to read them in their broken form.

    I'm frequently impressed by your ability to create great visual demonstrations without resorting to using images. Keep up the good work, Raymond.

  9. SimonRev says:

    Actually, I should point out that I have been using 5 monitors since Win 98 was released and I realized that the IT intern who sat next to me had a pile of disused monitors and PCI video cards he had pulled out of PCs that he was upgrading.

    I do occasionally find a reason to have a window span multiple monitors but on those rare occasions I don't mind manually resizing the window.  I would have to say that Microsoft made the correct choice in this case.

    And for what it is worth Mc and kinokijf, since my bottom right monitor is Primary, it means that 4 out of my 5 monitors have negative coordinates.  I see instantly when a program is poorly behaved in those circumstances.  Over the years programs have gotten a lot better.  In the VB5/6 days most programs had huge issues with it.  Nowadays most do fine, with the occasional menu or tooltip issue being the most common.  Oddly I see a lot of programs that seem perfectly OK with negative X coordinates, but still freak out about negative Y ones.  

  10. @Mike Mol, I totally agree! I viewed the source right away to see how he did his "trickery".

  11. Imre Koszo says:

    This makes perfect sense. A little off-topic but I wonder why Cleartype wasn't properly implemented for vertical monitors though…

  12. kinokijuf says:

    @Mc: Windows Address Book 6 on a fully updated XP has the same bug. Minor, but annoying.

  13. Dee says:

    The only time I find this annoying is for applications that insist on using MDI/tabbed interfaces (VS!) that don;t allow me to move a single code window to the other monitor.

    Thankfully, I still use VB6 that has an SDI mode :)

  14. William C Bonner says:

    A friend has a 3 monitor setup and they are configured as a single display surface. It always drives me nuts when I maximize a window and it's suddenly five feet wide. He primarily plays a flight simulator on it that way, and I'll admit that the immersive quality of the game is pretty cool, it's just annoying for normal applications.

  15. dsmtoday says:

    I've found it very handy to stretch MDI applications across multiple monitors.

  16. I also think the presentation of this post is great.

    The only application that I have spanning monitors is my programming editor (Epsilon/emacs), and then I split the window to have one source file filling each monitor, so the divide is no issue. Since that's just one of N applications I use, the Windows default works for me.

  17. Stubie says:

    Of course there's other reasons why you would want a properly spanned desktop across multiple monitor. One is gaming. The other is monitors like the IBM T221, where to get 48Hz refresh you can (given an appropriate adapter) drive it with two DL-DVI feeds. In that case there is no border. It'd be nice if Windows had this ability built-in. Luckily AMD have Eyefinity, which does just this. It'd be nice if it was available in NVIDIA drivers too (like it was in XP/XP64). It seems silly to not have an option, because there are cases where it can be used incorrectly, at the expense of the cases where it would be useful and work beautifully.

  18. Torkell says:

    There is one program which I regularly resize such that it covers multiple monitors: WinMerge. I size it so that the two files being compared each get their own monitor. And even then simply maximising the window wouldn't work as the file divider isn't in the middle of the window, but is offset slightly due to space taken up by the sidebar and scrollbars.

    For everything else, I tend to position windows such that they are (or at least the portion I'm interested in is) on one monitor only.

  19. Nick says:

    To echo others, very nice job on the demonstration!

    @Dee – For what it's worth, VS 2010 supports floating source windows, including on secondary monitors.

  20. TKW says:

    @Imre Koszo I don't know, but because ClearType (TM) relies on the precise layout of each of the RGB subpixels which make up a pixel I expect it would not work optimally if these pixels' layout was rotated 90 degrees as happens when a monitor is put on its side for a makeshift portrait screen.  Perhaps the ClearType tuning software would help here.

    Many thanks for another excellent post Raymond.

  21. 640k says:

    Even number of monitors isn't very useful, a monitor in the center of the desktop is required to get a good user experience. Though it would be useful if GetDesktopWindow(), which countless of apps boundcheck against, returned the whole desktop.

    [You're wishing for something that is already true. -Raymond]
  22. A says:

    > (Accessibility note: The text in this table cell is identical to the text in the previous cell.)

    Clever ***.

  23. Ben says:

    I use Remote Desktop to get around this problem.

    You can maximize it and it will appropriately fill all monitors, even if they are of different sizes and resolutions.

    The Windows team could learn from the RDP team on how to implement this well.

  24. cheong00 says:

    I'm the one who asked this question.

    The background of this question, is that when I was visiting the control room of certain datacenter, I saw they combined multiple huge LED monitors to form a large display for the alert console. Each time they started the application, they have to manually pull the window to make it full screen. That's why I wish to ask whether there's "smarter" way for them to make it maximize across monitors.

    [As I noted in the article, special-purpose applications can customize their maximize behavior. -Raymond]
  25. cheong00 says:

    Regarding monitors of different size, I'd think that since we have access to the size of each monitors, and we have the monitor's "index" number, it's not difficult to calculate the maximum rectangle area coordinates. In fact, the computer will have better chance to accurately fit to the maximum area.

    And the dot pitch is seldomly a problem for people who want this configuration, because they tend to buy the same model at once. For people who can't, or have to buy a different one because of broken monitor, they'll understand the visual experience would be suboptimal.

    [I must live in a seldom world. I've never had a multimon setup where all monitors were physically identical (much less purchased at the same time). -Raymond]
  26. vwood says:

    Dialog boxes are their own problem.

  27. Drak says:

    @Cheong: Here at work we 'inherit' monitors when new ones come in, so the chance that both monitors are the same is rather slim. Also, there are applications out there that will allow you to specify sizes and hotkeys for those sizes and all sorts of things so you don't have to manually resize windows.

  28. Henk says:

    @cheong00: And how would you fix this with a laptop / monitor setup? I'm not going to pay for two laptops, just to get the effect properly. I like how Microsoft fixed it, perfect for the rest of the world, bad for one situation instead of perfect for this one case and the rest of the world having to move dialog boxes for the rest of their lives.

  29. chentiangemalc says:

    Great post Raymond. This is in my opinion unquestionably the right design choice. Boggles my mind some people still want this feature. For those with edge cases where this is useful please be aware there is nothing stopping the app developer for implementing this, as is already the case. I.e. Games with multi-monitor support.

  30. @cheong00 You have the answer to your question: the application could have position its windows to fill the area of multiple monitors. Or in case the application was a third-party one, it would be quite easy to write another application that would reposition the window of the alert console.

    So I actually agree with others, Windows does good job satisfying the most common scenarios.

    On the other hand, in Windows 7 by pressing Windows+Shift+Up one can easily make a window fill entire vertical space without changing the width of the window, it's very handy.

    @Raymond Great CSS magic. At first I thought it were images, and then went straight to post source to see how it's done. Wonderful!

  31. mrfixitfox says:

    @cheog00, "Each time they started the application, they have to manually pull the window to make it full screen." Why doesn't the application save it's current size (eg in the registry) as all other programs do, and start back up at that size?

  32. voo says:

    Since I'm writing this currently from a workstation with a 30" and 24" dell monitors, I agree that the current solution is quite satisfactory. And I doubt most people who use multiple monitors for work have the same models or even bought them at the same time. Sure the whole multimonitor gaming hype has certainly lead to people buying monitors in triples, but the rest of us probably don't. There's just not much to be won by doing so – a smaller side monitor is just fine..

  33. @cheong00 says:

    > That's why I wish to ask whether there's "smarter" way for them to make it maximize across monitors.

    As has already been mentioned: they could just do a *little* bit of research and buy something like Ultramon. It doesn't cost much, certainly affordable for a "datacenter".

  34. Joshua says:

    [I must live in a seldom world. I've never had a multimon setup where all monitors were physically identical (much less purchased at the same time). -Raymond]

    Get headaches a lot? I immediately reject multi-monitor setups where the monitors are not identical because I can't handle the transitions.

    BTW: I do have one program for which maximize across two (yes exactly two) identical monitors is the correct behavior, but it turns out the program is not multi-mon aware. I got lucky and it remembers its size from last close so I dragged it to the right size.

  35. In the days prior to this behavior, software such as Nvidia's nView were essential to fix things like the "dialog in the center" issue. Those programs were sometimes of the "I bet somebody got a bonus for this" nature, as each brought along their own set of inconsistencies and issues with how different multimon scenarios were handled.

    These inconsistencies led to the creation of the CCD APIs http://msdn.microsoft.com/en-us/library/windows/hardware/ff539590%28v=vs.85%29.aspx and their associated requirements. Now, every IHV should exhibit the same behavior in how topology is chosen, saved, restored, et cetera.

  36. cheong00 says:

    [As I noted in the article, special-purpose applications can customize their maximize behavior. -Raymond]

    Obviously for some reason their application don't save it (whether they actually don't, or some reason prevent them saving/loading the previous location), so I can notice that they resize it again and again.

    [I must live in a seldom world. I've never had a multimon setup where all monitors were physically identical (much less purchased at the same time). -Raymond]

    I don't know… I saw combined display panels in at least 3 datacenters so I thought it's common. But yeah, I guess laptop+monitor configuration is a more common scenerio given the number of laptops we have.

    Or in case the application was a third-party one, it would be quite easy to write another application that would reposition the window of the alert console.

    Just to remind you that in production enviornment of datacenter, getting software in aren't "that" easy. I remember that when I was installing data simulator to do configuration test, the application requires .NET v4 runtime but I forgotten I'd need to install WIC package first to install that on Win2008R2. I gone through quite a hassle to get the package in.

  37. ender says:

    At home I bought monitors every 2-3 years, and kept the last two in multi-monitor configuration. With such a gap between purchases, it'd be nearly impossible to get two identical models (not that I wanted to – each new monitor I bought was larger).

    At work, one monitor was bought specifically for me, and the others I just picked up when I found them unused. I did manage to get two identical monitors this way, but the other two are different.

    So, unless the multi-monitor setup was intended as such from beginning, you'll rarely see identical monitors in multimon setups.

  38. DWalker says:

    [I've never had a multimon setup where all monitors were physically identical.]

    I tried using a multi-monitor setup once where the monitors were not identical.  It drove me crazy.  I reverted to one monitor until I could buy another monitor of the same model number as my first one.  Now it works great.

  39. Neil (SM) says:

    @cheong00:

    I think the datacenters, etc, with those kind of setups are more of a special case.  

  40. cheong00 says:

    @ender: At the previous company I worked for, we gone from single monitor to bi-monitor configuration 2 years ago. Since the company always buy monitors in batch, we were able to match almost everyone two monitors of same model. (Except notebook users who get just another monitor, of course)

    It's just a matter of how large to company size is, and how far the management went to ensure everyone get 2 identical model of monitors.

    Btw, I just asked whether there is such a feature built-in, not why there isn't (although it's nice to know). I thought it's possible to have such a feature. And if there is, Raymond is someone who has high chance to know. If there is, I would forward to knowledge to my now ex-coworkers to make their life easier.

  41. Worf says:

    One of the programs I use has this problem – it would display a dialog in the center of the virtual monitor, so it got split across both monitors. Which is funny since otherwise the app is well-behaved… just one dialog it centers on the virtual monitor and not the one it's running on.

  42. Damian says:

    I see people gasping at the CSS, and it's nice and all, but am I missing something about how much easier a simple mock-up in Paint (sufficient for this) would be, or is there some sort of weird image restriction that plagues this blog?

    [There is a weird image restriction that plagues my home-grown content management system. (Also known as "a script that runs every morning and picks an article to post.") And images aren't accessible. And it wouldn't have driven the point home as well. -Raymond]

Comments are closed.

Skip to main content