Lately I've been seeing a lot of people (Linux users) talking about "going commando," i.e. shutting off any graphical support and only using console applications at the default Linux command line. Most recently over here, where Sean Tilley has set out on a 30-day trek of only using the command line.
This puzzles me, as "going commando" in my eyes has become increasingly irrelevant and impractical over the years.
The reasons given by people "going commando" (and even more so by advocates of the method) are usually one or more of the following:
- The keyboard is superior to the mouse as an input interface
- You aren't "really using" the system unless you use the CLI
- GUIs are unnecessary bloat anyway, and if you're stuck with a weak machine, you can't use a GUI!
- The CLI makes you 1337
However, I believe, for reasons I'll explain, that "going commando" is an extreme which is completely unnecessary in today's computer environment.
Background
The practice was widely spread when I started using Linux several years ago, because the technology of that day fit the command line better than it does today. Tech was targeted at much less powerful machines and as such didn't use the power of graphical elements as much as it does today.
The recent resurgence of this is something I can't really explain though. Maybe it's because so many more people are coming into Linux that are being swayed by "how cool" it is, maybe the amount of people doing this has stayed relatively stable, but I haven't seen it. Either way it doesn't make sense that it's still done so much.
Today's tech world is increasingly more web-based, and web sites are increasingly moving towards more graphical layouts and advanced interactive functionality requiring powerful JavaScript interpreters, as opposed to the days of yore when you could browse web sites just as well in plain text.
This makes the use of pure-text browsers (the links/lynx family) for anything but the simplest of web browsing pretty much impossible, and I consider their graphical cousins that use VESA to still be GUI (and as such violating the "going commando" principle).
Window Managers (and Desktop Environments) have existed for longer than I have used Linux, but nowadays the "bloat" they present isn't as bad as it was back then, in comparison to how powerful machines are. WMs are good for keeping track of windows that you keep running for extended periods of time, a thing that can be problematic in a pure-text environment.
In addition, many purely graphical tasks have ended up being possible on even the cheapest computers. Photo editing/archiving, graphical design, creating/watching movies, and so on. These are, obviously, impossible in a pure-text environment.
Exploiting the best of both worlds
The reasons I think "going commando" has become irrelevant has been outlined above, but that doesn't mean that the virtues of the command line are irrelevant! Far from it, the command line still remains THE power tool and I completely adore it.
I have even spent a fair share of time "going commando" myself, both intentionally and unintentionally, (when X breaks... it breaks BAD) so I do have experience from it to base my arguments on.
I just think that throwing away the benefits of a GUI so easily is completely unnecessary and perhaps shortsighted of the "commandos," especially in these times.
The most important lesson I think you could learn from "going commando" is how to use the keyboard as much as possible, and you can still practice that in a GUI environment! Even though I'm using a GUI, I rarely ever touch the mouse. I ALT-TAB my way between apps, mostly use my apps via keyboard shortcuts, etc.
I actually spend most of my time in a full-screened virtual terminal (aterm, for the curious) running screen (sort of a WM for command line apps). However, I also run firefox, aMSN and other GUI apps for tasks I feel fit better with a GUI app.
I also do all of my file management via the command line, as that's what I've grown accustomed to over the years, and it's actually easier for me to do complex or batch operations from the command line than from a mouse-driven environment. I tried to convert to a GUI file manager, but it just felt too clumsy for me for most purposes.
The power of the command line lies in its powerful completion support and the ability to pipe output from application to application. Want to copy only the pictures from the 3., 15., and 20. of March from a folder of pictures saved in a MM-DD-YYYY.jpg format? Sure! Just type in 'cp 03-{03,15,20}-*.jpg destination/'. The equivalent operation in a GUI would probably require visual scanning of the file list, carefully selecting the proper files, THEN copying and pasting them in the destination folder. Of course, this is a rather contrived example (and rather simple *grin*), but it gets some sort of point across.
Being a programmer, I am almost required by law to have a favorite text editor. Mine at the moment is VIM, closely followed by Emacs (no religious wars, please), both of which are keyboard driven. I feel that I am a LOT more "agile" in a keyboard-driven editor than in, say, the Visual Studio editor. The transition between keyboard and mouse just feels sluggish. In fact, whether the application is command line or GUI doesn't really matter, as I use VIM and GVIM (its GUI counterpart) interchangeably. The true power lies in how well it (and you!) exploits the keyboard.
But as said, there are things that GUIs just do a lot better, one of which is managing windows (especially with my favorite option: "focus follows mouse"). I can have my full screen terminal open, with smaller windows resting above it (usually IM windows). This allows me to see what's going on in all of them, and switching between them is as simple as just nudging the mouse over the window I want focus in. ("focus follows mouse" allows me to type in windows that aren't the foremost)
In addition, my web browser actually works with most web pages, and I can do graphical stuff without having to hack around with clumsy VESA support or going in and out of a full X server every time I need to do something graphical.
Pros and Cons of the Keyboard/CLI
To wrap things up, here's a list of the pros and cons I see with using keyboard/CLI over mouse/GUI:
Pros
- Typing is a central action on the computer. Maximizing the use of keyboard shortcuts and keyboard-driven programs minimizes the time you use switching between the mouse and keyboard. This in turn makes you faster at doing whatever it is that you do, and as a bonus makes you a better typist.
- You conserve resources, as command-line applications tend to have lower resource usage.
- Using the CLI often makes your "intimate knowledge" of the system you're using increase, and makes you a lot more capable of fixing your own problems, instead of relying on copy-pasting solutions from the internet and hoping they work.
- CLI applications can be displayed anywhere cheaply, even remotely over slow internet lines. Doing the same with GUI applications can be laggy and/or buggy.
- Trying too hard to use the keyboard can adversely affect you if you're trying to do things that the mouse is better at. Identifying where this applies is key to getting the most out of both input mechanisms.
- CLI applications and keyboard navigation requires a good memory and a higher initial effort, as there are little-to-no visual clues as to how you're supposed to do something. You will become very familiar with reading documentation. (this might be a good thing :P
Conclusion
On a computer you will probably be spending most of your time typing, so why not maximize your efficiency by getting keyboard-driven tools and/or learning the keyboard shortcuts of your applications?
The commandline and its applications put extreme power right at your fingertips once you learn to use it properly. Things that would require lots of tedious clicking and visual scanning in a GUI file manager could be accomplished with a simple pattern-matching command in the CLI. And it doesn't stop there, piping results from command to command can accomplish some extremely neat things in a single line.
Of course, we can't forget the power of the GUI, as well as its necessity in the modern tech world. Lots of killer apps are web based, and they are most easily accessed via a fully powered browser. Even then, many of the best web apps have their own keyboard shortcuts, so even there you get to practice the keyboard power. :)
All in all, I believe that "going commando" is out-dated by now, but the CLI and keyboard are just as useful as ever, especially when augmented by the modern WM/DE. It all lies in learning how to effectively combine the two input mechanisms and application types, and a key point is to increase the percentage of time you keep your hands on your keyboard.
To sign off, here is a screenshot of how I work. Full screen virtual terminal in GNOME/Compiz with screen running (with its own nifty statusbar). IM window over the terminal for easy access with mouse. Browser and Mail clients off on separate desktops for quick access. (even via keyboard)