top | item 4763586

Reimagining the Windows Command Line

54 points| tltjr | 13 years ago |tltjr.github.com

72 comments

order
[+] manuscreationis|13 years ago|reply
This looks interesting, the tabbed effect is a major draw for me personally, but I feel like hes got a bit of a price tier issue with the rewards on the kickstarter...

His target price for the released product is hopefully $10 ( a good deal )

The $20 pledge gets you 2 licenses Cost Per License: $10 Additional Perk: Nothing

The $50 pledge gets you 1 license Cost Per License: $50 Additional Perk: Beta Access

The $100 pledge gets you 5 licenses Cost Per License: $20 Additional Perk: Immediate Access

And that's just a small analysis of those 3 price points. The higher points also seem a little off to me as well. It just seems odd to have the Cost Per License to vary so wildly, in my unsolicited opinion, anyways.

I understand trying to play to the draw of people wanting quicker access to use the tool, but his pricing model creates tiers that are counter-intuitive to people who want to contribute, but do not want to receive what could be perceived as a poor value for the cash they have available to contribute.

[+] greenyoda|13 years ago|reply
If you want a tabbed Windows console, take a look at "Console":

http://sourceforge.net/projects/console

I've been using it for a while, and it works pretty well.

From the project page: "Console is a Windows console window enhancement. Console features include: multiple tabs, text editor-like text selection, different background types, alpha and color-key transparency, configurable font, different window styles."

[+] tltjr|13 years ago|reply
Great feedback and something I have been concerned about myself. I'm considering adjusting the higher tiers so the cost per license is more consistent.
[+] tinco|13 years ago|reply
The features sound nice, they could use a bit more slick design ;) Why not make it for the Metro UI? Might rock..

If you suggested you would dive into the WinAPI and use your C++ skills to write a new console _engine_ I would gladly pledge 50 bucks or more.

I'm afraid many people will pledge thinking this will bring a usable console emulator to Windows, instead of just another Console2 like hack around the severely limited windows api.

I think 5 years of .Net experience won't cut it for that ..

[+] runjake|13 years ago|reply
For what it's worth, it's very, very buggy on Windows 8 x64. I couldn't get tab completion working, and after the first dir command, everything went downhill. It began behaving like a text editor. When I typed or backspaced, it backspaced over the prompt and everything else. The kickstarter video was pretty promising, though.

Might I suggest you compiled x64, too? x64 seems to be more commonly sold over x86 these days -- at least in the US.

[+] tltjr|13 years ago|reply
Thanks for the input. I haven't tested on Windows 8, so I'm not too surprised. Maybe I'll make separate installers if there is a lot of interest.
[+] cocoflunchy|13 years ago|reply
Same here, after a git pull it froze for ~20s and then started behaving like a text editor. (Win7 x86)
[+] mixmax|13 years ago|reply
This might be slightly off-topic, but am I the only one that thinks that command line tools are archaic with some pretty serious drawbacks? I see and acknowledge the power they can wield in the right hands, but for mere mortals it's a terrible experience. Especially on a windows box.

I've started learning Symfony2, and the default is to get it up and running using the dependancy manager composer, a commandline based tool. I've spent a week trying to finish the simple task of installing the framework. No success. Now, I don't make a living programming, so I'm definitely at the shallow end of the programming pool. But still. A week.

There are several problems as I see it:

- No discoverability. You are given no clues whatsoever as to what commands are available to you. You have to know exactly what you want to do. Yes, you can read manpages, forum posts, etc. but finding, learning and memorising a whole set of commands used in some program you might never use again seems like a terrible waste of productive time. Without the manual you're flying blind.

- All sorts of opaque dependencies. Composer for instance apparently requires git installed for it to work. But it doesn't say that anywhere. You also need to define paths, etc. which isn't covered anywhere.

- A million minor flaws and bugs. Until now I've run up against at least a few bugs, either in composer or in some other part of the chain of software. Only opaque general warnings are given, and finding out exactly what is wrong is next to impossible.

- Terrible UI. Copying and pasting doesn't follow convention, copying from a commandline to a notepad inserts linebreaks that you have to clean up manually, there's no way to maximise the cmd.exe window. The list of basic usability flaws goes on.

This isn't meant as trolling or ranting, although I must say I'm genuinely alienated by the commandline. I understand that text is great way for programs to talk to each other, I understand that the commandline is a great way to talk to a remote server, and I understand the power that piping, etc. gives you, so it's not like I'm denouncing the power that's inherent in the tool.

The problem is that the learning curve is tremendously steep, and I just don't feel it's worth it. To do the simplest thing I need to learn how a whole ecosystem works. I also have to page the information I need together from a number of different sources that I first have to find. It's kind of like having to build a car just to ride down to the baker to get some bread. It's quicker to walk than assemble a car before you can drive.

[+] w0utert|13 years ago|reply
>> This might be slightly off-topic, but am I the only one that thinks that command line tools are archaic with some pretty serious drawbacks? I see and acknowledge the power they can wield in the right hands, but for mere mortals it's a terrible experience.

You've asked the question and answered it yourself ;-)

Using a GUI over the CLI is probably preferred for 90% of the tasks 95% of the users typically perform. I don't agree with all the drawbacks you listed, but I can see where they are coming from. The CLI is simply not so great for typical computer users.

That said, a good CLI is absolutely invaluable for power users, system adminstrators, developers, etc. There's only so much you can conveniently do through a GUI, as soon as you need to compose multiple complex actions into a script or perform advanced data extraction, search operations, automate tasks, etc. there really is no alternative for a good CLI.

The funny thing about a powerful CLI is that it isn't very accessible unless you invest quite a bit of time mastering it, but once you do, you'll find out that you can do many (most?) things more efficiently by typing up commands and composing them into scripts. Once you get proficient using the CLI, you'll find yourself using the CLI for all kinds of things you used to do through a GUI before. For example selecting and copying around files or extracting archives, personally I think CLI tools (in my case unix CLI tools) to be much more flexible and convenient than something like WinZip.

But just like most people will never use their computer to write scripts or computer programs, they will also never invest time in learning the CLI. And usually they don't really need to anyway, just like most people don't need (or want) to learn how to change the oil on their car themselves, no matter how easy it is if you know how to do it. It's not something they enjoy learning about, but that doesn't mean changing oil is useless or difficult.

The lack of a proper CLI in Windows 9x and XP has always bothered me a great deal, as a developer and power user. It was one of the main reasons to switch to Linux and later OS X. Apparently these days Windows has a pretty good CLI with PowerShell, but the Windows train has already departed a long time ago for me. But it's still a good thing Microsoft finally decided they had to provide power tools like a CLI, it's one reason less blocking me from every going back to Windows (a lot of others still remain though ;-)

[+] skrebbel|13 years ago|reply
Strongly agree, but nearly all of this can be fixed with better tools. Wish isn't it, but it's a step in the right direction.

For example, there's absolutely no reason why command line tool options can't be discoverable in the same way object methods in Java/C#-ish IDEs are.

[+] dredmorbius|13 years ago|reply
If these are the problems you see with CLI, then you're doing it wrong.

- Discoverability: tab completion, apropos manpages, listing out your search path directories, using your Debian GNU/Linux distribution's package management tools to search / explain packages and commands.

- Dependencies: Debian GNU/Linux, APT, and policy. There's a reason I'm an unrepentant bigot. Debian-based distros are a fair substitute. RPM remains a pale shadow, largely for lack of policy. Proprietary operating systems have fundamental conflicts of interest which preclude an effective solution.

- Bugs: Addressed in policy and via an active user and developer community, with low barriers to communication and interaction between them. Again, Debian GNU/Linux nails this. No, it's not bug-free, but you'll find very, very few showstoppers in stable releases.

- UI: If you're not using pipes, command expansion, xargs, etc., you're mostly doing it wrong. Pasting into vim allows you to sort your linebreaks via regex replacement or any of numerous other means.

How old are you, kid?

[+] wazoox|13 years ago|reply
> - No discoverability.

proper command line shells and tools offer auto-completion and inline help.

> - All sorts of opaque dependencies.

Bad or unfinished products is a concept orthogonal with command line. I've had to manually install a particular unspecified version of .NET to get some graphical application to work, for instance.

> - A million minor flaws and bugs.

Again, totally unrelated to CLI. Most applications are barely usable, for instance almost all of professional in-house applications at most companies are abysmal, though graphical.

> - Terrible UI.

Probably a unix program; you shouldn't use Notepad, it doesn't understand any other line end convention than <CR><LF>. Notepad is mostly useless, and there are many valid replacements.

[+] archagon|13 years ago|reply
As a developer, the last point bothers me the most. Why can't I use my standard OS shortcuts with the command line?! It looks just like a text prompt, and yet it doesn't behave like one. (And I'm sorry, but bash shortcuts are ugly.)

For me, at least, the dependency issue has been resolved with automatic build systems like MacPorts. It's been a while since I had to manually seek out the dependencies for a command line program by hand.

Discoverability is very much an issue. I tried to figure out how to get ffmpeg to do something last night, and it took me hours. I find Google to be far more indispensable when using the command line than the man pages.

Despite all these issues, I still find the command line invaluable. :)

[+] JesseAldridge|13 years ago|reply
Yep, command line sucks. But it's a question of critical mass and network effects. Command line tools are always there, even when you're on some weird ssh tunneled setup. There's been a number of times when I've been fumbling with some goofy gui setup while some senior level dude is trying to help me with something and they always kind of roll their eyes and say, "Just use the command line."

I think the way most people learn these things is to have someone who knows what they're doing sit down next to them for an hour or so and explain how everything works. I suggest finding someone like that -- flailing around with google is orders of magnitude slower.

[+] samspot|13 years ago|reply
IMO the only drawback is learnability. And it is countered by the fact that you can make some serious gains in productivity with only a little time invested.

I started really investing in cygwin last year and I'm constantly moving more and more of my work into it. All my coworkers have a tedious build process that involves lots of clicking around windows explorer while mine is a two character sequence that has some other value-add factored in.

In addition to these benefits, shell tools take much less memory than gui ones, and I really notice the difference running mysql & psql on the command line vs firing up pgAdmin or MySQL workbench.

[+] ImprovedSilence|13 years ago|reply
Yeah, I only learned to use the command line when I switched from windows to linux and osx. I'm now useless at anything windows, and, well, I don't ever mess around in their command line.

Besides you can never learn everything all at once, but you slowly pick things up over time as you need them. Then, one day, you wake up and the command line feels like home. My advice, don't try to learn any of it until you have a specific need of doing something, only then will you really retain anything you gleam from it. And don't try to use/learn it on windows.

[+] bhanks|13 years ago|reply
Typing is always going to be faster than clicking around in an interface. Take the time to learn it. There was a time when command line was also for "mere mortals". What moved us away from that? Windows. Something to think about.
[+] dhawalhs|13 years ago|reply
I use Symfony 2 now, but I stared out with CakePHP. It has better documentation and is a less engineered than Symfony. Maybe give CakePHP a try?
[+] drivebyacct2|13 years ago|reply
Most of your complaints sound like problems with documentation (it existing and/or you using it) or problems with a poorly defined tool (edit), lol, or is specific to the Windows shell.

I can think of several GUI apps that have ALL of those problems but I also can't script them, alias them or fix them.

I spent 75% of my day in the terminal because I'm proficient and fast with it. Most of programming has a learning curve, I don't see why people expect otherwise when it comes to an interface that is every bit as powerful as a GUI but with a specific interface.

No offense but with the number of misconceptions in that post, maybe you need to spend more time with it before dismissing it out of hand. (edit) seriously, you don't know about Notepad.exe and line breaks. :/ Man... if you would spend a bit of time on tooling and learning your environment you probably wouldn't be spending half the time you are doing whatever it is you're doing. Jumping into something is fun, but for sufficiently complex things, you DO have to step back and read the manual.

Knowing what Symphony does, I'm quite sure that learning the CLI tool would be a far better use of everyone's effort than a GUI tool. This is even a place where I think the CLI tool makes exceedingly more sense to use.

edit: To be fair, if I had to use Windows default tools and a PHP generator tool all day long, my words would probably be more angry than yours.

[+] beatgammit|13 years ago|reply
I'm actually glad for the inefficiency of the Windows command-line. Every time I boot up into Windows to test something, I'm reminded of how much I hate it. Since moving to Linux, development is just easier in every way:

* viM instead of Visual Studio has made me a better programmer * think more, guess less * I can keep customizations when I remote in and patch production code * Bash is much more productive than .bat files * Piping is amazing (cat file | sed | awk | ...) * Tons of documentation online

If Windows had a decent command-line (with decent documentation of course), I might convince myself to put up with less malleable tools just to play games without rebooting.

Don't get me wrong, Windows is fine, but it's not Unix. A better command-line app can't change that.

[+] gizmo686|13 years ago|reply
>If Windows had a decent command-line (with decent documentation of course), I might convince myself to put up with less malleable tools just to play games without rebooting.

Isn't the point of a commandline that it makes basic tools far more malleable? For example, I recently was working with an OCR tool that took as an input 1 image file path, and an output name, and extracted plaintext from the image.

If this were a gui tool, I would be stuck manually running it on hundreds of images at once. As a command-ling tool, I can do: `find . | grep *.jpg | xargs -n 1 -I{} | tesseract '{}' '{}'`

[+] joelverhagen|13 years ago|reply
One of my biggest pet peeves about the original "cmd.exe" or PowerShell is that resizing the window is not pixel-precise. Thank you for making this a part of wish! The snapping to the left and right of my screen works really well.

Although it seems it is not working well on Windows 8 x64, I am having a good experience on Windows 7 x64.

A couple of suggestions:

- Wish takes a while to become responsive after starting the program (3-4 seconds for me). I am not sure if this is just me, I just wanted to make you aware!

- Add a keystroke for clearing the terminal. I am addicted to Ctrl + L in bash.

- Perhaps consider adding select to copy.

Keep up the good work, and I'll keep an eye on this project :).

[+] tltjr|13 years ago|reply
All great suggestions, thanks! I'll take a look at all these.
[+] alpb|13 years ago|reply
Man, this sounds like the best thing ever happened to cmd.exe, I will give it a try and back it on Kickstarter. But I think such a project should be developed under an open source license and maybe licenses can still be sold like Textmate.
[+] alpb|13 years ago|reply
A few suggestions:

* Make shortcuts for tab splits in both vertical and horizontal

* Tab titles are not so necessary, right? Just draw a line between vertically or horizontally split Windows, like iTerm2 does (it is really neat).

* Word-wraps?

* I was in c:\demo, I wrote a nonexisting command (let's say lls), now I'm in c:\program files\wish.

* On a prompt, I can use Backspace to delete PS1-like string, and after deleting something and pressing return, it crashes

* Add it to PATH so that people can run it via Run window (Windows+R).

* "set" command runs without params in cmd.exe, http://technet.microsoft.com/en-us/library/bb490890.aspx this doc might help.

I have recently joined Microsoft and I was using Linux-OSX before that for work and I miss zsh+iterm2 quite a lot.

[+] SiVal|13 years ago|reply
For most of Microsoft's lifetime, I've wondered why MS didn't just build a unix-style command line into Windows, providing a major upgrade to the ridiculous DOS. As a Windows dev, I always downloaded unix utilities for DOS and the first thing I put on any new Windows box is Cygwin. After decades of the same ol' DOS, it's obvious that MS just doesn't care about the command line.

One reason I switched to Mac for Web dev is the tightly integrated unix command line. I love it, but I don't think Apple does. I don't think the integrated unix CLI is any emblem of enlightenment on Apple's part; it's a historical accident. A company that believes that even granting users a "files and folders" view is giving them too much power (iOS) is no stalwart defender of the command line interface. As we make the Windows -> Metro, Mac -> iOS shift, the time may come when any command line access to a commercial OS is part of a "developer tools" package available only to "registered" developers who have "signed zee papers."

I've only used Linux servers for years. I wonder if I'll end up a few short years from now with some sort of hackers' Android laptop, built with Apple-quality hardware/software integration by somebody like Samsung for the niche of people who want real computers instead of media purchasing appliances.

[+] drblast|13 years ago|reply
Seriously, MS has been going toward easy scripting for years:

http://en.wikipedia.org/wiki/Windows_PowerShell

And Powershell ISE is like bash with Intellisense.

You can access .Net from Powershell and pretty much do anything you want. You can easily write new commands in C#.

Everything you want is already there. You just have to step slightly out of the Unix mindset to find the Windows equivalent. And I'd have to say that the powershell idea of passing objects around instead of text is exceptionally useful.

[+] airfoil|13 years ago|reply
Nice work!

I played with it for a bit and one thing I noticed was that the "Home" key took me to the beginning of the line/prompt instead of the start of my input. Also if I backspace far enough it will start to kill my prompt.

One thing that would make this awesome for me is emacs keybindings.

Overall though, I think this has nice potential to be a super useful tool. Thanks for sharing!

[+] tltjr|13 years ago|reply
Thanks for the feedback. The UI is a bit of a hack for the prototype and will be a more proper control for release. Emacs and vim keybindings are on my feature list. I think Ctrl+P and Ctrl+N work for command history in the prototype, but don't quote me on that.
[+] RyanMcGreal|13 years ago|reply
Quick note (Windows XP x86): every time I try to switch from Powershell to CMD, I get multiple "Keyboard History Utility has encountered a problem and needs to close" error dialogs followed by Wish crashing.
[+] kuida0r3|13 years ago|reply
When I work on windows, I just use cygwin with the mintty shell to get productive with a familiar look&feel. What am I missing with this setup that Wish fills?
[+] tltjr|13 years ago|reply
A lot of Windows users (like myself) are somewhat committed to tools like Powershell in addition to Cygwin. I currently keep both Git Bash and Powershell open so I can switch back and forth as needed. Wish allows me to switch between these seemlessly with a common set of features across both.
[+] skrebbel|13 years ago|reply
I want this, bad, but I'm afraid of depending on little one-developer tools. How much do I pledge to make you consider open sourcing it?
[+] mariusmg|13 years ago|reply
There is already a full featured (including autocompletion), stable windows CLI called ConeEmu (available at http://code.google.com/p/conemu-maximus5/ ).

Also, cli in wpf ?! Come on....

[+] tltjr|13 years ago|reply
I mention ConEmu in the Kickstarter post. It is an excellent alternative. As for using WPF for a CLI, I think it adds some useful features. At the end of the day, a tool either makes your life easier and you more productive, or it doesn't. I think this tool can add a lot of value.
[+] nsxwolf|13 years ago|reply
Is this a Windows port of wish (WIndowing SHell), or an all-new, confusingly named project (WIndows SHell)?

http://en.wikipedia.org/wiki/Wish_(Unix_shell)

[+] tltjr|13 years ago|reply
Quite a few people have brought this to my attention, and it is unfortunately, a confusingly named project. I was unaware of the other project and will probably consider renaming my project if it gets funded. Thanks for pointing this out though.
[+] Zuider|13 years ago|reply
No, not a port - it just has the same name. Tcl/Tk works on Windows too. I can see a name clash.
[+] Osiris|13 years ago|reply
I've never supported a Kickstarter project before, but I pledged to this one. I use Mac at work but PC at home and I would LOVE to have a better unix-like command line on the PC.
[+] alexholehouse|13 years ago|reply
Most features are incomplete

Sounds all too familiar :-).

I don't have a windowsbox available right now, but demo looks great.

[+] bashzor|13 years ago|reply
Not so much "reimagined" as "an improvement for windows' command prompt" it seems.
[+] Tsts|13 years ago|reply
Windows is a dead OS walking. My humble advice is instead of learning Wish, get a Linux VM and start moving your skillset, aps, ets.
[+] vitalique|13 years ago|reply
Check your facts, for example here: http://www.w3schools.com/browsers/browsers_os.asp.

See, your 'dead OS' is not walking - it is marching bravely here and there and all over the planet, led by army of Windows admins. Who, being just as smart as their other-OS-admin-brothers, are always looking for better tools to do their job.

[+] mariusmg|13 years ago|reply
You just won the troll of the year award. Congratulations.