Technical analysis

Functionality versus stability

Switching between multiple windows has always been an issue for me. The simplest solution is to use the Alt-tab key combination. That works pretty fine when I need to switch between two or three windows, but as soon as there are more windows, that becomes more difficult. Holding Alt and pressing Tab multiple times can help, but the order of the windows differs from time to time so I have to check each proposed window one at a time until I get the right one.

I saw several people using the mouse for that, clicking on icons in the taskbar. This has always been a problem for me, because I was constantly loosing track of my mouse pointer when reaching the bottom of the screen. A simple fix helped: moving the taskbar to the top of the screen! However, this remained tedious to switch windows using the mouse like this.

What helped a lot is the possibility to group windows on workspaces, also called desktops. I first discovered this functionality on Linux. I quickly wanted to get this under Windows and found and tried several software tools attempting to emulate it.

Mac OS X also offers this possibility, but it is less useful because the windows proposed by Command-tab, the Mac equivalent of Alt-tab, come from all the desktops, so there is no grouping in practice, just some kind of visual illusion to unclutter the desktop. One workaround for this is to get as few windows as possible on the desktops, then switch task using Ctrl-arrow keys, forgetting about Command-tab. The switcher reachable with F9 could also be handy, but it would better serve me on a touch screen. Of course, Mac OS X has trouble supporting my touch screen because it is not manufactured by Apple!

I have been using Virtuawin for several years. That tool served me well a couple of times, allowing to group windows on virtual desktops, move windows from one desktop to another and configure the number of required desktops. Internally, it seems to work by showing and hiding windows, which allows alt-tab to work properly, showing only the windows on the current desktop rather than all the windows. This reminds me of another tool, a Powertoy from Microsoft, that was working by minimizing windows, so alt-tab was showing windows from all the desktops. I also remember of deprecated tools I tried years ago that were not providing any keyboard shortcut to switch desktops. This is so shocking that I forgot the tool’s name and don’t want to remember it!

However, things started to go bad with Virtuawin on Windows 8, maybe started on Windows 7 with Aero in fact. The behavior of the tool became more and more erratic, causing me increasing frustration. It is possible that the problem comes from some software programs in particular, maybe not Virtuawin itself.

The first issue I ran into is loss of focus when restoring a desktop. Many times after I switched from a desktop with a command prompt or an Emacs window to one running Firefox or Outlook, keyboard shortcuts were not responding anymore. It took me some time to figure out that Virtuawin didn’t restore the focus to any window on the desktop, keeping the focus on itself. Pressing alt-tab to switch to next window works around it. Of course, clicking with the mouse in the window solves it. But this needs to be redone on each desktop switch. Sometimes, the focus is set right, so if I press alt-tab, the window disappears, because Windows 7 with Aero as well as Windows 8 “smartly” propose the desktop as one candidate when pressing alt-tab.

The second issue I ran into, which happens intermittently, is Virtuawin popping up and asking me if I want to close it. This happens when I use alt-f4 to close two ore more windows one after the other. This used to happen when no more windows are on a given desktop, but I got the issue on a desktop with a couple of remaining windows. Again, it seems that the focus messes up and Virtuawin gains focus, proposing to shut itself down rather than intelligently handling focus to another window. There may be no good way to work around this, in fact.

A few weeks ago, I got so fed up of this erratic behavior that I got rid of Virtuawin. I tried several alternatives with no luck. Switcher, which would at least provide an alternative to Alt-tab, just doesn’t retain its settings and doesn’t run at startup. Default key was backtick, which is quite inconvenient on a Canadian French keyboard. Maybe this is because of UAC, but I just cannot accept to turn UAC off, because that would allow any third party application to start as administrator in the background, without any indication. I then tried Windows Pager, which was completely incapable of retaining window focus and was emitting an annoying beep each time I was switching to the desktop with Firefox. I worked a week with VistaSwitcher instead of Alt-tab. This somewhat worked, but it was getting painful because of too many windows, including multiple Cygwin windows looking almost the same and with similar titles! I thought about Dexpot, but this one is free for non-commercial use only and I wanted something that I could use both at work and at home.

I then found Sysinternals Desktops. That tool, bought by Microsoft, seems to make use of some hidden APIs offering multiple workspaces natively under Windows. The tool works by creating multiple copies of the Explorer.exe process running as a desktop manager and provides shortcut keys to switch between the copies. This seems to work very well, except it provides no way to move one application to another desktop. Situation is aggravated under Windows 8 by the fact Metro is involved to start applications by name. More specifically, pressing the Windows key before typing the name of an application switches to first desktop where Metro is running, then pressing Enter starts the application from there. The incorrectly started application cannot be moved after the fact. There is no way to work around this, except finding alternative ways to start the applications from other desktops: putting everything on the desktop (unacceptable, I will not be able to find ANYTHING), pinning applications on the task bar (somewhat works for use cases with small number of applications), launching the applications from Explorer (time consuming to find the programs) or downgrading to Windows 7 (again!). I may try something like Launchy which could allow me to efficiently start applications by name without involving Metro.

Shutting down Windows 8 after multiple desktops were created also makes the spare Explorer.exe crash one at a time with a cryptic error message. Fortunately, this doesn’t prevent me from turning off the computer cleanly. This didn’t happen on Windows 7.

I also experienced issues with clicking on URLs from applications like Outlook and Lync. When Firefox runs on a different desktop, the system doesn’t correctly handle the situation by instructing Firefox to open the request URL. Firefox instead tries to start again on the desktop of Outlook or Lync, fails and displays an error message indicating it is already running. I then have to manually copy/paste the link. At least in Outlook, there is a Copy hyperlink option, so no need to manually select the link, but Lync offers no such option. I have no good solution for now, other than running Lync on the same desktop as Firefox.

Desktops limits to four desktops, no more, no less. Sometimes, it may be useful to have more. However, I found out that I am wasting desktops since years! For example, I am keeping a desktop just for Lync. Instead, I just had to configure it to reduce on the tray instead of the taskbar, so Lync is not in my way when using Alt-tab but still usable for the rarer cases I need to initiate a chat. Moreover, I used to start a Cygwin window, SSH to my home computer and start Audacious from there to listen to music at while keeping the playback controls handy. Why this useless terminal window while ssh -f can be used to start Audacious and put SSH into the background, allowing me to close that extra terminal window? I tried to use Screen to further reduce the number of Cygwin windows needed, but that was causing issues, especially with Emacs.

Despite its limitations, Desktops happened to be a better solution for me than anything else. The reason why is that its behavior is deterministic. It works the same way all the times! It has less functionalities, but it is more stable. If later on that still doesn’t meet my needs, I would have to either downgrade to Windows 7, which has less issues with Virtuawin, work more on VirtualBox virtual machines with Ubuntu guests (supports virtual desktops) or try to get Dexpot on my work laptop.