Notes To A Future Self: Getting Productive On WinXP

Windows XP is truly a horrid desktop OS, particularly if you’re a programmer. The default install contains roughly nothing useful, and even getting a development environment going requires grabbing the likes of cygwin, Visual Studio, and a zillion patches from Microsoft.

The truly dispiriting thing, though, is how badly cmd.exe still sucks. I fully admit that my personal programming proclivities are not normal, but to be reasonably productive I need a Unix-like shell, a terminal that works (can be resized, has reasonable VT100 emulation, etc.), and the ability to fix the “Caps Lock” key to do the right thing – namely, have it fire the “Ctrl” key instead. This is all relatively straightforward to do on Linux and OS X. Here’s how I got it done with Windows:

Do the MSFT Patch Dance

Make coffee?

Install Cygwin

We’ve all done it a thousand times. This’ll make 1001. It’s kind of comforting that the Cygwin home page hasn’t changed perceptibly in nearly a decade.

Get SharpKeys

Instead of fugly registry hacks, SharpKeys allows you to map the dreaded and useless “Caps Lock” key to something actually useful. If your key-mapping preferences swing some other way, SharpKeys can likely handle that too. Not sure why it’s not built into Windows, frankly.

Set Up Puttycyg

Having cygwin is nice, but having a terrible shell with Cygwin? Not so nice. Enter Puttycyg, a small hack on the venerable Putty SSH client for windows that provides an option to launch a local Cygwin session in lieu of connecting to another system.

Once I extracted it and ensured the Puttycyg directory was in my windows PATH, I created a desktop shortcut to the putty.exe included in the distribution and configured the shortcut (right-click) to read:

"C:\Documents and Settings\slightlyoff\Desktop\puttycyg\putty.exe" -cygterm -

And then set the “Shortcut key:” to be:

Ctrl + Alt + T

Now, whenever I want a fully functional shell from my desktop, I just hit that key combination and it All Works (TM).

6 Comments

  1. Posted December 8, 2008 at 3:39 pm | Permalink

    If you like SharpKeys, have a look at AutoHotkey, with which you can basically everything you’d like for mapping and simulation mouse and key input. http://autohotkey.com

  2. Steve McCoole
    Posted December 9, 2008 at 12:01 pm | Permalink

    Use the cygwin stand alone rxvt client for your shell work. It gives you the equivalent of a nice xterm for your shell without needing any kind of other X windows (cygwin-X or otherwise) installed. You’ll have to specifically choose it in the cygwin installer but its just one exe basically.

  3. Alexander Chernyakevich
    Posted December 10, 2008 at 12:33 am | Permalink

    You could try UnxUtils from http://unxutils.sourceforge.net/ (port of popular *nix utils like ls, grep, wget, etc) plus Console 2 from http://sourceforge.net/projects/console/ (can be bringed up by shortcut key, tabbed, provide to run different shells including zsh, resizable, etc)

    Maybe this bundle could be enough for you and could replace Cygwin. At least it does for me ;)

  4. Posted December 10, 2008 at 10:31 am | Permalink

    Thanks everyone!

    Console2 really does rock, and combined with the Consolas font (which you can get by installing this: http://www.microsoft.com/downloads/details.aspx?FamilyId=941B3470-3AE9-4AEE-8F43-C6BB74CD1466&displaylang=en) it works very well. Almost doesn’t make me miss Terminal.app.

    Regards

  5. Sam
    Posted December 11, 2008 at 3:03 am | Permalink

    2 things windows/XP gives you cant get elsewhere: TortoiseSVN (svn gui), and BeyondCompare (visual folder/ftp/file diff tool). I bought XP and keep a vm open just for these.

    Also, shift+f10 gives you a keyboard “right-click” which makes the file explorer bearable, powerful even.

  6. rektide
    Posted January 6, 2009 at 2:36 pm | Permalink

    I’ve found that the only cure for windows blues is to make absolutely everything I would ever want accessible in my path. From there, everything is windows key – r away. Vim and cygputty in particular!

    I do like cygputty but I find theres some things that dont work quite right in it.