.NN #20: Developing with Two Monitors

There are a lot of studies out there that talk about the benefits of multiple monitors.  Just doing an Internet search for “multiple monitor productivity” will bring up a lot of information on the subject.  I’m not going to rehash that information, but rather I’m going to talk about how I use multiple monitors when I develop with Visual Studio. 

The client I’m working at now provides dual monitors (mostly 17" flat panels) to all of their developers.  That rocks!  I had worked with multiple monitors before, but it was at this client that I really started using the benefits when it came to Visual Studio (VS).  For example, before if I was doing web development I’d have a browser up on one monitor and VS up on the other.  Now, however, I’ve come up with an even better arrangement (for me at least).

As Sara Ford points out VS has several window layouts that it remembers settings for: Design, Debug, Full Screen and File mode.  As VS moves between modes it changes the windows layout to the last arrangement they were in for that mode.  This is why your windows move around when you run something in the debugger.  The two I use most often are Design and Debug.  Sometimes I use full screen for presentations or code reviews.

In my previous example I would have the browser on one monitor and VS up on the other, but I always used to keep all the VS windows docked (slid closed to one edge or another) on that one monitor.  When I’d be developing I was really only using the one monitor.  When I was debugging I was using the monitor with the browser and the monitor with VS.  When I was I was coding, however, the monitor with the browser went mainly unused (unless I was looking at a screen layout as I was editing the HTML/ASPX).

Now I take advantage of the Design window layout and I’ve “docked” several of the windows together and moved them to their own monitor.

Image of both monitors

This is a screen shot of both my monitors side by side.  The one on the left is my laptop which has a 12" wide screen and the other is a 15" LCD.  I extend my desktop to the external monitor (same at work, but there I have two 17" monitors, one of which is rotated 90 degrees to get a “long” view of my code).  When I have the monitors set up I usually float the extra set of windows on my primary monitor and put the code on the second monitor.  I think I picked that habit up after once or twice remoting into  my work machine from a conference room only to find that my Outlook and other windows were all on the second monitor that I couldn’t see (this is also when I learned: Alt-Tab to off screen app -> Alt-Space to activate window menu -> R to restore -> Alt-Space -> M to move -> hold down left arrow key until application comes into view).

Note that things like the Solution Explorer, server explorer and toolbox are are all still docked and hidden in my VS window, but I found I really liked them there.  On the other monitor I have drug off several windows that I look at from time to time such as:

  • Object Browser
  • Immediate Window
  • Breakpoints
  • Error List
  • Output
  • Team Explorer (or source control window)
  • Pending Changes
  • Find Results windows
  • CodeRush Training window (The CR window is docked to the right of the floating group.  This lets me see it all the time)

Note that the two windows I get the most use out of having in this configuration are the Find Results and Output windows.  Both of these windows tend to have a LOT of information in them and looking at them in their default configuration is hard and annoying.

To get this setup simply do the following:

For any window that is a docked sliding tab:

  1. Open with window and pin it open.
  2. Grab the window title bar and move it over to the other monitor.
  3. Drag other windows you want over until you have grouped them all.

For any window that is a tabbed document, such as the Object Browser or TFS Source Control window:

  1. Right click the tab and select “Dockable”.
  2. Drag window over to fit with the others.

Here’s a screencast (only because I wanted to host something else on Silverlight Streaming):

You can play around with what configuration you like best and what suits your needs.  The great thing is because of the multiple window layouts when you start up the debugger you can have a completely different layout of windows. 

Back to my example of web development.  Now when I am developing a web page I utilize both monitors while I develop.  As soon as I start up the debugger the other windows will be removed (and possibly placed in main VS window) so that the monitor can display the web page.

I also got a lot of mileage out of the VS Window Manager Power Toy for VS 2005.  I wish they had this for 2008 as well.  It lets you have more window layouts that you can switch to, such as a Design layout for working with the toolbox, etc. and a Coding layout for when you’re doing coding only.

Update [ Oct 20th 2009 ]: Silverlight Streaming is being shut down (at least this incarnation of it), so I’ve brought this video back to my server.  There is no fancy Silverlight player to watch it yet, but at least you can still get the video if you want it.

Download Screencast