cmd.exe drives me crazy!


I’ve been using cmd.exe more and more lately, and it’s driving me crazy! I was spoiled for years with Apple’s Terminal.app without even knowning it. It just seemed like the way a command line environment should work on a modern operating system. It’s not the things like “dir” instead of “ls” that drive me crazy. It’s not even the difference in how wildcards are handled. It’s the UI of the environment hosting the shell. [On Windows, are there different terms for the UI part (like Terminal.app) vs. the shell part (like tcsh, bash, etc)?] One problem is a bit unavoidable. Windows uses the Control key for shortcuts while the Mac has the Command key for shortcuts. So, the Mac can continue to use Command-C for copy without interfering with Control-C in the shell. But, this isn’t so easy on Windows since Control-C is used for copy, but also needs to be used in the shell.

Here are some of things that annoy me:

  • Why isn’t there a menu bar? Why is everything hidden in the single menu and the tabbed settings dialog?
  • Why is the window title bar in the “classic” style instead of the Windows XP style? This doesn’t really affect functionality, but really bugs me for some reason.
  • Why is copy/paste such a pain? It’s actually not as bad as I first thought. Once you go into “QuickEdit Mode”, a right-click does a copy if there’s a selection, and a paste if there isn’t. That means that you can select something and double-right click to copy and paste into the current window. However, once you are working between multiple apps, you’ll find yourself starting to right-click in the other apps to copy or paste. Arg!
  • Why isn’t there any drag/drop support?
  • Why such a limited list of fonts?
  • Why don’t page up and page down scroll through history?
  • And, the thing that drives me the most crazy – what’s with the rectangular selection? One thing I find myself doing all the time is taking a path that was output from some other command and pasting it into a new command. Usually, that path wraps between lines, and you have to do multiple copy/paste operations because of the rectangular selection. Why doesn’t selection work like it does in every other application?

I was hoping to find lots of alternatives, like the great alternatives for notepad. However, I didn’t find much. 4NT keeps the horrible UI, but replaces the underlying shell. eConsole and Console wrap cmd.exe, but focus on things like transparency and background images than selection behavior. eConsole seems to not support selection at all and Console retains the rectangular selection behavior.

Why don’t these things bother more people? Is wrapping cmd.exe with a nice GUI harder than it seems? Maybe this would make a good side project… There are so many simple things that could be done to greatly improve productivity when working with the shell.


Comments (22)

  1. RGabo says:

    Regarding functionality, look out for Monad, the new shell coming up in Longhorn. Would be awesome if it would be part of the whidbey wave (FW 2.0) but it probably won’t be.

    Usability.. Well, yeah, could be better 😉

  2. Dan Crevier says:

    Does Monad replace the GUI or just the shell underneath? It’s the GUI that’s driving me nuts, not the shell underneath.

  3. In QuickEdit mode, {Enter} also performs a copy of selected test. No other paste shortcut AFAIK.

    As far as replacements, the popular Unix shell "bash" is available for Windows, and Cygwin (which may include bash, I can’t remember) gives you a full toolkit of Unix-like shell commands.

    I believe the font list is limited to monospaced fonts (for good reason, since columns are fixed-width).

    Agree about the select block mode, but to be fair, many DOS apps don’t use all 80 columns for content, so "wrapping" selections in the traditional sense might break more than it fixes.

  4. William Luu says:

    Monad from what i’ve seen, looks exactly like CMD.exe.

    Only thing is it is much more functional, uses *nix style commands, and is programmable via .NET.

    But chances are, when it is rolled into Longhorn, things could well be quite different. (Well, that’s what I think anyway).

  5. Ugh. Tell me about it. Get a Mac :)

  6. MaxiGroovy says:

    And why is the size of the box so limited. With PuTTY I can make the box very wide, or very heigh, etc.

    Cmd.exe can’t :(

  7. Jon Galloway says:

    I think you’re right, Dan – Monad adds quite a bit to the what cmd.exe can do, but doesn’t make it any easier to work with from a UI point of view.

    I agree that it’s ridiculous that with a powerful computer and a modern operating system we’re using a DOS UI that looks like it’s maintained by guys who think the mouse is a fad.

    How about some new cmd.exe features, and some upgrades to notepad, calc, mspaint, et. al. while we’re at it?

  8. I’m not sure if you actually wanted answers, or were just letting off some steam, but… :)

    – Menu bar: I can’t recall the last time I needed to change the settings of cmd. That said, copy/paste buttons might be welcome

    – Style: Not sure, probably a compatibility issue. Raymond Chen would probably know.

    – Copy/paste: I tend to press the Enter key to copy selected text, but might try your rmb technique and see what happens :)

    – Drag and drop: what do you want it to do? You can drag and drop files into it, you end up with the filename pasted at the end of the line (including quotes)

    – Fonts: Ask Raymond :)

    – Pgup/pgdn: The up/down arrow keys go through the history. Press F7 for extra fun :)

    – Selection: No idea. Copy/paste is certainly the weak link here.

    These things don’t bother me because I rarely use the cmd line for long periods of time. The biggest change I found welcome was tab complete.

    I’m pretty certain Monad is the Command Shell Preview, and if that’s the case, it’s definitely not what you’re after. It’s not user-friendly at all.

    http://wesnerm.blogs.com/net_undocumented/2004/05/monad_shell.html

  9. Steve Jobs says:

    Quit whining and use a Mac.

  10. Andy says:

    I’ve played with Monad a little bit, and from what I recall it only replaces the shell underneath, not the UI. The shell is very much Unix-like, though, which is a good thing in my book.

  11. mike says:

    "Is wrapping cmd.exe with a nice GUI harder than it seems?"

    Yes. Much harder, due to the lousy way the windows console works.

    I’ve heard some talk that the console handling is going to be revamped for LH (presumably due to the fact that the entire display model is changing – currently csrss manages console windows directly (which is, i believe, why they don’t get skinned – csrss doesn’t use the normal win32 apis for drawing title bars, which the theme engine hooks and replaces)).

    For the moment, the best solution is probably running an xterm via cygwin…

  12. Chris says:

    Could agree more. What drives me wild is that you cannot dynamically resize the window. Always going to the settings is just overkill.

  13. Kyle Alons says:

    4NT does solve most of the issues I had with cmd.exe (for instance, Alt+PageUp/Down to scroll history, Ctrl+Y/Ctrl+V to copy/paste, etc.; quicker access to recent paths, commands, etc.; *much* more extensive programmability). You might also take a look at their other product (Take Command) which is more of a Windowish shell with support for things like drag/drop. For fonts, there’s quite a selection of fixed-width fonts that you can download and experiment with [1].

    [1] http://typographi.com/000744.php

  14. I don’t know if this would interest you, or if you’ve seen it, but this might be of help:

    http://www.cygwin.com/

    It’s kinda handy for those days where I have to run in windows…. :) Course, as said, not quite sure this would do what you need, but it’s something to try.

  15. This has always bugged me to no end. I too looked at the console alternatives – and found them sorely lacking. I’m waiting on Monad, and was greatly anticipating the talk that was scheduled to occur at the Microsoft Management Summit 2004. It was canceled at the last minute however, so I’m still waiting to see just what it brings.

    You can change the color of the text and background, but the fonts are limited… and while the transparency thing is cool, the old UI really bugs me. . I’ve had long conversations with an MCS employee I work with (Jon Gross), and the excuse he provided (though I don’t believe it) is that the UI is built into CMD.EXE and therefore the system-wide UI is ignored. What?! That’s ludicrous.

    Microsoft has largely ignored the command line for the last decade. The big mantra has always been build it into the GUI, CMD.EXE is irrelevant. Many of the most advanced features of UNIX are barely seen without delving into the shell (my favorite was csh).

    I remember when I switched from Novell/Solaris 2.6 to Windows NT. The hardest thing to swallow was that there were no Hard Links. I’ve argued this for years (in fact it’s one of the few arguments I won with Jon Gross), Virtual HD mounts into a root level folder (with the separate physical drive mounted in a subfolder) is not a hard link, in fact its obviously more related to a UNIX mount then anything else. Hard Links (coupled with long file name support) could have greatly reduced the anguish of DLL hell YEARS ago.

    I’m glad that Microsoft is doing Monad (probably championed by the MSBUILD team), I just hope that bundled with WinFS… that it brings a true console to Windows.

    For more info, Keith Devans (via google) links to the .NET show video about Monad. http://keithdevens.com/weblog/archive/2004/Jul/04/Monad-Shell

    // steve

  16. Dan Crevier says:

    I really need the standard shell and only want better UI.

    With regards to Enter for copy, that’s actually what I’ve been doing most of the time. But, with Enter, if you want to paste it into the command window itself, you have to keep switching between the mouse and keyboard – select with mouse, hit enter on keyboard, then right-click mouse.

    One another annoying thing is lack of contextual menu support.

  17. dhp says:

    For paste, do Alt+Space, then E, then P

  18. Long ago I complained about cmd.exe. At the time, I tried out some of the replacements and didn’t find…

  19. Long ago I complained about cmd.exe. At the time, I tried out some of the replacements and didn’t find