A Windows console that does not suck

We’ve all been there: You’re used to the terminal on Linux or OSX, and then for some or other reason you need to work on Windows and you’re confronted with the half-baked monstrosity that is cmd.exe:

It’s 2011 and this is Windows 7: Why does the console still make me want to gnaw off my fingers?

To summarise: You can only resize the window vertically (so you’re always restricted to 80 characters width which is just idiotic on modern widescreen displays), copy and paste is so painful that you’ll wish that they’d rather just not bothered with it in the first place and the cmd.exe interpreter itself is primitive when compared with any modern unix shell.

Enter the two-pronged solution of Console2 and Git bash! Console2 is a console that solves the UI problems (resizing! copy and paste! terminal transparency! tabs!) and you can use it together with any combination of command line interpreters, such as for example the existing cmd.exe, bash or anything else.

Here’s my setup, configured with Git bash (you get this for free with the Windows git installer, for this purpose it’s better than Cygwin as it’s a touch closer to Windows) as well as plain old cmd.exe. To configure a Git bash tab, set Shell to “C:\Windows\SysWOW64\cmd.exe /c “”C:\Program Files (x86)\Git\bin\sh.exe” –login -i” (including all quotes) and Startup dir to %HOMEDRIVE%%HOMEPATH%. I’ve also configured Ctrl-Alt-T to invoke Console2. With shift-mouse-drag I can select text (nice editor select, not cmd.exe block select, ptooey!), and I’ve set Ctrl-Shift-C and Ctrl-Shift-V to copy and paste so it’s like the Gnome terminal on Linux. Behold:

Console2 makes the pain go away.

My Windows experience is a lot more bearable now, perhaps even slightly pleasant! Did I just say that?!


  • PowerShell replaces cmd.exe, but by default still runs inside the Windows console. Still much suckage in other words, plus that I don’t feel compelled to learn PS yes.
  • Cygwin mintty is also often cited as a console replacement, but seems to cause problems (for example with git) as it’s not a full Windows console.
  • Cygwin itself is really fantastic, but due to that POSIX compatibility layer which is otherwise a useful thing, differs too much from the native Windows goodies so that sometimes native Windows behaviour is interfered with.

12 thoughts on “A Windows console that does not suck”

  1. Regarding mintty, that’s best used with Cygwin git rather than Windows git as in the linked example. (Btw, one advantage of Cygwin’s git is proper support for non-ASCII characters in filenames.)

    Mintty’s advantages over Console2 include improved speed, better xterm compatibility, a sane scrollback model, and 256 colour support, whereas its main disadvantages are limited support for non-Cygwin programs and the lack of tabs.

  2. I have been experimenting with command shells as well. Btw, in win7 my CMD.exe can rescale both in x and y directions (width / height). (left/right)Click the tiny logo in the top left corner om cmd.exe and browse to properties->layout. However, this might be due to the fact that I installed cygwin in a desperate move, since during typing this comment i notice that du -h, ls -a etc are also working in my cmd.exe :p.

    Onto my question and reason for this comment: does Console2 handle .bat files properly? Cygwin had problems with them and I didn’t like the console that much too figure out how to solve it. I would love tabs in my CMD but I need “.bat” functionality too.

  3. I can’t figure out what you’re wrapping quotes around I’ve tried various ways. It’s wrong though. Can you please type it out again? (Yes, I’ve put two dashes for login, I know it was a conversion with the HTML as well as replaced smart quotes with actual quotes / inches). This looks really nice though, thanks for the tip!

    1. I figured it out, it’s: C:\Windows\SysWOW64\cmd.exe /c “”C:\Program Files (x86)\Git\bin\sh.exe” –login -i”

      The difference is you had an extra quote before the cmd command. You can also post in here that the command can also be found if you right click the git bash program in windows and go to properties. The “target” box has the command you’re after.

  4. Why the heck doesn’t console2 have block select as an option? In certain circumstances it’s very useful (mysql)..

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.