Scott Hanselman

Console2 - A Better Windows Command Prompt

June 08, 2011 Comment on this post [78] Posted in Tools
Sponsored By

image I was working on my Mac today and while I maintain that the OS X finder is as effective as shooting your hands fill of Novocaine, I remain envious of the simplicity of their Terminal. Not much interesting has happened in the command prompt world in Windows since, well, ever. I actually blogged about text mode as a missed opportunity in 2004. That post is still valid today, I think. Text is fast. I spend lots of time there and I will race anyone with a mouse, any day.

I blogged about Console2 as a better prompt for CMD.exe in 2005. Here we are 6 years later and I hopped over there to see Console2 was still being developed. They were on build 122 then, and they are, magically and to their extreme credit, still around and on build 147. Epic.

Open Source projects may be done, but they are never dead.

I downloaded Console2 at http://sourceforge.net/projects/console/files/ and put it c:\dev\utils which is in my PATH.

Here's how I set it up for my default awesomeness.

  • Right-click in the main console and click Edit | Settings.
  • Under Console, set your default Startup Directory
  • Under Appearance|More, hide the menu, status bar and toolbar.
  • Under Appearance, set the font to Consolas 15. Not 14, not 16. Black background, Kermit green foreground color.
  • Set Window Transparency to a nice conservative 40 for both Active and Inactive. Not too in your face, but enough glassiness to say "I'm a subtle badass."
  • Under Behavior set "Copy on Select"
  • Under Hotkeys, change the New Tab 1 hotkey to Ctrl-T because that's what it should be. You'll have to click on the hotkey, then in the textbox, then type the hot-key you want AND press Assign for it to stick.
  • Under Hotkeys, change Copy Selection to Ctrl-C and Paste to Ctrl-V then rejoice and wonder why Windows doesn't work like this today. At this point, you may want to device if you want "Copy on Select" to happen automatically under Behavior. That'll save you the Control-C if you like.
  • Now, the subtlety. Under Tabs, you (if you are me) want two default tabs, one for CMD.EXE and one for PowerShell because you don't like your peas and carrots to touch on your plate.
    • Set your Console|cmd.exe first tab to this shell if you want it to be a Visual Studio command prompt. Be aware of the PATH if you are not on x64 like I am.
    • Then, make another Tab called PowerShell with this path:
      • %SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe
      • And I used the vspowershell.ico icon 'cause I'm into flair.

You'll have a nice "New Tab" option where you can make one of either shell. Note the general loveliness of this understated shell. I can open a new Tab with Ctrl-T (or lots) and use Ctrl-Tab to move between them. I took the screenshot with the background so you can see the transparency.

One final reason why Console2 rocks? It's freaking resizable in two directions, unlike the Windows CMD.exe console.

 (36)

Console2 is a great little front-end for your existing shell, no matter what it is. Note that Console2 isn't a shell itself, it's just a face on whatever you are already using. Enjoy.

Related Links

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Hosting By
Hosted in an Azure App Service
June 08, 2011 9:23
Ya linux folks are eating our lunch on the best cmd line enviroment. Its 2011 you would think windows would have a mature shell that can do many of the features of Unix/Linux shells.
June 08, 2011 9:30
I like having transparency set on the console window also. Makes it easier if there's something under the window that you need to refer to.
June 08, 2011 9:31
Mike - Have you tried PowerShell? It's bananas. I would also point out that the Console Windowing Environment you choose is separate/different from your Shell.
June 08, 2011 10:05
My text mode rocks with Far manager for so long time now.. It's made in the spirit of classic NC, and always was a productivity boost for me.
June 08, 2011 10:12
Thanks for the nice article!

How can I make Console2 appear when I click "open command window here" in the Windows 7 file explorer?
June 08, 2011 10:14
Yep, always was curious why windows cmd doesn't support horisontal resize :-S
June 08, 2011 10:25
This is cool. I really like having tabs, but I don't know if I can live without word select using double click. I use that all the time. Any chance there's a setting for that which I missed?
June 08, 2011 10:31
Daniel - I didn't know that existed! It IS open source, so maybe file a bug or start a conversation on their site?

AdrianG - Maybe make a custom INF? Make your own Command Prompt Here (old blog)
June 08, 2011 10:43
and here's some zenburn for you:

http://brianreiter.org/2010/08/08/upgrade-and-zenburn-the-console-window/

To setup other machines quickly, just copy your config file. I have mine on github https://github.com/fschwiet/fschwiet-local-config/blob/master/console2.config.xml
June 08, 2011 11:04
This also works great for F# Interactive ("C:\Program Files (x86)\FSharp-2.0.0.0\bin\fsi.exe"), and presumably the upcoming C# REPL as well.
June 08, 2011 11:50
Anyone know if it's possible to make this thing display a Cygwin or PuTTy prompt too?
June 08, 2011 11:53
I've been using Console2 for ages (thanks to the Hanselman Tools list originally I think) and it rocks. One change I have a tendency to make is to lightly tint the background of each tab type so I can tell at a glance which environment its in (I realize that the prompt probably tells me as much). Black for VS cmd, Blue for Powershell and Green for Git Bash.

You can also sprinkle in some AutoHotKey goodness for a Quake style console
June 08, 2011 12:01
Resizable in BOTH directions? Good lord, whatever will they think of next?
June 08, 2011 12:28
Using Console2 for some time too and configured several shells and command prompts. I have powershell, bash (git), normal commandprompt and vs2010 commandprompt. It works very well and really like Console2 for its resizing to adjust the column length to the width of the window.
June 08, 2011 14:12
Hi Scott,

Console2 makes sense for cmd.exe, but for Powershell, I rather prefer to use either Powershell ISE or (even better) PowerGUI console.

Martin
June 08, 2011 15:44
Console2 is indeed a rather nice tool. What I do is run PyCmd with console2. PyCmd is a command prompt extension for windows, it gives some new niceness like a persisted command history and a nice way to search previous commands - just a bit more useful.

Dead easy to do - just download PyCmd, and in Console2 settings, set the "shell" to C:\Tools\PyCmd\PyCmd.exe (or whever you installed it).
June 08, 2011 15:47
TakeCommand (jpsoftware) is on version 12 now. Tabbed console windows (detachable) and scores of internal functions and variables. A bunch of batch file enhancements, too, if you're into that sort of thing.
CB
June 08, 2011 17:05
It really rocks, thanks :)
June 08, 2011 17:15
@adriangrigore here's a quick link for setting up Console2 as your Command Window Here in the context menu for Windows explorer:

http://goingspare.wordpress.com/2007/03/29/adding-open-with-console-to-the-context-menu/

June 08, 2011 17:47
err, doesn't horizontal resizing in cmd work just fine when you up the Screen Buffer Width? I always use something like 1000 characters to I don't have to decipher wrapped build output lines. You can resize either direction up to the number of characters in the screen buffer direction.

I was actually disappointed that Console2 doesn't appear to have one-click Maximize. I've been doing this in cmd with my increased screen buffer sizes.
June 08, 2011 17:50
Just curious, can you run separate tabs under different credentials? e.g. main command prompt under my regular account, a second command prompt with an account which has access to a lot production systems (with red background, lol)
NZ
June 08, 2011 18:04
About the font: if you like Consolas, you're gonna love <a href"http://www.levien.com/type/myfonts/inconsolata.html">Inconsolata</a>. It's a bit similar but I like it better.
Also, turn on ClearType for much better reading.

Quick comment .. the link to "icon to the vscommand.ico custom awesome VS icon I created a while back" in the middle of the post is broken.

Amr
June 08, 2011 18:09
I love how easily I managed to get PowerShell for Console2 as well :)

http://gurustop.net/blog/2010/12/23/small-tip-using-console2-with-powershell/
June 08, 2011 18:31
I'm actually not a fan of overriding the default colors in Console2 because you lose any colors that your command line applications might output. For example, if you're running MSBuild, the bright red ERROR text won't jump out at you. Debug output from Powershell scripts won't jump out at you in YELLOW. I'd recommend just change the default colors in your Powershell profile instead.
June 08, 2011 18:35
Very good article Scott! And I second Martin Doms' comment about getting this work with Cygwin. That would be sweet!
June 08, 2011 19:01
Also a long time Console2 users here... but thanks for the icons... and the tip on changing the copy/paste keys to standards.

I have a .Net 4.0 (VS2010) command prompt, a .Net 3.5 (VS2008) command prompt, PowerShell and Git bash... but I didn't have icons for dos/power shell. Thanks for those.

Oh, and I also set up my registry so I get "Open Console Here" when I Shift-Right on a folder. Easy, Peasy.

I just wish Console2 would remember it's last position/monitor so it would open in the same place all the time.

BOb
June 08, 2011 19:17
Console2 is amazing. One feature I would love to have is to be able to override the custom colors & color maps for specific tabs.
June 08, 2011 19:56
Hi. For some reason some of the powershell modules I use do not show on console 2.

f I cd to %SystemRoot%\System32\WindowsPowerShell\v1.0\Modules\ I see only like 3 modules, while I have more; specifically the AppFabric Console module.

I was hoping to create a couple of tabs for managing the appFabric cache server in 2 differnet clusters I have and I wasn't able to load the module ... any ideas???
June 08, 2011 20:51
Great stuff.
Unfortunately, the link to your uber-icons is broken... I get a 404 when I attempt to download...
June 08, 2011 21:33
Big annoyance is that Console2 crashes with Windows telnet when telnet tries to write to the whole screen buffer in the interactive configuration mode.

I have a lame workaround here.

Also, there is some weirdness interacting with out-gridview. The first time you use out-gridview, you get an invisible window. The icon shows up on the taskbar but there is nothing to interact with visually. If you pipe to out-gridview a second time it works and continues to work from then on in that console2 session.

One of my sure-to-be-crushed hopes for Windows 8 is that conhost.exe will implement dynamic buffer re-sizing by dragging the window chrome and also line-oriented select instead of the block mode. That's all I ask.
June 08, 2011 21:33
nirisarri, I bet the problem is you were running powershell with 64bit builds, now you're running 32bit. The Console2 download link is to their x86 build, you probably want the x64.
June 08, 2011 22:56
I am not able to use DosKey kind of functionality with Console2 .May be missing some settings. Otherwise this is really great tool in box.
NJ
June 08, 2011 23:22
Love it. Thanks for adding yet another awesome tool to my collection.

@fschwiet Thanks for the ZenBurn link. Always nice when others do the hard work.
June 08, 2011 23:23
Awesome! Also supports F7 to bring up your history of recent commands :)
June 08, 2011 23:24
links to icon files are broken
June 09, 2011 0:27
Fixed the icon links!

Just noticed the issue with the up-arrow not working. Not sure how to fix that.
June 09, 2011 0:59
Wow, just tried PyCmd.exe and the "ALT-arrows" for recently used Directories feature is GOLD. Love it.
June 09, 2011 2:44
I've long since lost the link, but there was a study done some years back about keyboard vs mouse for doing shell type things (I think it was done on Windows, but I'm not certain of that). It turned out that most people were significantly faster using the mouse, although they thought they were faster using the keyboard.

IIRC, a lot of the slowdown was because people went into a vagued-out state (I'm possibly not using the correct scientific jargon here) trying to recall the correct commands to type. But they didn't notice that they had.

Anyway, command lines are so 1970's. You'll be telling us about your purple flares next :-)
June 09, 2011 3:50
Remapping Ctrl+C as suggested makes it impossible to interrupt programs such as long running `ping`s
June 09, 2011 5:03
and if you make a reg file with the following (edited for wherever you put console2.....) you get a right click menu for a console in explorer


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Console]

[HKEY_CLASSES_ROOT\Directory\shell\Console\command]
@="\"C:\\bin\\Console.exe\" -d \"%L\""
June 09, 2011 6:32
Re-mapping ctrl+c to paste no longer allows you to interrupt commands that take focus or run-away-scripts. I think I may remap the interrupt command though, as I really like being able to copy/paste with impunity. Thanks for this Scott, will keep my in my Windows VM for a greater portion of the day.
June 09, 2011 10:11
Anyone knows how can i make Console2 my defualt console for VS2010 / vs2008 ?
(i mean when running console applications...)
June 09, 2011 12:02
I downloaded Console2 at http://sourceforge.net/projects/console/files/ and put it c:\dev\utils which is in my PATH.

Or better yet, drop your entire utils into Dropbox. Mmmm, now that's bliss!
June 09, 2011 12:48
@Martin Doms: You can use PuTTY via plink.exe. However, you need some way to get the ANSI escape codes to show correctly. After some googling, I found ANSICON.

Copy the contents of the x64 (or x86) folder of ansi140.zip into your Console2 installation folder, then create a new tab with this command line:
C:\Program Files\Console2\ansicon.exe "C:\Program Files (x86)\PuTTY\plink.exe" -load someprofileofyours
June 09, 2011 13:04
Awesome! And it even works on Windows XP (still developing in the dark ages here). What are the settings for kermit green? I found this on colour lovers, but it doesn't look the same as your screenshot.


June 09, 2011 16:31
@Mark, I believe "kermit green" is simply bright green (0, 255, 0).

I also give my background color a slight hint of green (0, 16, 0) instead of pure black.
June 09, 2011 19:11
I would love to see your "ls c:\dev\utils"
June 09, 2011 19:58
I had to Turn off "Snap to desktop edges" in Appearance tab so it would play well with Win7's Win+Left/Right and Win+Shift+Left/Right for moving the window around/between screens.
June 09, 2011 21:30
Thanks for letting us know about this app! If you're a msysgit user, you can add a Git Bash tab with the shell C:\Windows\SysWOW64\cmd.exe /c ""C:\Program Files (x86)\Git\bin\sh.exe" --login -i" (full details in my blog post).
June 09, 2011 22:02
Come on, the icons on Live? that is blocked from work. The awesomeness will have to wait until tomorrow.


Juan Zamudio
June 09, 2011 22:21
@fschwiet: it worked like a charm!! thanks!!!
June 10, 2011 2:16
Could have saved me several minutes of configuring if you would have posted a download to your "console.xml" file and I could have started from there! :)

Thanks! Knowing the best tools to use is one of the biggest helps in the industry.
June 10, 2011 10:55
Great work! i hope some day windows will have something at least half as much usable as gnome terminal
June 10, 2011 16:57
Thanks Scott!

Quick tip. You can also use the -t <tab name> command line parameter to open a specific tab. That allows you to do things like "Open Specific Tab Here" in Explorer.
June 10, 2011 18:54
As Mike Minutillo already said... try QuakeConsole. I set mine Console2 to open/hide with `, full screen width, 40% height and about 30% transparent. It does not take precious taskbar space andi can always hide it and resume it with pinky. Fastest way to use Console2.
June 11, 2011 0:03
June 11, 2011 0:06
I see that you said you specifically did it to see the transparency but still. I wish I could delete bad comments though. Ugh, I'm having such a bad Friday...
June 13, 2011 9:27
Etu scott? you moved to mac? when did this happen? you where ms how could you move to mac, this is not happening,this is not happening, THIS IS MADNESS!!! NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !NO !
June 13, 2011 17:24
Honestly, I'm surprised that MS doesn't put some effort in building a decent front-end to cmd.
June 14, 2011 2:59
Move to mac? Um, no. I have many machines. It's good to know all sides.
June 14, 2011 14:45
Hi Scott! Thanks for the article. I've been using Console2 for a while now, but got some great tips from your article and the comments on how to improve it.

I second the request to see your C:\dev\utils listing - or actually your C:\dev\ tree even. One thing I'm wondering (as I migrate to a new work laptop and therefore think about all this stuff for the Nth time in P years) is should you put all your source code in C:\dev or C:\projects or similar, or keep it in your docs home as Visual Studio wants? And now we have all kinds of links available in Windows, if you want to put it in C:\ do you use a link, or do you just change the location in VS?

By the way, for those who also like Python, this works quite well http://ipython.scipy.org/moin/IpythonOnConsole (although arguably DreamPie is better).
June 14, 2011 16:00
I have tried a lot of different cmd.exe replacements and Console2 is nice. PowerCmd is an other alternative.

But nothing beats cygwin with the puttycyg frontend. At least for me since I come from the *nix world.
June 14, 2011 16:51
I wrote this same thing in 1992 !!! It was called WinDOS and was a full blown windows gui that replaced the cheesey command prompt

http://cd.textfiles.com/sigserieswin/WOLRS/WOLNEW.LST

search for "WINDOS.ZIP" on this page.

I'm old, sigh ...
June 14, 2011 18:10
@Mikael Hägerbro - Agreed, 95% of the time my CLI in Windows is Cygwin's bash (although I'm happy with mintty). As Scott pointed out though, it's worth remembering the difference between the shell and the console/terminal emulator. Console is not a cmd.exe replacement - it a replacement for the standard console window. Even with Cygwin though, I find there are times when I need a cmd.exe shell and so Console2 is the way to go for that.
June 23, 2011 8:51
If I set up Powershell as per the post, and then run a command line utility in a powershell tab (eg ping), it pops the ping open in a new cmd.exe window which closes as soon as it's finished, which isn't particularly useful...Anyone have any helpful suggestions?
June 27, 2011 2:57
This looks great! I checked out the Console2 project a while ago, and it was always impressive, albeit a bit buggy. The latest version looks like a god-send for Windows terminal users. If only Microsoft would realise the need for a better terminal UI itself!
July 02, 2011 17:21
Really loving Console2. One tip is that if you use the "Console colors map" instead of setting a "custom color" on the appearance tab, you can just override the default text colour (light grey) instead of forcing all text to be green. This is helpful for tools like MSBuild that use different colours for errors and warnings.
July 07, 2011 3:18
it works perfectly using Softintegration C/C++ interpreter ch shell together with console2
http://www.softintegration.com/docs/ch/shell/
July 28, 2011 21:27
@Martin Doms: yeah, it works great with Cygwin bash. I actually use it for my Git Bash.

1. Go to Edit -> Settings -> Tabs.

2. Add a new tab titled "Bash".

3. Set the "Shell" path: "C:\Program Files (x86)\Git\bin\sh.exe" --login -i".

4. Move the new tab entry to the top of the list.
August 11, 2011 9:13
I notice the PSCX takes much longer to load under Console2. It runs better if you make sure to get the 64-bit version of Console2 if you are 64-bit (but even then it still takes about 1.5 seconds longer to load than vanilla PS). Otherwise, it's great -- like you say, almost as nice as the Mac Terminal (or any number of Linux terms like Konsole...).

The best bit is being able run different types of shell side-by-side. I haven't had much luck using it as a PuTTY shell though (instead, install Cygwin/ssh and create a new Console2 tab with a shell command like "c:\cygwin\bin\ssh.exe user@hostname" seems to work well.)

Great tip about the icon editoron the other page btw -- the icons that Microsoft supplies all suck. I'm scandalized you can't just use normal graphics files like .png, .jpg (or even .bmp and .wmf) for icons in Windows 7 -- come on!).
December 09, 2011 10:05
Hi Scott, Good information. Thank you for the post.

On my Win7, I upgraded to PowerShell3 a few months ago. Now PS is in two places.

Location 1. %SystemRoot%\SysWow64\WindowsPowerShell\v1.0
and
Location 2. C:\Windows\System32\WindowsPowerShell\v1.0\

After the upgrade, I customized powershell startup (like background, fonts etc.), and that profile is kept in my user folder.

If Console2 is configured with SysWow64, it fails to see that customized profile and errors out, but with System32 path it just works fine.

Why PS3 are in two places? Is there a conflicting situation when console2 initializes powershell?

December 09, 2011 11:27
64 bit Windows includes both a 64-bit PowerShell AND an x86 version. I just use the x86 one.
December 14, 2011 6:05
Unfortunately, for some tasks, Console2 is still rather like putting lipstick on a pig. My biggest issue with the Windows command line (and one of many reasons I moved to Mac for personal use) is that it is crippled at the core by lack of unicode support.

As explained here - http://stackoverflow.com/questions/3780378/how-to-display-japanese-kanji-inside-a-cmd-window-under-windows

"cmd.exe can display Unicode characters, but only if the process it is running passes it Unicode, via wprintf or Win32 WriteConsoleW. Most command-line software, however, uses the C stdio byte-based output functions like printf, so you'll be limited by the codepage. It is very unfortunate that on Windows the system default codepage can never be 65001 (UTF-8), and that there are some serious bugs with setting chcp 65001 at all. Every other OS has standardised on UTF-8, allowing any old byte-based console app to do something sensible with Unicode"

I could never get my Windows command-line to show any of my files/photos with japanese characters in them. With a Mac you can buy it from a store in Australia; get home; turn it on; type 'ls' and see Japanese characters in the console, if you have filenames with them in it - no way you can do anything like that on Windows.
January 24, 2012 14:59
Hi Scott, I think you have a small typo:

...you may want to device if you want "Copy on Select"...

Should be "decide"?
February 09, 2012 16:11
Is there some way to make the cursor blink? Really need that..! :)
February 29, 2012 14:45
About the up&down arrow keys not working (to get the last entered commands from history).

Settings > Hotkeys > scrolling up/down > clear and assign to disable them, so it won't scroll the buffer anymore using these keys (quite annoying :).
September 13, 2012 13:32
On a related topic - some nice additional CMD.EXE tips from David Starr: http://elegantcode.com/2012/09/12/command-line-love-101
October 02, 2012 2:44
My biggest problem with this right now is that console2 doesn't show up when I alt-tab, major pain in the arse

Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.