While some want Linux multi-monitor support removed
, others are looking for it to be improved. Multiple display support for Linux has improved over the years with X.Org and desktop environment advancements, it's still generally less than ideal, especially for Linux gamers.
With the liaising earlier this week between a long-time Linux desktop developer (circa 1996) and a game company, besides talking about the AMD Catalyst driver being on his blacklist of junk
, he had many thoughts to share on the state of Linux multi-monitor support.
Since this isn't a problem for just one hardware/driver vendor or game company -- and this remains an active problem on the Linux desktop -- copied below is the extracted part of his message in hopes it spurs other forthcoming Linux game developers to better think through their multi-monitor support and more broadly their window manager interactions. Plus there's some recommendations from this long-time Linux desktop developer about better handling the situation.
From my office setup
, I can frustratingly confirm that Linux multi-montior support and handling can be a mess at times. Just not from the Linux graphics driver side but, yes, with games and desktop environments / applications each handling the multi-screen interaction differently.
[If using SDL] beware it has some nasty habits when it comes to fiddling with screen resolution and multi-monitor support. please please please make it play nice! i know it's trying to do these things because it "has to" but it has nasty side-effects.
...i have a few games here (i even bought them... *GASP*), and the almost all behave horribly when it comes to trying to be fullscreen and if i have multiple monitors. from some quick looking it seems SDL just doesn't care that my xinerama setup has 1 root window spanning 2 screens (insanely common in linux/x11 for people with > 1 screen. the most popular by far), BUT my window manager has DIFFERENT virtual desktops per screen. i can switch desktop on one and not the other (unlike most other linux desktops). to be honest.. everyone who discovers it falls in love with it and wonders why it isn't default.
the problem comes with games. some try screw with my screen res and end up messing up at least 1 monitor and getting it wrong and not even making their window the right size. others just bypass the window manager (override-redirect window) and make their window the size of root and span both screens. they don't know that some of their window is hidden as its out of screen bounds (2560x1440 and 1920x1200 monitor so the pixels on root below the 1920x1200 screen are invisible). also they totally mess up badly if the game crashes. it leaves my screen in the resoltuion it set up, with me having to go find my screen settings dialogs and reset it back to normal.
now here comes my "we are happy to help" bit. i understand that sometimes games DO want to adjust resolution. there is already a netwm request for becoming fullscreen. please use it liberally. the wm them may choose to fullscreen you across 2 screens, or only on 1 screen - depending on policies. this lets me keep my irc, im, browser or whatever windows on 1 screen and a game on the other. nicely. what you don't have is some way of having the resolution changed for you AND get this fullscreen policy handling. on the wm side we can extend protocol/property handling to do this for you. should you crash, wm restores the resolution. if your window loses focus it can also restore resolution. of course the wm will need to advertise it supports this and you need to detect it.
the other thing you may need/want is to maybe span all screens. but to do this you need to know the geometry of those screens. again this should be a "please, pretty please" request with wm dealing with it. the user may have 3 screens and want to always ban the use of a specific screen (maybe it has a special use).
now here comes the catch. it MAY be better to open multiple windows and not have 1 big one. if you have screens of vastly differing resolution then you avoid using excess backbuffer sizes. i have some real world examples where 1 screen has 60dpi and another 300dpi. the 300dpi screen is special and you never want to span it. you want to specially handle it. now again you'll need help. you need to know how many windows to open up and then mark them appropriately. you need to be given some general relative geometries of those windows. they then can be specially managed and placed accordingly. again - will need some custom stuff to handle this.
i don't know if you are planning on tackling the multi-screen thing at the moment, but at a minimum it'd be nice to be a good citizen in the single window/screen+fullscreen department above.