Monday, October 12, 2009

Visual Studio Tool Windows on Mimo USB Monitor

I love multiple screens. My work machine is a laptop. Fortunately the model I have does have dual external display capabilities when using the docking station so I'm able to run two standard desktop screens. However, being a developer, geek and generally greedy hardware guy, I wanted more. Since I am limited to two standard video connections I thought I was stuck. Until ThinkGeek.com came to the rescue.

So several weeks ago I got the Mimo UM-710 USB mini monitor. It's connected by nothing but a standard USB connection. One of the ideas I had was to be able to use it for some of the ancillary apps and widgets I run that I'd like to have in view, but not occupy standard main screen real estate. Things such as music players, tool windows, email, etc.

Scott Hanselman has a good entry about his mimo.

For quite a while now I've been running two multiscreen windows tools: UltraMon and Winsplit Revolution. Among other things, UltraMon
provides multi monitor windows task bars (most stable implementation that I've found so far and worth the price). It also has shortcut keys for manipulating windows on your desktop (move screen to screen, minimize, maximize). Winsplit Revolution (free!) provides similar and additional window manipulation using key shortcuts.

Getting back to the main topic, I can use the two multi-screen tools to manipulate Visual Studio tool windows. If you undock a VS tool window, it can be easily moved to another screen with traditional methods (i.e. the ever inefficient mouse). However, because these windows are implemented as a tool window which is traditionally floating or docked to the main IDE window, there are no commands or buttons to maximize it to the usable screen size. Here's what I end up with after moving the Test Results window to my Mimo:



Sure you could use your mouse to move the window to the top left, then resize it to the bottom right, but who has that many cycles to waste? That's where the windowing tools come into play. I can undock a tool window from the IDE, and while focused on it, use the shortcut key CTRL-ALT-[Left/Right Arrow] to shuffle the window to an adjacent monitor. Then, while keeping the modifier keys pressed, I can just hit the Up Arrow key to maximize the window to the screen. Using Winsplit Revolution I can actually use the same key sequence in reverse. Winsplit respects location and position proportioning so it will move the window to a relatively similar position/size when moving between disparate screen sizes. After this move and resize, my Mimo screen looks like this:



Notice the problem here? The window has been sized to the maximum screen space, not the maximum usable desktop space. Note the previous screenshot which includes the horizontal scrollbar. This isn't that major of a problem, but it's still annoying.

However, there's an easy fix. Instead of using the "Maximize" shortcut key in Winsplit, I use the "Center" shortcut. This shortcut positions the active window to the center of the screen in several increments. The window always assumes full usable desktop height, with respect to the taskbar. However, it will take up one of three percentages of the screen width: 33%, 66% or 100%. Fortunately, it does 100% first. So when "Center"ed to the first step, the tool window is actually sized to the full desktop space. However, it's not actually maximized in the true sense so you get the window border. But this is a small cost for being able to see and access the whole window. After using the Winsplit "Center" shortcut, I end up with this:



Winsplit can also place windows into the corners of the screen with a single key combo. Also handy if you have several windows you want to tile into some screen space without using the built in windows methods which mess with everything.

Even if you don't have a Mimo, or even multiple monitors, get Winsplit Revolution, it's free and it rocks!