View Full Version : Modal Interaction
andqso
May 6th, 2007, 07:38 AM
A lot of the extra functionality we get from Compiz seems to be only accessible with nasty key combos (ctrl-alt-shift-left, meta-f10, etc.). This, as we know from EMACS, is a Bad Thing as it leads to deformed hands, repetitive stress disorders and an early death (bet you can't guess what my favorite text editor is). That text editor, of course, eliminates much of the need for modifier keys through a modal interface, multiple "layers" for interaction exist. Switching between layers is easy and leads only to a deformed pinky on the left hand, and allows for much more natural interaction within the layers.
The current setup of most window managers, compiz included, is decidedly un fitts-y. Buttons, and even the titlebar, are really small targets - it would be so much better if we could just left-click, right-click or middle-click on the window without constantly having our left hands positioned over the keyboard. The only block to this, of course, is that we need left-click, right-click and middle-click for more important things.
The solution?
Modal interaction.
This is just a fantasy on my part - I don't know a whole lot about how compiz is put together so I don't know how hard it would be to implement (but I imagine it's fairly involved). Nonetheless, I think it would represent a significant step forward in interaction models.
Just think - throw the mouse at the lower-right corner to change between interaction and manipulation modes. You could get close, maximize, minimize, move, resize, maybe even annotate and zoom - all without needing those teeny little buttons.
Anyone with me?
mikedee
May 6th, 2007, 05:02 PM
This sounds like a good idea and it would be fairly easy to implement. I am not sure I totally understand the uses though.
Could you please go into a bit more detail on what would be available and how as well as how this might be configured. The initial examples would be easy but I am sure there is more to it than that :)
andqso
May 6th, 2007, 07:34 PM
Right now, the "MouseButton" attribute can be modified with keys; i.e.,
Move: <Alt>Button1
Resize: <Alt>Button2
Screenshot: <Super>Button1
What I am proposing is the addition of new modifiers that work in new ways.
The first thing that this would require would be a new plugin; call it mode.
Mode0Edge
Mode0EdgeButton
Mode0Key (though probably not as useful)
Mode1Edge
Mode1EdgeButton
Mode1Key
Mode2Edge
...etc.
And probably:
ToggleMode01Edge
ToggleMode01EdgeButton
...
Then, a new modifier could be added to all of the *Button attributtes (and conceivably *Key and *Edge as well).
e.g.:
MoveButton: <Mode1>Button1
ResizeButton: <Mode1>Button1
An example of how this would work:
ToggleMode01 is set to [BottomLeft]
The mode is 0. When the user clicks on a window, the window receives the input. This is true of all button presses and keypresses.
The user mouses over the bottom left corner. Perhaps at this point the screen changes color or all windows change transparency to indicate a shift in mode.
The user can now Button1-click and drag a window (without holding the Alt key) in order to move it - the way the current setup would behave if MoveButton were set equal to Button1.
The user mouses over the bottom left corner again, and the state returns to normal.
stjepan
May 7th, 2007, 06:39 AM
Switching between layers is easy and leads only to a deformed pinky on the left hand
I guess you need this in your .vimrc ;)inoremap <Tab> <Esc>
vnoremap <Tab> <Esc>
inoremap <S-Tab> <Tab>
Another useful thing, capsoff.xmodmap:remove Lock = Caps_Lock
keycode 22 = Caps_Lock
keycode 66 = BackSpace
add Lock = Caps_Lock
Now run this:xmodmap capsoff.xmodmap
xset -r 22
xset r 66
I don't know how would this work with a WM, I think it would take too much time moving mouse and switching modes. Do you really think you could work faster with modes?
andqso
May 7th, 2007, 10:38 PM
Fitts's Law (http://en.wikipedia.org/wiki/Fitts_law)
A corner of the screen is an easy target to hit.
An entire window is an easy target to hit.
A close button is a very difficult one.
So is a window border.
I really only have move, resize and close in mind here, but I imagine others could find uses for it. We'll never know until we try =P.
And on the vimrc thing - I'd been meaning to do something like that for a while but I couldn't think of a good way to go about it. Thanks for the suggestion!
andqso
May 13th, 2007, 06:59 AM
Another thought -
This wouldn't be quite as powerful as full-on modal, but it might be a little more intuitive and easier to do: a modified version of the scale plugin wherein in addition to left-clicking on windows to focus them, one could button2 to close them, button4/5 to maximize/minimize them, etc.
luopio
May 24th, 2007, 07:55 PM
It's a good idea according to Fitts' law, but modal interfaces are a nightmare for usability.
Usually when user interfaces absolutely need a modal interface, you can see that something has gone very wrong during design..
I'm not gonna hold a lecture here :). For a bit of elaboration on the bad sides of modality, see (for example) this article (http://www.ibm.com/developerworks/web/library/us-cranky12.html).
andqso
June 30th, 2007, 04:30 AM
I fully agree with you that modal dialogs are dreadful, but this is a slightly different situation.
this is a plugin, so nobody is forced to use it.
said plugin would not necessarily disable the existing functionality
If my mouse had another two or three buttons (which many do) I probably wouldn't ask for this, but I dislike having to reach for the alt key every time I want to resize or move something.
Now let me contradict myself for a moment....
Usually when user interfaces absolutely need a modal interface, you can see that something has gone very wrong during design..
I couldn't agree more (for this situation, at least. I still like vim). I think that something is indeed very wrong with the window metaphor (a rant of mine from a while back (http://blog.jacobandreas.net/posts/rethinking-the-window)), and I think that Compiz has the potential to address that design flaw. However, for the time being we're stuck with WIMP and I just want an easier way to resize all my damn windows.
luopio
July 1st, 2007, 12:10 PM
Ok. I understand your point a lot better now 8).
I fully agree with you that modal dialogs are dreadful, but this is a slightly different situation.
this is a plugin, so nobody is forced to use it.
said plugin would not necessarily disable the existing functionality
If my mouse had another two or three buttons (which many do) I probably wouldn't ask for this, but I dislike having to reach for the alt key every time I want to resize or move something.
Good point and I encourage you to develop one. I don't think I would use it, but I'm sure there's a large user base for these kinds of features.
Now let me contradict myself for a moment....
Usually when user interfaces absolutely need a modal interface, you can see that something has gone very wrong during design..
I couldn't agree more (for this situation, at least. I still like vim). I think that something is indeed very wrong with the window metaphor (a rant of mine from a while back (http://blog.jacobandreas.net/posts/rethinking-the-window)), and I think that Compiz has the potential to address that design flaw. However, for the time being we're stuck with WIMP and I just want an easier way to resize all my damn windows.
Yeah. WIMP is flawed, but it's still the best we currently have. I have much faith in projects like looking glass, which try to define and enrich the metaphor. Also I can't wait for compiz input-transformations to hit mainstream. Using scale and interacting with the scaled windows (and perhaps use zoom as well) brings a lot of options for application management.
I too find the Emacs window splitting functionality very nice. I think the things you mention in your rant could be best achieved by building on the input-transformations/scale/zoom base. This would evade the biggest problem with the "projection" idea: some applications are statically sized and required that space. With scale you could just make them smaller if needed :)
On a relevant side note, I really liked the features in E16 when I was using it mainly. Two features rise above everything else:
1. the ability to "sort" or "order" windows (a bit like the tile windows plugin)
2. window thumbnails as the way of minimization (there was a plugin in development for this, but haven't really heard from it)
I'd like to have the ability to shove my windows to the sides (scale) and focus on the one in the middle. I'd still be able to see if something valuable happened in the applications on the sides (a person logs in and becomes visible on my contact list, a download is complete, etc.). Having apps as text or icons in a toolbar does not bring you this comfort. Notifications are a quite lame workaround as they just mean "look at me, I have something to say".
andqso
July 3rd, 2007, 05:13 AM
Good point and I encourage you to develop one.
I'd like to, but to do this properly it needs core integration (a la regex). So I just have to keep hoping....
I'd like to have the ability to shove my windows to the sides (scale) and focus on the one in the middle. I'd still be able to see if something valuable happened in the applications on the sides (a person logs in and becomes visible on my contact list, a download is complete, etc.)
How sophisticated is our ability to detect changes in windows right now? You don't really need to see all of your windows if nothing is happening to them, but what if we could make offscreen windows flash/scale/rotate when they change?
luopio
July 3rd, 2007, 07:57 AM
How sophisticated is our ability to detect changes in windows right now? You don't really need to see all of your windows if nothing is happening to them, but what if we could make offscreen windows flash/scale/rotate when they change?
Interesting. But how could you make offscreen windows flash or do anything since they are off screen :). Making them suddenly visible would be almost as bad as popups even if implemented correctly (not stealing focus, etc.).
In my head I have the picture of a modern desktop without any panels containing minimized applications. You would still need a panel for other tasks, like notification areas, clocks, launchers, etc., but the biggest part - the minimized applications list - would be gone.
I'm thinking a bit something like this: http://fvwm-crystal.org/screenshots/quakeconsole.jpg (see the little window thumbnails), but with thumbnails that can be scaled, update themselves and can be interacted with. Perhaps some ideas from bump desktop could be used as well ( http://www.youtube.com/watch?v=M0ODskdEPnQ ) although I'm not sure if I would not want to push the desktop metaphor that far..
andqso
July 3rd, 2007, 11:53 PM
I was thinking in terms of making them suddenly visible, though now that I think about it it's a very scary idea. Pretend I never said it.
My reservations about mini-windows are entirely related to my lack of desktop real estate; since 1024*768 monitors are increasingly uncommon it will probably cease to be an issue.
But it would seem that we're straying from the original topic of conversation....
vBulletin® v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.