GNOME Bugzilla – Bug 82917
Allow edge-flipping
Last modified: 2005-04-06 17:04:21 UTC
This should be off by default, but edge-flipping should be possible.
I don't like edge flipping because: - it breaks fitt's law - it's disorienting to users since just moving the mouse causes a lot of "instability" - it involves a lot of implementation complexity (putting up input-only windows on the sides of the screen to detect the mouse motion) - the whole frickin' point of metacity is to not have this kind of stuff - there are many other WMs you could use if you want it, and I've gone well out of my way to be sure the EWMH spec exists to ensure that people can use another WM My mind can be changed, but "some users are used to it" will not be the successful argument; I am NOT going to implement the union of Windows, Mac, Enlightenment, Sawfish, OS/2, RISCOS, and fvwm2. So I need a rationale beyond "one of those things had it and some people got used to it"
I don't care if you don't put it into Metacity, i can respect that you might want a lean-mean-machine wm. Fine. But can we have it in GNOME? i.e. http://bugzilla.gnome.org/show_bug.cgi?id=75613
I'm not sure the union of Windows, Mac, Enlightenment, Sawfish, OS/2, RISCOS, and fvwm2 is the right thing for gnome either... but of course that's a discussion for the mailing lists.
*** Bug 88258 has been marked as a duplicate of this bug. ***
*** Bug 89070 has been marked as a duplicate of this bug. ***
Hm, so adding this to GConf and allowing people who are particularly attached to it would not, I think, be a disaster. Some preferences have very bad side effects insomuch as they are incompatible with certain other operations you want to allow. I can't think of major cases of "things we'd want to do" that would be incompatible with this, particularly a smart implementation that did not edge-flip on edges that had docks (i.e. panels) on them. Flipping on "open edges" would not mess anything up that I can think of. So the only cost I can see to allowing this would be some increase in complication to the codebase. Presumably settings only in GConf are considered "unsupported" ? (actually, it might be nice to have an "unsupported" category in Metacity's GConf and to allow some particularyl in demand crack settings to go there). Havoc, would you accept a clean patch that added this only as a GConf preference? Someone has given me the impression they might consider writing such a beast.
I would probably not take this patch, no. There are way too many important issues to resolve in the metacity codebase to be complicating it with this sort of thing. If you want this stuff, use a WM that has it. I don't see the problem with that.
*nod*
Hopefully, I can do better than "some users are used to it"... While edge-flipping may be difficult to adapt to at first, I've found that it is far more convenient than keyboard navigation or mouse navigation through the "workspace switcher" ("desk guide" in gnome 1.4). It is not the expected behavior for most users (only because of previous experience), but I consider it an important step in the evolution of the desktop metaphor. Edge-flipping beats keyboard navigation for a number of reasons including: 1. The mouse is a more intuitive tool for humans. Mouse navigation is intuitive in the sense that muscular movements have a one-to-one relationship with the movements of objects on the screen. If you want to go to the desktop to the right of your current desktop, it's more intuitive to move your arm to the right than to press "alt+f2" on the keyboard. 2. For keyboard navigation to fit into a smooth navigational flow, it needs to be accessible with one hand so that the user can continue using the mouse in the other. It is physically difficult for many people (those with disabilities, in particular) to hit "ctrl+f4" with a single hand. 3. Not all keyboards are created equal. Modifier+FunctionKey sequences aren't convenient on all keyboards. Here's an example: http://www.kinesis-ergo.com/professional.htm Edge-flipping beats mouse clicking in the "workspace switcher" for a number of reasons including the following: 1. It is faster. Clicking on the workspace switcher requires the user to move your mouse from whereever it was to the bottom right of the screen. This can be accomplished fairly quickly, but the user then has slow the mouse to a near stop and click carefully to select the correct workspace. With edge-flipping, the user can pull their mouse in the direction they want to move as fast as they can. 2. It's an evolutionary step in the right direction. The progression from a single workspace of Windows and Mac to the multiple workspaces of *nix is a great productivity win. I view edge-flipping as an incremental step forward along this line. Edge-flipping frees up the users interface the way multiple workspaces expanded it. The user doesn't have to be stuck in their little boxes anymore; they can naturally flow between workspaces at will.
IMO the fundamental problem is that edge flipping keys off of an action that can easily be accidental; there isn't any explicit user desire indicated to change the current workspace, and indeed it's easy to trigger the flip without knowing that workspaces exist. Arguably it's OK to have it as a hidden preference, since the main objection is about it being confusing, but I am just not a big fan of a different non-default codepath that will break things and clutter code, and won't benefit the 99% of users who won't find hidden options. It's not part of any sort of evolution to a future better interface, because its fundamental scary-change-with-no-explicit-user-action nature means you can't ever really turn it on by default. It just doesn't really fit in to the spirit of metacity, I guess. To me if you want a lot of custom non-default features then something like Sawfish or fvwm2 has the right internal design and overall goals for you. Metacity is all about hard-coding and nonflexibility in order to make the defaults work right with a minimum of effort. It isn't trying to be all things to all people.
As much as I missed them when I swithed to metacity, there are equally productive ways of getting the same task done, (keyboard shortcuts, for example, or the Workspace Switcher (left-click and drag there instead-- you'll even move the mouse less!). What really convinced me of Havoc's opinion, however, was that this is a feature we do not absolutely need, whereas we do absolutely need this software to be very stable and very easy to debug. More code paths and more complexity will lead us, step by step, into the abyss. To use a bad pun, let's all just "KISS" and make up and admit that, as much fun as it is to disagree with him, Havoc is right. This time. <grin>
For me it's a case of agreeing to disagree. I'll just stick with Gnome 1.4 until I get around to writing a patch which gives me edge-flipping.
*** Bug 93041 has been marked as a duplicate of this bug. ***
*** Bug 101097 has been marked as a duplicate of this bug. ***
*** Bug 118803 has been marked as a duplicate of this bug. ***
Jared: You can use Sawfish with recent GNOME just fine, and with appropriate tweaks to configuration files, it will let you use edge-flipping. I'm still waiting for someone to come up with a decent GTK2 WM that has it; I can't bear to use a WM without it. A forked or patched Metacity, perhaps? (the implementation complexity is only necessary because of the decision to go with workspaces rather than viewports, isn't it?) The "scary change with no user-visible feedback" effect could be mitigated in several ways: 1) Some visual feedback to indicate what's happening. An example would be to animate the transition, so that the current display scrolls offscreen and the new viewport scrolls in. Ideally the mouse movement should be gradual as well, sync'd up with the rest of the display. 2) Instead of automatically and immediately flipping the viewport, pop up a little arrow button at the cursor location, with a descriptive tooltip, that the user can click to do the move. One or both of these could make it possible to turn the feature on by default eventually. I see edge-flipping as having the same benefits and the same rationale as Spatial Mode in Nautilus. Instead of having to be aware "This little pager thingy in the panel *represents* my workspaces as being next to each other" (this folder icon *represents* the location of my file), the user can think "My browsing workspace *is* to the right of my email workspace" (the window *is* the folder).
Hello Havoc, I guess I am a bit late but.. ;-) The Fitt's law was modeled upon linear (ie one dimensional) movements and it does not deal with errors, as you can read in several places like this one: http://ei.cs.vt.edu/~cs5724/g1/glance.html I hope you might agree with the fact that moving windows in the pager with the mouse from one workspace to another one is a very prone-to-errors operation. If we use a big pager so that we can *see* and correctly click the windows in it, it will just take up precious desktop space to perform an operation which could be done even without a pager at all, after one gets used to the way she configures her workspaces with edge-flipping. I agree that very often keyboard shortcuts are faster to type but not every human being is so lucky to be able to use a keyboard. I also agree that code mantainability is very important, but at the end, the software is written for the users, not for the mantainers so it would be nice, from my point of view, at least to offer them a choice (even if not enabled by default). I am also sure that lots of people do not use it just because they dont know about it and if they knew about it, they would start using it, this is what has happened with all the people I know. We are all blondes (no offense intended..) at the beginning... ;-) Take care and keep up the good work anyway :-) Ben
*** Bug 170793 has been marked as a duplicate of this bug. ***
*** Bug 172819 has been marked as a duplicate of this bug. ***