Linux Window Placement is Unproductive

2009-10-21 15:25 - Linux

Unix has a long-steeped tradition and philosophy which I normally agree with: create small tools that work together to solve bigger problems. It works really well at the command line, with classic tools. Chaining pipes together can get quite a few things done. It's totally failed in the GUI world, however.

I'm used to how all my programs act on Windows. If I launch Firefox (or Thunderbird, or Pidgin, or EditPlus, or Photoshop, or Volume Control or ... the list goes on) and put it in the top-right corner of the screen, close it, and reopen it: it comes back in the top-right corner of the screen, where I put it! I'm extremely used to working this way. It follows the desktop metaphor very well, I put particular things in particular places, and I'm very used to looking at that particular place to find that thing. (Aside: It's one of the things I really dislike about the 30" monitor I have at work now. There's a lot of space, but I'm used to the dual-monitor setup which divides said space into separate places. But I digress.)

It seems that in Windows land, every single program implements the "remember my size and position" logic, and restores said settings next time. The exceptions, which do not do this, get launched in a "cascade" arrangement: starting from the top left, each is down and to the right by a little bit, about (exactly?) the height of the title bar. The command prompt is a classic example of this. It's not useful. But, since Windows offers nothing better in terms of window placement, every (okay, almost every) piece of software solves this problem, and basically all in the same way: launch in the same place that it was last time.

One way to make this clear is to look at Pidgin. By default on Windows, the Pidgin "Buddy List" window, and each "conversation" window launches in the same position it was in last time. On almost every computer I use, for me that is the top-right and bottom-right corner respectively. I usually keep at least a bit of those corners visible at all times, and can easily switch to those windows with the mouse (see Fitt's Law: stuff on the edges, and especially in the corners (both edges) is really easy to get to with the mouse), and can see when something is going on in that window (or if it appears suddenly). And on Windows, this works. On Linux? Not so much.

See, Linux follows the Unix tradition, and things are often built in small cooperating pieces. So the GUI system as a whole delegates to the window manager ("software that controls the placement and appearance of windows within a windowing system in a graphical user interface") all the work of placing, sizing, and interacting with the actual windows holding the programs. As a result people who write Linux software (even cross-platform capable software) seem to think along the lines of, "Pidgin doesn't place the window, it is up to your window manager to decide the position."

But the window manager manages the windows horribly! First, I have to install a package that doesn't come by default (CompizConfig Settings Manager, aka ccsm) to get to the "Place Windows" setting. The choices are cascade, centered, smart, maximized, and random. What do these settings do? Starting from an empty desktop, and opening a few different programs, I see:

Starts at an inconsistent position, near but not at the top-left corner. Following windows go in a column downards, the left edges aligned, until the vertical space is consumed. The next columns start at the same vertical position as the first window, unless this window is taller than the first window in the previous column, in which case it starts at the same vertical position as a lower window in the previous column. (The top-left corner of the new window starts at the bottom-left of a previous window if possible, otherwise at the top-right corner. Once neither are possible, the scheme starts over at the top-left of the whole screen. Each new window goes in the "first" available space.)
Every single window starts perfectly centered in the screen, all on top of each other.
Each window goes as far towards the top-left corner as it can, without covering any other windows. If there is no empty space big enough to hold it, it goes wherever it covers the most empty space (the desktop) and the least other windows possible.
Every window takes up the entire screen.
Just what it says on the tin. A surprise every time you open the window! Where will it go this time?!

So what are the merits of these schemes? They all stink! Well, I can sorta see the value of maximized on a small screen (netbook). But there are still certain apps (calculator, IM, etc) that have a smaller window and are just fine that way. Cascade is very difficult to predict (look at the description!) and is generally useless unless you're starting a whole bunch of the same program, in which case it will set up a nice grid. But that grid will be offset from both the top and side of the screen, wasting space.

Centered is pointless unless you enjoy spending your time rearranging your windows so that you can see them. Random is just as pointless for (nearly) the same reason. The chance that the window goes where you want it is virtually zero.

Smart is what is left. In certain, rare, cases, it's very useful! When I launch that one-off program, I probably do want it to not overlap anything. I might be firing up a calculator, and want to still be able to read the web page/document/etc that I'm getting the numbers from. But it fails miserably for the programs that I use every single day, and probably multiple times in every day. I want those to be in a particular place, and I want it every time.

As mentioned, it's the viewpoint of (some!) programmers that the window manager should be managing the windows, so i.e. Pidgin leaves me stuck. There is a workaround in the "Place Windows" plugin. But it reveals the reason that the program, and not the window manager, should be responsible. I can't choose carefully enough where which window I want to place. The choices are limited, most programs don't expose any distinguishing information, and even if they did, one big slider from -32767 to 32767 just doesn't get me where I want to go.

Why does it work on Windows? Because Windows doesn't even try. It doesn't try to stuff all this information into a narrow difficult API. Each program knows what windows it has, and how to identify each. And it stores four simple numbers (x, y, width, height) and uses them each time. So simple and easy that nearly every program does it. But that's too tough for Linux. It's even been pointed out, numerous times:

So where am I left? I managed to hack together some rough placement rules. Not many. Some programs (Firefox) get it right. Some programs get it wrong. Both my Prism apps (mail and calendar) start in the right place, except down and to the right by the exact space that the window border/title takes up, and must be moved each time. Eclipse starts in the right place, but is always six pixels too narrow, and nineteen too short. The "smart" placement mode almost gets the rest right. But there are still quite a few cases that I get surprised with where the window ends up, based on some funny coincidence of what screen space happened to already be used, and what desktop space happened to be peeking through at the time. Sigh.

So, to conclude: Where are we and why? Window placement is better on Windows than on Linux. Because the Unix philosophy, combined with the FOSS community, has let us down. The app developers say "the window manager should handle it" They even explicitly disable their window-position-remembering code that's already there, for Linux, because in theory some other layer handles the window management. The window manager developers say "the application should handle it" and "this should be done in user space" and the desktop environment developers say "this is impossible to do in user space". All the while, the users want it and are not getting it. Everyone along the chain claims someone else should do it, and closes the tickets as WONTFIX. And the users continue to suffer. Another item in the list of things that work fine on Windows, but are painful and/or annoying on Linux.


Linux is not an operating system
2009-10-26 21:19 - itsjareds

Linux is the kernel, not the operating system. You seem to be talking about X/compiz in particular. Just because they do not manage your windows the way you want them to, that doesn't mean that X as a whole is a less-than-competent window manager. The beauty of open source software is that you can always suggest your ideas.

You might find this article interesting:

I know...
2009-10-27 09:22 - arantius

I know I'm using the term "linux" incorrectly, but I'm purposely acting like a less-savvy real user. I know the difference between Linux, Ubuntu, Metacity, and Compiz. A regular user does not. At least in this context, it appears that if I install Ubuntu, there's no way (certainly no obvious way) to get a feature that I consider critical. It's as easy as running one .EXE file though, in Windows.

Your "you can always suggest your ideas" statement, however, isn't nearly so true. Sure, I can suggest it, but that doesn't remotely mean there's any chance it will happen. Take a look at my last paragraph. Many users, many times, have requested exactly this feature. But all of the different players involved (windowing systems, window managers, desktop environments, etc.) have all said "yeah sure, I see why you want that, but it's that other guys' job to make it happen." One of the points I was trying to make from the beginning is that the unix/linux way of separating concerns has failed drastically, here. Sure, on the command line, small well-functioning parts can be piped together very beautifully. But here in GUI land, the pieces aren't fitting together very well, at least for this purpose.

Finally, no: that article is worthless to me. This post, as the rest in this topic, is about my frustrations with the Linux/Ubuntu environment. In quite a few cases, like this one, it's either impossible or much too difficult to get a feature that I want. In Windows, which I'm used to, though, it always comes down to running one installer and continuing with what I really want to do. I don't want this to "be" Windows. I just want it to be possible to work the way I prefer. You might think that, being open source, everything would be flexible and customizable and easy to operate just the way I like. But it's not.

Linux vs. Windows
2009-10-29 07:55 - monkinsane

I Do agree that the window placement in "linux" sucks. But consider the pro's of running it:

  1. It is a Hell of alot more stable than Windowze.
  2. It's Free (Most distros's, with the exception of a few).
  3. Depending on which Distro you use - the HW Support is great - no need to download drivers 99% of the time. (This is true of Ubuntu 8.10 + 9.04 anyway)
  4. No Need to Reload every 3 months because your OS decides to bug out for no reason! (Hint Hint --> Welcome to windowze)

It is true that Linux is far from Perfect - But so's windows. Each OS has it's Pro's and Con's.

Linux might not be able to replace widows's place on the desktop pc market yet, But it has taken significant strides in the right direction the last couple of years.

I run UBUNTU on my work notebook - and I will never consider switching back to windows again. On the other hand I aslo run Vista at home - mostly cause I'm a gamer, and this is sadly the one area Linux isn't that great in. Sure some games do run under Wine, but no DX10 under wine.

In the end, users will use what they're comfortable with. And hopefully - one day soon - that will be Linux. Maybe then MS will re-consider their pricing on their OS when They no longer have a monopoly in the market.

NOT linux vs windows
2010-02-03 08:42 - RpD

1.It is a Hell of alot more stable than Windowze. 4.No Need to Reload every 3 months because your OS decides to bug out for no reason!

False diatribe.

Window placement is probably the single most annoying linux trait after the insane modularity of it. I call it insane modularity, because it is -not- the seamless inter-operation of tools it's made out to be. The user interface is molten, meaning icons appear/disappear, and adding/changing something requires wading through commands, terminal screens, and help pages... something the 'newbie' -still- can't easily do. Windows is the market monster for a reason... and window placement "just works". Not a fanboy, not a hater, of any O.S. (or 'kernel'). Not complaining about the price either. If it was cheaper, you'd jump for it? Monopoly? Try Apple.

Window Placement
2011-01-19 11:59 - khamer

So, first off, you don't need to install Compiz to have windows placed in your desktop. Ubuntu and Windows both have a single, default schema for window placement. They are not the same; you clearly prefer Windows choice more. I use Xubuntu (XFCE), and it has some built in configuration options to allow you to tweak window placement.

You can install other software on both Windows and in Ubuntu that will provide different behavior for window placement. Compiz does an awful lot more than just allow you to configure window placement; there's lighter apps that just move stuff around. However, the software that has the most control over this are called Window Managers There's no shortage of these, and they provide lots more functionality than just window placement; things like window decorations, hotkeys to place or swap positioning of windows, etc. Historically, window placement is something that a window manager does. In Ubuntu, that's Metacity, in Xubuntu, that's xfwm. There's no confusion over whether applications handle it; and Desktop Environments contain window managers; the part of a desktop environment that controls window placement is the window manager.

You should have titled this article "Windows Default Window Placement Better Than Ubuntu's" or similar, because the point you're trying to argue is that Windows default placement is the best window placement available.

"Easy to configure to behave like Windows" is rarely an objective of the Linux community; perhaps you should try Xandros or one of the projects that has that goal. Ubuntu does not; they have their own ideas about useful window placement, which you may or may not like. On the other hand contrasting Xubuntu (what I use on my workstations) with Windows, Xubuntu does provide some configuration of window placement, where Windows does not. So, while Xubuntu may or may not have a "Act like Windows" check box, overall I have more control than Windows does.

As a parallel, a feature that Ubuntu (and Xubuntu) provide that I think is critical is window snapping; I think that if I move window edges together, they should line up because its clear that I'm trying to make good use of my screen space. Windows doesn't provide that behavior, and I have to install some relatively unheard of beta tray application to get the basic functionality I'm looking for.

The fundamental point that gets miscommunicated (or communicated insultingly) to Linux users who are coming from a deep Microsoft Windows background is that very few of the Linux distributions and even less of the software has a goal to emulate Windows. They have their own ideas about how to best solve problems. If you don't like their approach, you always can use Windows, or you can try one of the others in the plethora of distributions available, but its not a failing of distributions. You should step back and consider what problem you're trying to solve in the first place (why do you need window placement to save? What are you trying to do avoid?) and then look to see how the linux community has addressed that problem rather than whining that they didn't adopt Microsoft's design.

Apologists and Evangelists are missing the point...
2013-05-24 03:06 - Tihn Eares

I've registered a name just to weigh in, in fact I've had to register a more anonymous name just to hide my identity from this rant, the writing of which is really entertaining me right now. I found this page because I'm looking for some internet wisdom so I can get rid of the really annoying window placement that OpenSuse 11.4 with KDE version-something is giving me. But the exact version doesn't matter, this sort of thing is endemic... as OP tried to point out...

I cannot agree more with the OP, and the apologists trying to "solve" the problem with another specific rats-nest of a work-around or configuration ritual are missing the point. GUI on the various Linusii is a shambles compared to Windows and I suppose Apple. And yes OP and myself are talking about wholistic Linux, not just kernel Linux, yes, we've read the book, got the T-shirt, know the difference, thank you very much.

I'm not an apple-fag, but I suddenly understand why Macs with their new-found NIX-like behaviour has tickled the fancy of so many people. In fact, until I visited Wikipedia just now to confirm I'm not talking out of my bum, I thought OS-X WAS based on BSD from all the talk that goes on around the internets - but it's only POSIX compatible with added X11 goodness - go figure. My point here is, Apple has clearly put their stamp of good behavior into the platform, and as a bonus it's now damned *NIX-like if you feel the need, so love 'em or not, Macs at least are probably not a shit-fight of obscure fiddles and configurations, and quite possibly ARE a pleasure to sit down with as long as you don't mind dressing in regulation Steve Jobs jeans. [as for reading the book, getting the T-shirt, etc I'm not really interested so no need to explain Macs to me in great detail. Cheers]

Back to the story, I promise to try and avoid mentioning macs again. I've been using UNIX since BSD was a puppy, and the official AT&T UNIX was called Version 6, closely followed by Version 7 as was originally offered to Universities for the pleasure of pimply-faced teenagers such as myself. I've lived through mini's and all the famous old-school 16 bit processors running several different UNIX, some of those chips without any memory protection at all, and main memories measured in megabytes you could count on your fingers. I get the feeling the OP has similar levels of experience even if not that far back.

As an old-school *NIXer, I love it. Done a lot of work on it. Earned my living around it. I can do things with regular expressions that will make your eyes bleed. I'm well-over the excitement of discovering UNIXs inner beauty. All this just to be clear, I don't want an apologist or rabid evangelist indirectly accusing me, as they did the OP, of "not getting" this thing called Linux that they've been using for a glorious 3 years in their bedroom. Thanks. I've written sendmail config files for f...s sake, and rebuilt an inode table to rescue some vital business data before throwing the disk in the bin. A little respect please.

Covered experience with *NIX through the ages? Check.

Almost in parallel, I started using MS-DOS. Never did quite get to spend any time on CP-M and I don't regret that. MS-DOS 1 through versions #last were positively retarded compared to the glorious world of UNIX but it got a lot of work done for ordinary folks who were willing to pay money to be kitted out for business with word processing for the ladies and spreadsheets for the men - oh the glory days of the 50's I mean 80's. I've got no issues with MS-DOS, MS-Windows and Microsoft beyond the obvious. It's served me well over the years.

Covered experience with Microsoft through the ages? Check.

Then along comes the Smalltalk-influenced Apple Lisa which made the whole world do a double back flip with pike, closely followed by the first Macs, and then of course Microsoft pedalling furiously to catch up. The first versions of Windows were - .... - cute, with the non-overlapping windows, and the 3-slice popup-toaster aka steam vents on the title bar (and no I'm not going to explain that joke, go find out for yourself) Repaints could be followed around the screen with your finger, and that was true for many years.

BUT - right from the start, with whatever they offered, both Windows and of course Macs HAVE NOT HAD A GUI THAT IS A PIECE OF SHIT TO CONFIGURE. They basically work, they were self-consistent, and some smart people actually put in some effort to think about ergonomics. Meanwhile UNIX's X11 (shouldn't we be on X47 by now???) was pottering along doing its own thing, generally being an afterthought since the Real Work on UNIX was of course performed on the command line or using Curses if you were making programs for end-users. Sun, HP, et-al made a mighty go of it, but honestly it was a joke. Anyone here ever sat in front of a screen running those old Motifs or, Codd help you, Sun's OpenWindows? Compared to Mac and Windows it was a steaming pile of cat poo in the middle of your vege patch.

Covered experience with Windowing systems through the ages? Check.

Covered my bemusement with X-based GUI systems through the ages? Check.

Now we find ourselves in an era where computers are whitegoods you can buy from furniture stores; even 5 year olds have access to tablet computing with enough power to fly a complete War Armada of space shuttles full of rabid Chihuahua's with frikken lasers on their heads to Uranus and back, and nobody needs to have the buttons on the mouse explained to them, let alone were the Any Key is. Even good old UNIX, rebirthed according to Hindu tradition as the boy-god Linux is nipping at the heels of the common people's attention, desperately seeking to get some followers of its elegant doctrine wrapped in heady intoxicating ritual.

Trouble is, the rituals are just too god-damned complicated for ordinary people, and even for old dogs who are just bored shitless with time wasted fixing endless little issues before the real work gets done. We just want to turn up on time, issue forth meaningless words and activities that make us feel good, close the lid and get home in time to watch CSI so we can try to look down that hot chick's blouse. Face it, Linux is totally unready for grandpa to use. He's only just got used to Windows and has finally stopped double-clicking on the toolbar buttons. Personally I just want to get the latest iteration of Face-bully out the door before the competitors take over the teenage bitch market, without having to deal with the latest patch that somehow screws up the USB interface to my phone or soaks up 90% of all my CPU cores (anybody made the mistake of ticking the OK button for the latest major comprehensive update of Ubuntu?)

So where's this rant going you ask? The apologists offering this, that or the other solution (as if we're too STUPID to work it out if we had a spare 3 days) are PROVING the point OP was trying to make. For so many things in the Linux GUI world, first you have to hunt down the specific arcane solution for the specific distribution you are on, fiddle here, fiddle there, strap some sticky-tape between the USB ports and reset botton, dab some frankincense-infused olive oil on the monitor, then patch and recompile the frognobble sub-driver of the NVidia driver if you want to use the brass-plated N31245 card under 24-bit colour with a daring resolution of 1920x1024 to suit the new 40" Samsung widescreen you just bought, and then just type


into some obscure configuration file and away you go.

Secondly, "making suggestions to the teams" is, as OP described, not a workable solution either. I need to say here that I worship the guys who have put in all the mostly selfless effort to build this wonderful thing, but that doesn't mean they're getting everything right. And don't forget that there isn't any overriding product plan guiding the way, no matter what Richard Stallman or Linus Torvalds might think... Demarcation disputes are rife, there are more forks than you'd need to feed a poverty-stricken African nation, and the most unfortunate thing of all, there's a few too many haughy princesses in the open source world getting their Y-fronts in a twist if anyone dares to criticise, complain, or even have a different opinion.

Claims occasionally fly that you should shut-up if you aren't noble enough to fix it yourself for the common good, but, ummmmm, sorrrrry guys, like I said, I am mighty impressed with your efforts but I'm seriously up to my eyeballs dealing with the kids, repairing the back fence, and dammit when I'm at work I've got 15 JIRAs to get through, let alone having to read up on the latest iteration of development tools and methodologies that are begging to become the legacy software of the next decade. [So why am I spending so long in this very entertaining (to me) rant? I'm actually laid up in a hospital bed because of a sudden incident, I shit you not. Had a fight with a 17 year old Linux evangelist, he hit me over the head with his fanny pack, so now I have a moment for quiet contemplation and venting. Happy days.]

As the OP so astutely pointed out, the Linux world needs to seriously get its shit together when it comes to the GUI. It is NOT a good thing when there's more than one way to do it. Seriously. It is NOT a good thing when the setup ranges anywhere from a file designed 25 years ago in the X system all the way up to an XML file buried in a ~/.goddamn directory as part of some wierd aspect of the Plasma desktop.

Want to make the title bar a stronger color? That's in the Theme. I think. No wait, this is Oxygen Dihydride theme, you can't set that anyway. Want to stop the shadowing on the title bar when it's not in focus so you can still read it? Why, that's in the application setup page of course! Don't like the task bar popping up opaque patches of teeeeeny little renderings of programs every time you nudge the mouse out of the way? That's in the ... wait, where is that set? Sorry, ask the Googles. Don't like the screen clearing every time you quit Vim or Less? You want to actually read the stuff you've just hunted down while you type in your next command line? [You use the command line??] Simply add -X to $LESS and put

set t_ti= t_te=
into your ~/.vimrc. Oh, that other program? Dunno, sorry. You could hack the terminfo file I suppose... not sure which cap you need to edit...

What Linux really needs now is for someone like Bill Gates to sink his retirement nest-egg into a project to get some sanity into this shambles. For all the magic and goodness deep down inside, this bitch has got a really ugly face, and all these fan-boys running around act like they've just spent an hour trapped in a lift with Tony Robbins and have gotten themselves hypnotised.

So go and apologise to the OP. Go on, all of you. It's a legitimate question, and a legitimate opinion about the state of affairs in the Linux GUI world. He even managed to express it with more grace and good taste than you've been reading for the last few minutes.

Time to shut up now.
Cheers and blessings to you all.
/poster waves mouse around desktop in the holy sign of the NAND gate, accidentally triggers the gesture for switching the TV on he didn't even know was thoughtfully added to KDE for his viewing pleasure, curses and stands up to find the remote.

Yours in insert mode,
Tihn Eares, PhD, UID, MSG
Amateur Call-sign WH0OP
Pager #ID-10T
hash-tag #duhhh

By the way, does anybody know how to make "Smart Window Placement" actually show some smarts like remembering where I put that effing window last time? I'd really appreciate some answer. I'd even settle for a voodoo ritual.

Desktop Tiling
2014-03-25 18:51 - Libervurto

I believe the root of the problem is the continued adherence to the 'desktop' paradigm, where every aspect of UI design must be analogous to a real desktop. "Look, you can create an ungodly mess of files stacked on top of each other just like a real desk!", whoever decided to introduce cascading windows was a sadistic bastard.

Enter, desktop tiling! If you have been pulling your hair out about window tiling in GNU/Linux then you are probably already aware of awesome, and it does look awesome and will probably be what I use in the long run but I haven't been able to get to grips with it yet. In the mean time I've been using a few gnome-shell extensions: the two best I have found are ShellShape and Put Windows. ShellShape automatically tiles windows as you open/close them and has a bunch of hotkeys to shuffle and switch focus between windows; this isn't exactly what you are after as it tiles on a per window basis, so while you will always be able to see all your windows they wont appear in the same positions each time (unless you open them in the same order of course). Put Windows is unautomated but provides you with hotkeys to quickly position windows in different parts of the screen.

Too Much Variety is a BAD Thing
2014-03-25 19:46 - Libervurto

I agree with Tihn Eares that there are way too many weird little factions of Linux devs who all want to do everything their own way and so we end up with a sporadic pile of nonsense. Variety is great, when it's in parrallel, but if people go off in such wildly different directions that it becomes near impossible for anything one person makes to be used by another then what is the point of FOSS!!!?? Visit the website of any defunct Linux distro or application and I guarantee the reason for the team splitting is that they couldn't agree on some minor detail so they've all gone off in a huff to start their own projects from scratch.

There needs to be a movement towards cohesion within the Linux community. We should be working together to build something great, not fracturing into tiny splinters that do nothing but get under people's skin. We have to learn to compromise and try to accomodate each other if this thing is ever going to work.

I don't blame the comparisons with religion because that's exactly how the devs act, they all want to have their own vision of computing "perfection" realised and are unwilling to compromise with anyone to get something made that works and is actually useful. The "family tree" of Linux distros looks just like the one for the Abrahamic religions and their denominations. Richard Stallman is our Jesus and Linus Torvalds our Mohammed (if you know a little about religion then you will see multiple similarities). In that analogy I guess UNIX is Judaism.

It's time we became aGNUstics and worked together on realistic projects to improve what we already have.

Post a comment:

  If you do not have an account to log in to yet, register your own account. You will not enter any personal info and need not supply an email address.

You may use Markdown syntax in the comment, but no HTML. Hints:

If you are attempting to contact me, ask me a question, etc, please send me a message through the contact form rather than posting a comment here. Thank you. (If you post a comment anyway when it should be a message to me, I'll probably just delete your comment. I don't like clutter.)