After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 89315 - Workspace switching should have wrapping style
Workspace switching should have wrapping style
Status: RESOLVED WONTFIX
Product: metacity
Classification: Other
Component: general
unspecified
Other All
: Normal enhancement
: GNOME2.x
Assigned To: Metacity maintainers list
Metacity maintainers list
: 80291 90142 102129 305084 316362 342842 444663 494842 522373 531400 597649 630502 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2002-07-29 06:56 UTC by dcthomp2
Modified: 2012-10-09 18:11 UTC
See Also:
GNOME target: ---
GNOME version: Unversioned Enhancement


Attachments
Patch implementing proposed switching behavior (13.84 KB, patch)
2002-07-29 06:58 UTC, dcthomp2
none Details | Review

Description dcthomp2 2002-07-29 06:56:47 UTC
Currently, switching workspaces in metacity wraps
around at the borders in a non-intuitive manner.
The attached patch adds a "no wrap", "toroidal",
and "classic" style. These styles can be selected
by setting the /apps/metacity/general/wrap_style
key to one of the phrases in quotes above.
Comment 1 dcthomp2 2002-07-29 06:58:04 UTC
Created attachment 10104 [details] [review]
Patch implementing proposed switching behavior
Comment 2 Havoc Pennington 2002-07-29 14:16:04 UTC
cc'ing UI dudes.
Comment 3 Calum Benson 2002-07-29 16:53:19 UTC
By "switching workspaces", you mean with Ctrl+Alt+arrow, right?

What do you find non-intuitive about it?  As far as I can see you get
a 2-D layout of your workspaces that you can navigate with the four
cursor keys, what could be more intuitive than that....?  This sounds
a bit like overkill to me.
Comment 4 Havoc Pennington 2002-07-29 18:46:29 UTC
The question is what happens when you right-arrow off the rightmost
workspace, etc.
Comment 5 Calum Benson 2002-07-30 13:14:55 UTC
Hmm, right... well, I still think we should aim to pick one behaviour
and stick with it if possible :)  

If the user has set up a 2D array of workspaces then it's presumably
to match some mental model they have of their workspace layout, so my
guess would be that either the "toroidal" or "no wrap" models would
match that most closely.  (And anything other than the toroidal model
would be a pain if you only had a single row or column of workspaces).
Comment 6 dcthomp2 2002-07-31 02:28:20 UTC
Calum Benson wrote:
> ... (And anything other than the toroidal model would be a
> pain if you only had a single row or column of workspaces)

But if you have more than one row/column, it can be frustrating
if you go one workspace too far in some direction and don't
realize it, especially since the switcher doesn't show you
what windows are on the desktop until you let go of the modifier
key. It's nice to have a boundary to bump up against.
Comment 7 Calum Benson 2002-07-31 15:19:24 UTC
True... maybe then the rule is "toroidal if you only have two
workspaces, otherwise don't wrap"...?

You have a good point about the workspace not switching until you let
go of the keys-- I wonder how feasible it would be to show the
workspace switcher thumbnails instead of generic "workspace" icons in
the popup that appears while you're pressing Ctrl+Alt+arrows... or
even just pop up some version of the workspace switcher applet itself
that you could navigate around in a simlilar way.
Comment 8 Havoc Pennington 2002-07-31 19:46:49 UTC
You have an old version I think Calum, the switchy popup thing does
display a workspace-switcher-like mini-view of each space these days.
Comment 9 Calum Benson 2002-08-02 13:48:46 UTC
Aha, so it does.... cool.
Comment 10 Thomas Meeks 2002-08-07 14:22:59 UTC
It seems the conclusion is we shouldn't wrap unless we only have two
workspaces.
Comment 11 dcthomp2 2002-08-08 02:20:11 UTC
> It seems the conclusion is we shouldn't wrap unless we only have two
> workspaces.
??? I'm not sure where that comes from. The fewer workspaces the
_less_ you need wrapping. My problem with wrapping is that it
can be confusing if you "overshoot" and don't realize what you've
done. Thus I prefer no wrapping ever. I contend that more people
than just me would like this setting available, so my patch
allows you to choose "wrapping" vs. "no wrapping" ( vs. the
old behavior which doesn't seem to be very popular at the moment).
Comment 12 Tuomas Kuosmanen 2002-08-08 10:38:46 UTC
I think the current behaviour is fine. Try the CVS version, the popup
is now like the desktop switcher applet so you do actually see what
windows are where, and you see "where you are" clearly marked with the
dark rectangle, it is easy to just use Ctrl-Alt-cursorts to go where
you want. It was an issue wiht the popup that had just the document
icon, but it really works a lot better like this (CVS version). It is
not an issue anymore and I think the current behaviour is fine.
Comment 13 Havoc Pennington 2002-08-10 18:47:38 UTC
*** Bug 90142 has been marked as a duplicate of this bug. ***
Comment 14 Michael Meeks 2002-08-30 10:04:56 UTC
Au contraire - I don't spend time looking at popups that appear
transitorily on my screen for a few milliseconds as I switch rapidly
to the leftmost desktop.

Except now I do - I have to watch it like a hawk, because in order to
get to the leftmost column of my 3x4 desktops I have to be extremely
careful to press only precisely the right number of keystrokes; thus
making it impossible to reliably navigate to a known desktop from an
arbitrary other desktop without watching the pager, which is painful.

I would imagine the 'infinite clickable area' thing is apt here, a
bounded area is far more useable - certainl for 2 dimensional geometries.
Comment 15 Havoc Pennington 2002-09-24 19:38:12 UTC
In a gnome-terminal bug it was suggested that this should be consistent 
with the switch left/right notebook tab shortcuts, as in GtkNotebook
or Galeon.
Comment 16 Dan Mills 2002-10-09 17:45:09 UTC
Since you can arrange workspaces in a 2D manner, looking at notebook
tab behavior may not be what you want.

Just for kicks, arrange your workspaces that way for a few days (say-
in a 3x2 grid) and see how confusing it can be sometimes.  For
example, starting on the top-leftmost workspace, going
left-up-right-down doesn't return you to the starting workspace--you
end up one off to the right.

I *do* like wrapping, and if it's left on (or as an option) I think it
should be made saner when there's a 2D arrangement of workspaces. 
However, I think that wrapping could probably just be taken out
completely, as this is the simplest way to solve the problem, and my
guess is it's easy to get used to.
Comment 17 Mike Hearn 2003-01-05 15:57:27 UTC
I'd just like to add some comments here, in garnome 2.1.5 wrapping has
gone, and it's not good at all for somebody like me with 1 row of 7
desktops, as I with wrapping on no desktop was ever more than 4
swithes away, now the max in 7 which slows me down no end.

Wrapping is definately a useful feature, and shouldn't just be
removed. If the old model didn't work for everyone, maybe (ouch, sorry
havoc) a pref, or perhaps it should dynamically adapt to the
number/layout of desktops. A metacity without wrapping hurts :(
Comment 18 Gregory Leblanc 2003-01-24 19:40:06 UTC
There doesn't appear to be any clear conclusion on whether or not
workspace wrapping is 'necessary'.  I spent a few minutes trying to
figure out the arguments against it, and didn't come up with anything
really useful.  I'm sure the fans of not wrapping will have the same
problem seeing the arguments for it.
The original wraping behaviour was a bit confusing, so I'd been taking
notes on it for a while.  They're not yet complete, but I'm pretty
sure that that scheme can be done is such a way that it's clearly
better than the "toroidal" one.  Looks like I either need to apply
this patch locally (bleah), or convince havoc to add it until we can
get some more data on the "right" answer here.
Comment 19 Havoc Pennington 2003-01-24 20:52:35 UTC
Here are my thoughts:

 - if you have a small number of spaces, why not bind 
   direct keys? I always bind Alt+1, Alt+2, etc. for example
 - if you have a large number of spaces, wrapping seems 
   bad for the reason Michael gives, and is not so useful anyway
   since often you won't be on the edge of the screen
 - wrapping requires a more "abstract" computer-like conceptual 
   model than stopping; stopping corresponds to the physical 
   display of the spaces
 - stopping is more like the behavior with notebooks, 
   Ctrl+PgUp etc.
 - stopping is probably better for accessibility just as 
   it is with notebooks

Basically this is your standard combinatorial explosion of
preferences; you can change number of spaces and their layout, 
and choose directional or direct-to-space or mouse navigation, etc.
etc., and so then you might learn to work in a way that involves
wrapping or not, and then it goes on and on. How many ways 
can we accomplish the same simple task...

I'm opposed to a preference here, it just perpetuates 
the insanity and is feature-micromanagement-via-prefs.
Let's just pick something and go with it.
Comment 20 Havoc Pennington 2003-02-25 08:50:39 UTC
No further changes planned here (there may be another bug that 
had more discussion, I forget)
Comment 21 comcast.really.sucks 2003-05-10 19:22:08 UTC
Sorry, I haven't looked at the code, so this may not be a helpful
suggestion.

I propose that the Pager be responsible for desktop switching, and
Metacity (or whatever) should send the Ctrl-Alt arrow events to it. 
That way, alternate pagers could be developed to satisfy those of us
that want wrapping behavior, and Metacity could remain free of another
dastardly preference.

If this is already how things are done, then fine.  Those of us that
want wrapping and greater control of virtual desktop management can
just create an alternate pager.
Comment 22 Havoc Pennington 2003-05-10 19:47:03 UTC
It is possible to implement desktop switching keybindings in the pager
or other external process, yes.
Comment 23 Havoc Pennington 2003-05-17 01:37:45 UTC
*** Bug 80291 has been marked as a duplicate of this bug. ***
Comment 24 Elijah Newren 2004-10-19 20:58:31 UTC
*** Bug 102129 has been marked as a duplicate of this bug. ***
Comment 25 Chris Spencer 2005-04-19 03:11:11 UTC
Forgive me if this has been said elsewhere, but has this wrapping 
feature officially been removed? The report summarizes wrapping styles 
that can be set in a config file. However, the current applet does not 
reflect these options, nor do I seem to have a 
/apps/metacity/general/wrap_style anywhere on my system.

If it has been removed, I urge the developers to reconsider dropping 
this useful feature. Of all the desktops I've used that support virtual 
desktops/workspaces, I find the wrapping/looping feature very useful. I 
typically have a single row of 10 or more workspaces, and switching from 
the first to the last, and vice versa, is terribly inconvenient without 
wrapping. One either has to use the mouse to click on the last workspace 
in the panel applet, which defeats the purpose of keyboard shortcuts, or 
use the key-bindings, which become unmanageable for large numbers of 
workspaces. In this respect, I second Mike Hearn's complaint (comment #17).

In direct counter to Havoc Pennington's arguments against wrapping, I 
submit the following:

> - if you have a small number of spaces, why not bind
>   direct keys? I always bind Alt+1, Alt+2, etc. for example

Regardless of the number of workspaces, it will always be easier to 
continue navigating by wrapping left/right/up/down then it will be to 
remember and use a specific keybinding for each workspace. You've got 
the panel applet and the popup to explicitly tell you where you are 
after each switch. There's no way to get lost.

> - if you have a large number of spaces, wrapping seems
>   bad for the reason Michael gives, and is not so useful anyway
>   since often you won't be on the edge of the screen

There will certainly be cases where such a feature may be un-useful, but 
that's hardly fair grounds to remove it entirely. As I've stated, for 
small or large numbers of workspaces, primarily arraigned in a row, 
wrapping is a huge convenience. And simply implementing the feature 
doesn't mean it has to be mandatory. Providing a preference to 
enable/disable wrapping would hardly clutter the current 4 preferences.

> - wrapping requires a more "abstract" computer-like conceptual
>   model than stopping; stopping corresponds to the physical
>   display of the spaces

I'm not quite sure I understand this comment. Wrapping, as I imagine it, 
corresponds exactly to the physical display in the panel applet, in that 
wrapping is done vertically or horizontally depending on the current 
layout of the workspaces. Allow me to illustrate with some crude ascii 
art, where 'x' represents the currently active workspace, and 'o' 
represents a non-active workspace.

In my case, if I have 15 workspaces, with the 1st currently active, my 
panel applet appears something like:

xoooooooooooooo

Now, for a single row, wrapping vertically is moot. However, navigating 
left at this point should cause the applet to wrap horizontally, jumping 
to workspace 10, which would appear as:

oooooooooooooox

If I recall the default settings for the keybindings, which use the Fn 
keys, this would be difficult, if not impossible to do.

Now, for a slightly more complex example, say we have 9 workspaces 
displayed in 3 rows with the 2nd workspace active, resulting in a 3x3 
grid such as:

oxo
ooo
ooo

Now, navigating up would trigger vertical wrapping, which would cause 
the applet to jump to workspace 8, resulting in:

ooo
ooo
oxo

I apologize if this is redundant or an overly simple example, but I 
don't buy the argument that says we shouldn't have a wrapping feature 
because it's too hard to implement. Wrapping is extremely simple to 
visualize with the pager, and I would suspect, almost as simple to code 
since we already have the layout information needed for correct 
horizontal and vertical wrapping based on workspace layout.

> - stopping is more like the behavior with notebooks,
>   Ctrl+PgUp etc.

Again, I'm not sure what this comment refers to. If by "notebook" you 
mean a tabbed layout, such as the one in Firefox, they mostly implement 
wrapping as well (as does Firefox).

> - stopping is probably better for accessibility just as
>   it is with notebooks

This comment can be summarized with the previous one.

Overall, I feel a wrapping feature can only be beneficial. There are 
scant few preferences currently, so adding this useful feature certainly 
won't add to bloat. For those that deem it harmful in certain 
situations, we could always set the default setting to disabled, but 
removing it entirely is a mistake. I urge you to reconsider this feature.

Sincerely,
Chris Spencer
Comment 26 Havoc Pennington 2005-04-19 13:28:31 UTC
Appreciate the carefully-thought-out reply and reasonable tone. I don't think
this makes sense, though. There are just too many little things like this we
could make tweakable, and the net effect of doing all of them is pretty
detrimental. I know it always seems like each one is not a big deal. This has
been the way it is for a long time now and I'd like to avoid changing behavior
back and forth every couple of years. It does continue to be consistent with
GTK+ notebooks (tabs as you say), Firefox is probably inconsistent but that's
just the usual problem with Firefox not using GTK+ widgets.

Anyway, there are lots of issues where there's a reasonable argument to be made
one way and the other way, but in the end the right thing to do is just pick a
way and go with it.

Comment 27 Chris Spencer 2005-04-21 01:54:27 UTC
Very well. I respect your adversion to feature creep. However, despite it's
minor technical nature, I don't consider it a minor feature. I've been using a
similar feature in every desktop I've used prior to Gnome (which I just switched
to recently) and I find it's absence immensely frustrating. If this feature will
never be added to primary trunk, then I will create a custom patch for myself.

Am I correct in understanding that the only modifications required to implement
looping would be to modify lines in meta_workspace_get_neighbor() from:

  if (layout.current_col < 0)
    layout.current_col = 0;
  if (layout.current_col >= layout.cols)
    layout.current_col = layout.cols - 1;
if (layout.current_row < 0)
    layout.current_row = 0;
  if (layout.current_row >= layout.rows)
    layout.current_row = layout.rows - 1;

to:

  if (layout.current_col < 0)
    layout.current_col = layout.cols - 1;
  if (layout.current_col >= layout.cols)
    layout.current_col = 0;

?
Comment 28 Chris Spencer 2005-04-21 02:03:07 UTC
Very well. I respect your adversion to feature creep. However, despite it's
minor technical nature, I don't consider this a minor feature. I've used a
similar feature in nearly every desktop I've used prior to Gnome (which I just
switched to recently) and I find it's absence immensely limiting. If this
feature will never be added to primary trunk, then I will create a custom patch
for myself.

Am I correct in understanding that the only modifications required to implement
looping would be to modify the following lines in meta_workspace_get_neighbor()
from:

  if (layout.current_col < 0)
    layout.current_col = 0;
  if (layout.current_col >= layout.cols)
    layout.current_col = layout.cols - 1;
  if (layout.current_row < 0)
    layout.current_row = 0;
  if (layout.current_row >= layout.rows)
    layout.current_row = layout.rows - 1;

to:

  if (layout.current_col < 0)
    layout.current_col = layout.cols - 1;
  if (layout.current_col >= layout.cols)
    layout.current_col = 0;
  if (layout.current_row < 0)
    layout.current_row = layout.rows - 1;
  if (layout.current_row >= layout.rows)
    layout.current_row = 0;

within workspace.c?
Comment 29 Havoc Pennington 2005-04-21 17:23:26 UTC
That looks likely, yes.
Comment 30 Pauli Virtanen 2005-05-22 13:08:03 UTC
*** Bug 305084 has been marked as a duplicate of this bug. ***
Comment 31 Vincent Untz 2005-09-15 19:58:06 UTC
*** Bug 316362 has been marked as a duplicate of this bug. ***
Comment 32 Elijah Newren 2006-05-24 20:57:45 UTC
*** Bug 342842 has been marked as a duplicate of this bug. ***
Comment 33 Elijah Newren 2007-06-06 22:45:49 UTC
*** Bug 444663 has been marked as a duplicate of this bug. ***
Comment 34 Elijah Newren 2007-11-09 18:29:49 UTC
*** Bug 494842 has been marked as a duplicate of this bug. ***
Comment 35 Elijah Newren 2008-04-05 18:40:14 UTC
*** Bug 522373 has been marked as a duplicate of this bug. ***
Comment 36 Thomas Thurman 2008-04-28 23:32:34 UTC
Why did this get marked FIXED in comment 29?  Isn't it actually a WONTFIX, since we never did implement wrapping style?

I'd really like to get the pager to handle workspace switching, fwiw, since it's already halfway impossible to do proper workspace management without the pager (it loses the number of rows).
Comment 37 Thomas Thurman 2008-05-04 16:51:10 UTC
*** Bug 531400 has been marked as a duplicate of this bug. ***
Comment 38 Thomas Thurman 2008-05-04 16:52:34 UTC
Um, comment 36 was written on the wrong bug.  Sorry.
Comment 39 Brandon Chubb 2008-06-08 00:49:54 UTC
This has always been the most annoying thing about Gnome -- guess i was blaming
the wrong piece.  For those geezers like me that remember CDE on various other
Unices, workspaces wrapped.  I generally only use 4 workspaces, but it still
comes in very handy -- i setup a hot key to move forward, and if the wrapping
works correctly, as it did in my old RH 7.2, I generally only use Forward.  If I'm doing something that takes 2 workspaces and they happen to be 2 apart, then 2 clicks flips between them every time.  Wiring them to function keys is inferior, because i use ctrl-space which works one-handed.

So this is not only a regression from an earlier sawfish, but something that
all the ancient systems like OSM, Solaris, and HPUX could do.  I wouldn't
care if just the default was wrong, as long as I had a knob for it.
Comment 40 Thomas Thurman 2008-06-08 03:48:03 UTC
This should have been WONTFIX, I think, not FIXED (since it certainly isn't fixed).

The patch is actually fairly trivial, though.  Maybe there should be a place on live.gnome.org that people can grab patches from for WONTFIX features and add them in as needed.

However:
 * There will not be a switch for this.  We have far too many switches already.
 * There will however be a default either of wrapping or not wrapping.  Since currently we have wrapping, we need to decide whether there are any particularly good reasons to change away from that, and any particularly bad effects of changing the default to wrapping.
Comment 41 Pei Hu 2008-06-27 07:18:30 UTC
It's a good idea for users to choose whether to have multiple wrapping styles, if users would like to wrap around at the borders when switching workspaces in metacity, they can download and use the patch, else they can ignore the patch.

I think there would never be agreement on this wrapping issue, but actually now I prefer that the patch can be integrated into metacity, and the style without wrapping around at the borders can be set to default.
Comment 42 Thomas Thurman 2008-07-01 02:39:57 UTC
Right: this is not going to make it into being a switch unless someone gives me a much better reason why (or perhaps unless Havoc or Elijah appear and tell me they think it's the most awesome idea ever, which I can't see happening); nobody has yet given me any good reasons at all other than "it would be nice", which isn't any good.

If anyone wants to make a patch which adds a switch, be my guest; I'll even write up how to do so.  Then they can give it to their distro and ask them to include it, or just run it themselves.

Any thoughts on the *default*, though?

Marking WONTFIX, anyway.
Comment 43 Brian 2009-03-04 07:36:35 UTC
Reading this made me cry.

The best reason I can think of to add a switch is that (at least from this bug) it seems that the decision to choose wrap over no-wrap was just a 'we had to pick something' decision, and there wasn't any strong reasons one way or another.  If this was the case, than the only reason for not adding a switch is feature creep?

It seems the other windows managers I've used (compiz mostly) either wrap or have a switch for enabling wrapping.  Thus, for the people who use the wrapping feature on other window managers, the switch would make moving between windows managers/computers much more seamless.  This would probably eliminate the frustration previous posters (and I) experience when we need to use metacity.
Comment 44 Havoc Pennington 2009-03-04 15:48:27 UTC
it is not 'we had to pick something', there are several rationales given in comment 19 for example.
Comment 45 Thomas Thurman 2010-01-21 02:54:11 UTC
*** Bug 597649 has been marked as a duplicate of this bug. ***
Comment 46 Vincent Untz 2010-09-24 09:45:07 UTC
*** Bug 630502 has been marked as a duplicate of this bug. ***
Comment 47 Jakob van Bethlehem 2010-09-24 14:22:06 UTC
Like Chris in comment 25 I can not fully follow each rationale in comment 19, but that's probably my level of understanding of things. I fully agree though that it is important to: 'avoid changing behavior back and forth every couple of years' (comment 26)

But in the light of that remark then, I'm a little bit disappointed as well after reading this thread. I would argue that the continuously returning request for this particular feature is the -one- thing that has -not- changed for already 8 years.
Comment 48 Kevin 2011-01-28 21:45:38 UTC
I don't get any of the non-wrapping arguments.  The most reasonable on is that you might get lost.  This in it self is ridiculous because of the icon that pops up on the screen.  Also if your workspaces are organized that you need to go to the first one I could only assume that you know what workspace you are on currently.  I think that it should be added, and ideally there would be an option for enabling it.

About the feature creep, I understand that metacity is a boring window manager but one feature, especially one as large and prominent than this is no big deal at all.  In fact it is only a deal when you don't agree with the current setting.  If we think about what we use most about a window manager it is clearly switching desktops.  We only open new windows when we start doing something new.  Personally I leave firefox open on my first workspace and what I am working on on my next two.  I use the full-screen function once for most windows and the same with the close.  The thing that I use most often are minimize and switch workspaces.  I usually use alt-tab for switching windows (and they wrap so I don't need to use alt-shift-tab).  The other most common is switching workspaces.  I probably do this about every 20 seconds.  This is a huge part of using my desktop environment and it is a HUGE pain not to have the wrap.  I think that something as big as this can have it's own config setting.
Comment 49 Brandon Chubb 2012-10-09 18:11:59 UTC
Many moons later, and the Gnome3 debacle, and I've finally just gotten off my
duff to try LXDE.  It allows wrapping of workspaces (desktops) just fine with
a simple change to its config files.  So anyone looking for a replacement
can also consider LXDE.