Dual screen support is made of fail on Linux. In this post, you will learn why. I reference Ubuntu 9.04, but it applies to other distributions also. It is my hope that by documenting some of the problems, I will add intangible weight to the issue and make whoever fixes it feel good about their work.
Let’s walk through setup, shall we? First, you are required to log out after initially adding a second monitor to the system. I understand why this is, but it’s lame. I hoped that Ubuntu 9.04 would have had some magic way of fixing this. Apparently not.
Now, suppose the user is actually using the secondary monitor which has a smaller vertical resolution . One very nice feature of many window managers is edge resistance — when a window is close to the edge of the screen, it will sort of cling to the edge a little. This is usually what the user wants. As it currently stands, this is broken. The screen is treated as a big rectangle with smaller rectangular views overlayed on top of it — the monitors. The edges windows resist are on the big rectangle, not the smaller ones. This means that an edge on the smaller secondary monitor will not have resistance. This is inconsistent with the larger monitor, which is bad.
Finally, let us think about laptops. A large number of dual screen users are also laptop users, because laptops don’t usually have very big screens, and because pretty much all laptops (even low end ones) support dual screens. Laptops, being as portable as they are, have a tendency to be used in multiple locations. Some of these locations might have dual screens; some might not. When you leave a location which has dual screens, your first inclination is to unplug the second screen. Unfortunately, any windows which were visible on the second screen are now not visible at all. They now exist in a magic imaginary space off to the side of your primary screen. If you put the laptop into a power-saving mode like sleep or hibernate before pulling the second monitor out, you will have the same problem. The only solution is to end your session by shutting down the computer or restarting X11.
Advanced users will overcome this quirk by either moving all their windows off the secondary screen before unplugging it, or holding down a meta key and making blind grabs into the void in hopes of fishing out a desired window. Meanwhile, Microsoft Windows handles this issue easily. It simply moves all the windows that were on the secondary screen onto the primary screen. Why can’t X, xrandr, or the window manager do that?