4

I have a related question on SU that is asking for any tools which apply this concept:

Suppose that I've got a perfectly reasonable set of two terminal windows, two web browsers, and one email client open, all visible at the same time, on my computer which is driving three displays.

Using the computer this way for even a short amount of time reveals some serious deficiencies in the functionality of the Alt+Tab style switcher. The issue is described quite well in this article, however I am proposing a different solution to the problem than the one proposed by that article.

Before I start describing that though, I will mention that in this workflow I have described above with 5 windows, on an OS X machine I'll be switching between 3 applications with CmdTab since OS X will collapse the browser and terminal windows into their respective apps but the same problem with the Most-Recently-Used ordering in the switcher is present.

My idea is one that tiling window managers have already applied. It is directional/positional switching. I would want a set of 4 hotkeys that perform the actions, for example

Alt+Shift+: switch to the app positioned to the left
Alt+Shift+: switch to the app positioned to the right
Alt+Shift+: switch to the app positioned above
Alt+Shift+: switch to the app positioned below

The problem, of course, is in the ambiguity of defining which windows/apps are valid options for switching to. For a tiling manager this is pretty straightforward but it is obviously less so for a regular window manager.

I find it curious that Windows 7 gives us Win+ and Win+ for manipulating the active window into half-screen "slots", but does not provide a way to actually switch between these windows in the same way, even for switching only among those windows which were snapped into the slots.

I guess in summary my question is would this position-aware method of switching apps be an improvement to the existing switching shortcuts? provided that the new shortcuts do not interfere with existing shortcuts. I don't see any reason why we have to actually resort to using a tiling window manager to gain this particularly productivity-enhancing aspect of them.

8
  • 2
    It seems like you've answered your own question by bringing up the very real problem of ambiguity but not resolving it. You mention Windows 7's inability to switch automatically to a snapped window, which is a manifestation of the same problem: what if there is not a single snapped window but a stack of them? Further, I suspect that while "position" is a very meaningful attribute to you (three screens!), it's less so for a large class of users. When the user maximizes a window, what is the meaning of left? Mar 7, 2013 at 19:15
  • For now I am leaning toward always picking the one that is there, i.e. the top of the stack. If I want to go to a window that I can see but for which I don't know the position in the alt+tab order, then I would use the directional switching hotkey. I guess this functionality only becomes helpful once you start having lots of screen space.
    – Steven Lu
    Mar 7, 2013 at 19:21
  • So if I have a maximized window and I hit Alt+Shift+<-, what should happen? Nothing? Mar 7, 2013 at 19:24
  • If you have a monitor on the left side of it, it would switch focus to the nearest window on that monitor. The rightmost top-window on the monitor to the left of the window that you just maximized. If you are on one monitor and have focused the window that takes up the entire screen, then indeed it would do nothing because there is nothing else in view (to switch to)
    – Steven Lu
    Mar 7, 2013 at 19:25
  • You can actually do this on the linux KDE desktop. It works pretty good too Sep 25, 2017 at 21:52

2 Answers 2

3

Your idea immediately made me question, why keyboard shortcuts? If all windows are visible, why not the mouse? What you are doing is shifting focus, for input and maybe output (as the window is visible, I'm assuming you are getting partial to complete results of what you want to see).

The main reason for using the keyboard, I think, is that you are using multiple monitors and you want to make the switch faster than moving the mouse.

Traditionally in linuxland, the mouse was used as a tool to shift focus, i.e. whichever window is under the mouse, receives user input (mouse only, or you can customize to completely shift active window). Wizmouse is an example of this for windows.

As mentioned above, the monitor already displays the visual map, why create another layer when you can just use that. And a pointing tool is more intuitive then maintaining a mental model as mentioned above. So the short answer is NO for majority of users.


However, this is a power user case, and you can easily write utilities to do this. Autohotkey is a good place to start for windows. They have several utilities for this, see Gridmove, Niftywindows amongst many others.

I don't know about solutions for Mac though. I am sure you can write up a script using Python. I found this site online which recommends witch for keyboard based window switching.

You need to write an algorithm to determine Right, Left, Top, Bottom windows with respect to the current one and that would help develop the utility as per your need. This is a simple algorithm to determine which is the next window in each direction. Should span monitors when searching for windows.

Algorithm for determining which is the next window in each direction:

def find_next_window(direction, current_window):
  find the edge of current_window in direction
  find the next available edge in direction //Doesn't matter if leading or trailing for now
  if found: 
    return  handle of window found
  else: 
    return None

This algorithm should take care of these cases:

See an example mockup below. Doing this example made me realize, that the easiest way would be to do something like switcher as mentioned above. Press a Trigger Key (replace ALT+TAB?), then It highlights the windows it finds in each direction and overlays the corresponding arrow icon on them. That would make it very easy and intuitive to use. Anyway my algorithm above would result in these designations for each window. Currently it ignores diagonal windows, but you should account for them. Thus the number keypad is better to use than arrows in this case.

mockup

download bmml source – Wireframes created with Balsamiq Mockups

Another alternative is just to divide the screen into a grid of 9 squares and use the number pad to switch to the dominant window in each square. For multiple monitors you can add a prefix for non-main monitor switch. There is a mousing app that did this, but I can't find it right now.

2
  • 7 years later, I was about to write another question/post somewhere soliciting opinions on my ideas. I was surprised to find my very own question and I still have many of the same feelings about this topic. I think I missed your answer back in 2013, sorry about that. I think this should be a really properly legitimate use of the numpad, and I haven't really been using numpads because I have failed so far to find good uses for it. I think I will look into implementing a tool for numpad based positional window switching sometime soon.
    – Steven Lu
    Jul 4, 2020 at 21:12
  • I think the pointer synergies are definitely there. I just avoid the mouse because I need to stay on the keyboard to maintain flow when i'm working and switching madly between terminal, chat, documentation, and app. This should also open some doors for effective couch-computing via joystick input systems, which I look forward to testing as well. Alt-tabbing in that use case is definitely just as frustrating as it is with the keyboard. Just like with the mouse vs keyboard situation, a flick of a joystick or single jam on a d-pad is more expedient than fully controlled targeting.
    – Steven Lu
    Jul 4, 2020 at 21:25
1

Its going to be hard to give a definite answer unless you do some initially usability testing to see how people would use your proposed design and how that scales better than the current design. However the challenges I see are :

  1. You will have to provide a visual map of all the applications open otherwise Users will have to keep a mental map of which all tabs are open and which are on the left of the current application and which are on the right and which is at the top and bottom.Without that they will not know what alt+shift + --> or alt +shift + <-- does and might be surprised to see a app suddenly open up which they didnt want to open (e.g. a game at work)

  2. If you are going to provide me a with a visual map,then you are adding an additional functionality of launching the visual viewer which is an additional key press.However if I was to use the alt-tab key, I could just use tab key repeatedly to quickly get to some place I want. If I had to use a key to activate a visual map and then press a key combination to get there,it suddenly seems like repeated work since visually I have to locate the application, find the keys on the keyboard and press it until I get there.

I would also recommend doing some research on how many users might want to shift to the app at the top and the bottom and if there is an use case for that.

I recommend looking at this tool switcher for additional inputs on how you could approach the problem.

2
  • To address the ambiguity problem I would probably want to have it so that only the applications you specify will be used by it, or it could only allow switching to applications that are already wholly or mostly revealed. As for the Up/Down, this for use where you have windows that do not require the full height of the display so you can have them take up half the space by stacking them vertically.
    – Steven Lu
    Mar 7, 2013 at 19:01
  • Thanks for the switcher link, the first form of the idea that popped into my head recently has been nearly fully explored by this switcher tool. Very cool to see. The exact thought was why can't I just set a specific window to a key and go there? Well, it'd be ok but seems much more cumbersome due to cognitive overhead compared to a positional navigation paradigm. Dont think i'll need to even test it though, which is just as well since it looks unmaintained past ancient windows versions.
    – Steven Lu
    Jul 4, 2020 at 21:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.