I have never used virtual desktops before, although I knew that they exist on Linux since the prehistoric era. When I've read that Hilary Mason from bit.ly is using them to increase productivity, I decided to give them a try. So I downloaded, installed and tried out VirtuaWin (yes, for Windows), but somehow it didn't convince me. My first reaction was “never try something like that again”, Windows can't do it! So months later... and a couple of days ago, I saw someone recommend mDesktop. Curious about what could be so great about it, I decided to try it out and this time I was pleasantly surprised. It's a very simple, if not simplistic app, that allows you to cycle through multiple screens (up to 10!). When you want to go to screen 4, you press Alt+4. If you want to put an open window in screen 4, you press Ctrl+Alt+4. If you want to go to the previous screen, say from 4 to 3, you press Ctrl+<Left Arrow>. “Quite simple”, I thought. But is it really useful?
Some people said that virtual desktops are mostly useful when working with dual monitors, as you can quickly switch screens and eventually develop on one side and test on the other. This can be useful for web designers that need more screen space and flexibility. Such configuration could highlight the strengths of virtual desktops even more. Since I only have a single monitor, I couldn't do that. So it was better to think about when this concept would make sense. If I have 10 open applications without a virtual desktop, I have to eventually mouse-click every time on them or use Alt+Tab multiple times until I arrive where I want. This would bring one app over another, effectively hiding the one that was previously in focus. But I could easily spend a lot of time with Alt+Tab, wondering if I focus the correct one of these 10, since I have to verify this every time (and Windows tends to rearrange the list). On the other hand, mDesktop allows me to divide applications between screens as I see fit. I can group similar-purpose applications in one screen only, but then I would have to switch again between them (although the list is much shorter now). Or I can put a single application in a single screen, which is convenient, but this additional screen now needs to be managed too. It's a trade-off that everyone has to consider for themselves.
I realized that with a virtual desktop I don't need to repeatedly launch, minimize or close any applications. I open all needed applications at once, put them in their respective screens, maximize their windows and then just switch to the screen I want. Individual screens can have labels, which helps in thinking about them, when we need to find a particular application. If I remember mentally that the FTP client is on screen 3, then I need to press only Alt+3. If I remember that my editors are on screen 1, I press Alt+1. Once you have internalized which number corresponds to what purpose, switching isn't an issue anymore. It probably helps to think of the drawer metaphor.
If we arrange our desktop in a way that we never need to operate on the windows themselves, but only on the value we can extract from them, then we can probably be more productive. This way nothing is started, minimized or closed, which can take some time to get accustomed to. We open the things we'll need to work on only once and, when needed, we put the PC in sleep mode, which allows it to remember the state, so we can return to it in a second the next morning. Our PC will need more RAM then, but today this isn't a problem anymore.
Right now, I have 7 screens and things works well. I have only changed the key mapping for cycling through the screens from Ctrl+<Left/Right> to Alt+<Left/Right>, because otherwise I wouldn't be able to jump from word to word in an editor.