Desktop Linux suckage: window management

If we were talking about Mac OS or Windows, we wouldn't be able to talk about window management. The rest of the world compromised on good-enough solutions years ago, and it hasn't been a problem for them since. On Linux, though, we value our freedom to choose our own window manager more than we value the ability to get useful work done.

I should admit up front to my own past sins in this area; I wrote a window manager (lwm) once, but I stopped maintaining it years ago. I haven't even used it since the end of the 1990s.

At some point I grew up enough to realize that any advantages to be gained through choice of window manager were marginal, and just not worth the cost of being outside the mainstream.

Unfortunately, every few years, the Linux desktop gets a new default window manager. Well, the GNOME Linux desktop, anyway. I wouldn't know about the KDE Linux desktop, or any of the other alternative Linux desktops, but I doubt they're immune to this problem. The fact that none of the choices is as good as Mac OS or Windows' sole choice makes the problem worse, as does the fact that although it's easy to do the first 20%, no-one really wants the 10-year slog to quality, so we start again with a brand new 20% solution.

Nothing really important changes, but the title bar changes from dark blue to light blue, or the close button moves from the left to the right or back again, or the underlying scripting language [you didn't know or care it had] changes from Lisp to Python or Ruby, but never to a generic scripting interface so people can use whatever they like, because those responsible are either not bright enough to realize there's no One True Language, or are too authoritarian to really value any choice but their own. Anyway. That's a separate complaint.

The fact is, that's all you can expect from a change of window manager. Something trivial and unimportant to those who just want to use their computers rather than fiddle with them.

Sure, if you're lucky, there will be one or two minor noticeable improvements, but there will definitely be a whole bunch of regressions (stuff that used to be better and now sucks) that we spend the intervening years until the next regime change arguing about whether the changes are regressions, or whether they're actually improvements, and all the users are just too stupid ("unsophisticated", if we're feeling polite) to understand that we're changing random shit for their own good.

The best part is that, like all software, window managers have bugs. And some window managers are widespread enough, and some applications are caused enough trouble by those bugs, that work-arounds find their way into applications. And you can guess what happens if the window manager ever gets fixed or, more commonly, overthrown.

There was no regime change this year, though one's brewing. First some good news. Some kind soul finally fixed the long-standing problem where a new Firefox window wouldn't get the focus, because of some internal GNOME focus-related turf war no sane user really wants to have to know about. Excellent! I don't know whether it Firefox or GNOME, but someone finally budged, and the desktop is now slightly less annoying for it. In fact, in this respect, it's now back to where it was before the last regime change. Sweet!

That's all the good news I have, though.

Sadly, the current default window manager has a habit of opening every new window in the top-left corner of the display. It's okay for the first couple of windows you open, while there's still blank space on the desktop for it to place windows in without them overlapping, but as soon as a new window would have to overlap an old one, the genius window manager just starts to dump them all on top of each other in the top-left corner.

That's an awesome heuristic. I'm surprised no-one's ever come up with that one before. It does, after all, have the advantage of being zero lines of code. Even if it is pretty much always a bad choice.

This behavior is particularly annoying for me because I have a 30" display, so the top-left corner is on average a long way from where I happen to be. (And even on a 30" display, you can't fit many Firefox windows side-by-side before the screen is full.) If the window manager is going to dump all windows in the same place, how about the center, to be closer on average to my current mouse position?

Searching the web informs me that lots of other people hate this too, and that the fanboy consensus is that you should switch to Compiz (likely beneficiary of the next regime change), which, if you also install and run some special configuration program, has an option to put new windows in the center. A choice which still isn't quite as clever as the Windows or Mac OS heuristics, but would be a damn sight better than dumping everything in the faraway top-left.

The trouble is, Compiz and Java don't get along in a variety of ways (some of them Java's fault, though if there weren't so many X11 window managers, the JDK wouldn't be so full of crufty code to work round their various bugs). And did I mention that Compiz seems to make windows annoyingly hard to grab the edges of, making resizing from the edges hard? And moving from the title bar is hard too, because there you have the opposite problem, where it mistakenly decides that you're trying to resize rather than move? And sometimes clicks on the window frame go straight through to the window beneath? And it causes inadvertent focus-stealing with some apps? And that its wobbly-windowed stupidity makes me apoplectic? (And makes me fear that, yes, it is important to have a paymaster cracking a whip and saying "do useful stuff, not stupid but fun stuff".)

Don't get me wrong, I like the way windows fade out of existence when you close them, I quite like the shadows now they've toned them down, the alt-tab behavior is acceptable, the new window "zoom" effect is okay, and the excessive transparency of title bars is reminiscent of Mac OS 10.1, though I do doubt that the Linux world will learn as quickly as Apple did that it's not such a great idea. (You'd think that one advantage of follow the rest of the world's tail lights would be that you'd see them learn from their mistakes and not blindly make exactly the same ones. You'd be wrong, though.)

Luckily, Compiz is still an option in Ubuntu 8.04, and not yet the default, so at least someone is showing signs of understanding it's not yet of shippable quality. But unless they intend to keep a tight leash on the dog of an interface that's coming our way, a load of things that are working fine will break when the switch comes, and the countdown will start on the next rewrite. That would be par for the course.

Problem: if you keep starting from scratch, you never get far enough to really polish, you waste effort re-doing the bits that were never a problem, and you cause more work (and problems) for everyone else, too.