As I have recently discovered, with the right applications, ditching the GUI and using the console exclusively can be a pleasure. By knowing which console applications will suit your needs the best you can achieve efficiency in a console environment that rivals that of a GUI. With well designed ncurses interfaces many console applications are extremely usable and working in a console environment can not only free up precious resources it can also provide several other benefits that will be discussed later in this article.
Note: The use of the term GUI in this article will refer to an X server with the possible addition of a window manager and/or desktop environment. Although I have seen applications with ncurses interface referred to as having a GUI, I will refer to their interface in this article as the console or User Interface (UI).
We All Have Needs
When exploring the idea of continuing existence without your favorite Desktop Environment you must examine what your needs are when using your computer. If you are a graphic designer, working exclusively in the console is obviously out of the questions, but for many Linux users operating there computer in a console environment is a very realistic, even enjoyable, solution. Since I had an older computer lying around I decided to use it as a file and web server a couple of years back. Later, when working on my primary machine I got tired of distractions like people instant messaging me and other temptations like messing with mp3’s, etc. so I decided to move these applications to the older computer. I first tried a few of the minimalistic window managers and although I am a big fan of the usability that some of them provide, I was never satisfied with the amount of resources I had to sacrifice to run X on this older machine. I decided to look for console applications that would match the functionality I had become accustomed to in the GUI programs I depend on. I needed to find an instant messaging program capable of communicating with multiple protocols, a music player that could play mp3 and ogg files, a means for surfing the net, and some applications to monitor my system resources. I didn’t expect to find applications that could live up to my expectations, but it turned out that the applications I did find were not only adequate but look great, are easy to use, and made working in the console a productive and enjoyable experience.
Some Basics for the Console Newbie
(skip if you already know your way around virtual consoles)
Before proceeding I will discuss some little tricks that will allow you to work productively in the console environment that may not be obvious when starting out. First, that login prompt that comes up after your distribution finishes booting (if your not using a display manager), there are several more just like it. You can access them by pressing ALT+F(1-6).
Note: Your distribution may have less than or many more than 6 virtual consoles. The most common case I’ve experienced, in Linux, is the existence of virtual consoles 1-6 and 7 being reserved for the X server. It is also possible to create a greater number of virtual consoles and select which one will be used for the X server.
If you, for example, start up the X server from console 1 you will then be taken to the GUI. If you want to return to your virtual consoles you can press ALT+CTRL+F(1-6) to select which virtual console you wish to use. After in a virtual console pressing ALT+F7 will return you to the GUI.
So why is all of this useful? Because you want to load those virtual consoles up with nifty applications, streams of compiling code, and whatever else makes you and your Linux box tick!
Check the screenshots below and then go ahead and read the second page of this article.
Which Applications Are Going to Turn My Linux Box into a Lean, Mean, GUI Shredding Machine?
When using my favorite window manager, Fluxbox, I get a lot done in console windows: moving files around, programming, editing documents, etc. I, however, was dependent on several applications that I used for surfing the net, instant messaging, playing music, and monitoring my system. The following are some of the console applications I found that allowed me to ditch X.
Important things first: How are we going to play those mp3’s in the console? We could use one of those boring command line players, but why would we where there is mp3blaster. Mp3blaster has a well designed ncurses interface. It is easy control the audio mixer, browse the available options, play files from the playlist, and control shuffle and repeat all from the main window. Selecting mp3’s to play is also a breeze with mp3blaster’s file manager. Multiple files can be selected one at a time or by recursively selecting directories. One of my favorite features in mp3blaster is its ability to let you create groups within the playlist. This allows for added flexibility in the order that your music is played and also is convenient for adding and deleting groups of music. If you’re an Ogg Vorbis fan, mp3blaster has you covered with ogg support.
Now that the tunes are blasting lets look at instant messaging software (another area where my expectations were low). CenterICQ is the console user’s answer to instant messaging. It supports several networks: aim, icq2000, yahoo!, jabber, and IRC. It can also connect to the MSN network with a patch that can be found in the forums at the CenterICQ fan site. It sports an ncurses UI that perfectly makes visible everything necessary to view online buddies and carry on several conversations at once. It has excellent menus for detailed configuration and is feature rich with options such as using Emacs key bindings in the text editor, mode settings for sorting groups, and nice menus for searching for users, viewing chat history, and viewing user details.
If you are running network services IPTraf makes it easy to monitor TCP and UDP connections. It can provide various real-time statistics on each or all network interface and custom filters can be created to monitor specific traffic from a specified port for monitoring services like HTTP or STMP. IPTraf supports logging of interface traffic to the disk (it will create a file per interface) and several other useful configuration options. It’s UI is also ncurses based making the output easy to read and maneuver through. For monitoring other aspects of your system don’t forget about the good old top and ps commands.
If your a P2P file sharing fan you will be pleased to know about giFT. It has become pretty popular amongst Linux users and can connect to its own openFT network along with the popular FastTrack and Gnutella networks. It works by combining a daemon (giftd) that connects to the networks of your choice and allows various interfaces to connect to it. GiFTcurs is the ncurses front end and it is easy to use. Combining the configuration options of the giFT daemon and giFTcurs (mostly achieved by altering giFTcurs.conf) the user is provided with a highly configurable tool that returns good results on searches. My only complaint with giFTcurs is that as far as I can tell it does not, by default or configuration, have some of the features that other P2P clients or interfaces have. The search options are very basic (search string and type of file), the detailed information about search results requires scrolling on each result, and the results are not sortable by this detailed information.
One of the most essential applications to many is the web browser. There are several console browsers available for Linux. Lynx and Links are the most popular with Links having several variants: ELinks, Links-2, and Links Hacked. I will stick discussing Links-2. It is rich in features including the ability to display frames and tables, menus, use ssl, download files in the background, use JavaScript, and even render pages graphically in the console with use of SVGAlib. It is a powerful and quick browser and especially helpful if working in an environment where a GUI is not an available. Links-2 ability to use SVGAlib reminds me of one other application I use in the console: mplayer. A movie player is not something that you think of when talking about the console, but it has the ability to play movies, without an X environment, by using SVGAlib. The only problem that this may cause some people is that you have to be logged in as root to access SVGAlib. Mplayer in the console is very helpful if you wish to use the console exclusively and want to watch a video since you would otherwise have to start an X session to do so.
The last two applications I will present are Midnight Commander and Emacs. Both are GNU applications that have long histories. Midnight Commander is a file manager that is roughly compared to MSDOS’s Norton Commander and at first glance reminded me of the old DOSSHELL program. It has many more features than both of the DOS managers mentioned and also includes an editor that supports syntax highlighting and key combinations similar to those found in Emacs. Because it is where I spend so much of my time, I can not help but mention the Emacs text editor/environment, despite the fact that everyone reading this has most likely heard about it or uses it. What is nice about Emacs is that it allows you to do key combinations that help you to edit text quickly. It also includes many features like its own E-Mail program, file browser, games, and is very configurable with the use of LISP scripts. There are several good tutorials to help with learning Emacs and I also suggest getting O’Reilly’s “GNU Emacs Pocket Reference”. Any effort you put towards getting past the initial learning curve that is associated with this editor will pay off in productivity due to Emacs infinite customability and huge number of features. Aspell is also worth mentioning because it is a powerful spell checker that provides better suggestions than many other, more popular, spell checkers that I have used. It is capable of checking plain text files, HTML files, TEX files, e-mails, and many other types. So after or during your Emacs session you can jump into Aspell and be on your way to superb spelling.
Conclusion
The applications available for the console are at a level of quality that should satisfy a large array of *nix users whether your goal is to add some new applications to your arsenal or to use the console exclusively. My favorite advantage gained by using console applications is the ability to run a ssh daemon and access these applications from anywhere with a basic ssh client. All of you console applications are instantly available to you making it easy to, for example, log in to your computer load up CenterICQ and have a messenger that is instantly configured and connected without having to install various clients on the local machine you are working on. It becomes easy to log in and load up IPTraf to monitor network traffic or to edit the source code, html documents, etc. Using the console exclusively also gives you the advantage of using less system resources, which can be important on a slower machine and it enables you confuse and/or impress your Windows using friends when they catch a glimpse of your monitor. In conclusion I will mention GNU’s screen application because it allows you to switch between multiple applications in the same console window. This is very useful when working with a limited number of consoles. Enjoy the freedom of options that GNU/Linux and its developers provide.
About Author:
I am a Computer Science student at CSU Chico. I started exploring GNU/Linux some years back with the RedHat 5 distribution and have since tried numerous distributions, learned a lot, and have had much of fun. I am currently running Gentoo and Arch Linux and I am very happy with both. My web site can be found at http://hypexr.homelinux.org.
A modern OS needs a GUI!
IMHO, the best file manager ever.
“A modern OS needs a GUI!”
So a modern OS also has to be less efficient at times ? Using key strokes to get work done is faster than pointing and clicking.
Just because the graphics of the graphical user interface are really simplistic and are rendered by ncurses or something similar rather than QT or GTK+ doesn’t mean it isn’t a graphical user interface.
When using my favorite window manager, Fluxbox, I get a lot done in console windows: moving files around, programming, editing documents, etc …
Sounds to me like he is using a broken GUI/window manager.
He even gave up on xterm ๐
A modern OS needs a GUI!
Not necessarily. For instance, a server does not need a GUI at all. Blind people don’t need a GUI either. CLI is fast, much faster to use than most of GUI apps. It might not look intuitive for newbies, but it really proves itself to be efficient for advanced users.
IMHO, GUI should stay an optional part of any OS, modern or not.
Ricardo pelase define a GUI! A GUI is a graphical user interface and in my hummble opinion a console can have that too. But on top of that we use linux/bsd at work without the GUI you mean, eg: console only! Does this mean we don’t use a modern OS? A OS should be judged on capabilities and not if it has a nice graphic shell.
The right tools for the right job, if thats either console or GUI it should not matter
“”So a modern OS also has to be less efficient at times ? Using key strokes to get work done is faster than pointing and clicking. “”
Try drawing Mickey Mouse with the keyboard. :>
Gosh, I really don’t need a computer, but it’s very handy…
Same with the gui, for most of us it’s an incerdibly powerfull tool, just like any other program on the computer… I really like KDE, it doesn’t bog down the computer, it helps me to do what I want to do.
And, yes I do run Linux, and really need the command line very little. It can be done…
MarkP
I’ll need a CLI equivalent to the Gimp before i stop using gnome.
Personally, I get more work done without the mouse.
But do I need a GUI to play my mp3’s? Do I need a GUI for text editing? NO.
I want a one-touch, no mouse interface. Mplayer is a good example of that. Q -> Quit, right -> forward, spacebar -> play/pause, f -> toggle fullscreen, etc. Makes sense. Very powerful and after the initial learning curve, it’s enjoyable to use. The time delay between the thought “I want to pause” to actually pausing is _a lot_ shorter when you touch a key as opposed to looking for the mouse and the menu/toolbar.
When I install my system (FreeBSD), I do install X. However, I only install the minimum in GUI/X related ports. And the more keyboard shortcuts there are, the more I enjoy GUI applications.
Sure, Firebird, GIMP, etc… these are GUI applications meants to be GUI. But this is better explaining in “The Art of UNIX Programming”…
There is definitly a cool factor when using the command line.
The title of this comment says it all.
Excelent indeed, it was my opinion all the time.
I don’t really see how they could pull off doing a CLI web browser. In Firebird, I can kill pretty much any add via a right mouse click, and I’ve got the bookmark toolbar going on, where I can store hundreds of bookmarks and edit any of them with a right click. Maybe this could be pulled off in a CLI, but it sure would seem awkward. Also, how would rich text/HTML rendering work in email programs, and is drag ‘n drop even possible?
Also, something I’ve always wondered but never asked, Emacs vs. vi/vim .. which is better ? If I understand correctly, these two apps are the Gods of all text editors.
> Also, something I’ve always wondered but never asked, Emacs vs. vi/vim .. which is better ?
Well, I personally prefer vim; I just can’t remember emacs commands.
BTW, excellent article.
There are plenty of things, that are much faster with the console. My skripts, that automate tasks and that are adopted to my needs are much faster executed with ./skript. A GUI can almost compete with me, when those skripts are on the desktop as an icon. Those applications, that don’t fit an my screen anymore, will have to be executed by klicking this and that and there and anywhere – given that you know, where you will find the icon.
I user both, a slim GUI (XFCE4 on RH9) and the xterm. I use to work with the console on my GUI. Browser, image viewer and other tools need a GUI.
As has been said here before, many of the apps discussed here are really graphical interface apps, even if they use ASCIII characters to create menus, offer choices, etc. What is really being discussed here is a bitmapped screen versus a text screen.
I kind of straddle the line with this. In the DOS/Win world, I found myself continuing to use Wordperfect for DOS long after its obsolescence because it was faster on my 386 and 486 machines. I still find myself using the CLI interface in NT (and UNIX for that matter) for commands like searching and deleting files, etc. On the other hand, using a text based web browser just seems like a pointless novelty.
Just my $.02
“Using the console exclusively also gives you the advantage of using less system resources, which can be important on a slower machine and it enables you confuse and/or impress your Windows using friends when they catch a glimpse of your monitor.”
Wrong, console applications for Windows are widely available. I use native console Vim http://vim.sourceforge.net/download.php#pc , wget http://xoomer.virgilio.it/hherold/ , netcat http://www.atstake.com/research/tools/network_utilities/ , and curl http://curl.haxx.se/download.html#Win32 . I also use many of the emulated Unix programs available through Cygwin, like mutt . Linux users want to think that Windows is entirely GUI, but just like Mac OS X, a shell is always waiting for the advanced users.
Try drawing Mickey Mouse with the keyboard
Try drawing him with a mouse…
“I don’t really see how they could pull off doing a CLI web browser. In Firebird, I can kill pretty much any add via a right mouse click, and I’ve got the bookmark toolbar going on, where I can store hundreds of bookmarks and edit any of them with a right click. Maybe this could be pulled off in a CLI, but it sure would seem awkward.”
w3m, a console web browser, has a context menu similar to a GUI right click.
…vim, mutt, slrn, ncftp, pal, abook, snownews, gammu, epic… hmm, or maybe gcc, make, egrep, sed, awk… oh, wait, I’ll see ls, cd, rm, mkdir, touch too ๐
Actually, a commandline web browser can be incredibly useful. When you’re administering a headless server over SSH and need to download a file whose URL you don’t remember or that comes from a CGI, it’s really really useful to be able to fire up Links and just download rather than go through the hassle of downloading it on your local computer and then secure copying to the server. Can’t tell you how many time’s I’ve used that.
The GUI on linux is overtaking its orginal CLI roots. That is because of several reasons. First most people don’t like the CLI, this includes technical users, not just joe users, so there is more focus on the GUI. KDE, Gnome, XFCE and others have all made the command line almost obsolete.
But they also provide, for those who MUST use a command line for what ever reason, a more powerful one then the plain console. Konsole, the one that comes with KDE is the one I use. But I hardly use it anymore, I have found GUI program that meet my needs, and do it faster and more effecient than the command line ones.
One of the many reasons people say people still use the CLI is for servers. I personally disagree. Last week I was experimenting with Mandrake Cooker and I wanted to set up a test web server. I soon found out that Mandrake could set up Apache with click and point. Not only that, but it came with a Wysiwyg webpage creator called OpenOffice Web. All I had to do was save the files In the /var/www/html folder and they were working! No command line at all, and yet fully functional and secure, and no editing HTML ever
These “cli” apps that were mentioned looked like dos programs. I thought dos was dead already, and now you want to ressurect it? Lets see, a console based ICQ client, a file search tool, a network monitor, a web browser, a file manager and a music player. All these applications you have shown have mature, easy to use GUI versions, which support drag and drop, complex operations, no need to remember complex command names and sequences, no need to type, just point and click. The Keyboard should ONLY be used for inputting text, not controlling programs
Unless you have an old machine (386) that can only handle text mode then there is no point. 80×25 text mode is not even used by default in Linux anymore, it is graphical display, that emulates the CLI. That is why you can view movies from it.
The realitys are that command lines are going out of fashion, and so are their apps. For example Emacs has recently lost its place as the 2nd most popular text editor to KATE, the KDE advanced text editor. It has been vastly improved in KDE 3.2 betas, and may even challenge the domoninance of VI/M.
I have listened to the arguments of the cli advocates, but in the end, GUIs are winning. If CLI was so powerful and easy to use, then KDE, Gnome and the rest woudn’t exist and we would ALL be on 80×25 consoles. This is the year 2004, four years into the comandlineless millemium, lets keep it that way! I don’t want to learn complex commands, and I want to be able use my mouse arrow to do all the work for me.
What about tabbed browising in the CLI .. is that possible ?
Elinks is a pretty good text web browser which I use all the time. It renders frames and tables really well (switch on box drawing), quite usable in 1024×768 framebuffer mode.
“For instance, a server does not need a GUI at all.”
What about an XServe?
“So a modern OS also has to be less efficient at times ? Using key strokes to get work done is faster than pointing and clicking.”
I keep hearing from some ppl how GUI are slow and un efficient. I realize efficient means how much work you get dun within a time and realize console giving to the right user can get SOME types of work dun faster I really dun see why a lot of console users makes a huge deal out of it. Let’s face it 99% or so users that uses a computer uses it because it has a gui. I can use a console but I will never use it in the place of a gui. My gui is not slow, infact it’s dang fast, I get what I want dun in a very short amount of time. All of this on an avg computer you could say. What really get’s me thoe is some of my friends who goes out every 2 or so years and byes the most powerful x86 class computer there is, load it with windows or linux, turn off all the fancy gfx, play mostly text base mud games, listen to some music, use 50% of there time on a console, and in the end they complain about it not be as fast as they like. I really don’t get that but I see this same issue in a lot of ppl I meet on-line.
ced,
“. Blind people don’t need a GUI either.”
excuse me? yes they do, or rather it helps a lot, by having a gui that gives them feed back it helds a good bit. You can have a GUI act more like a 3D texture. And they can work with that.
Just because your blind doesn’t mean you don’t multi task. Frankly I would say a CLI would be very difficult for a blind person and i don’t know how much is there for tools for them.
Um, you’re dreaming if you think Kate is more popular than Emacs. Vim rules, of course, but Emacs is *very* widely used on dozens of platforms. Kate? Troll on.
Obviously you are not into shell scripting.
I really like ettercap!
http://ettercap.sourceforge.net/
I run it on Linux but had big trouble to compile it on Panther. Always the same PKG_CONFIG error and no chance to solve it (even with fink and so on ….).
๐
Try writing an essay with a mouse.
:^)
I thought it was a pretty good article but a little short on listing useful programs. It did bring to my attention a couple of new CLI programs I wasn’t aware of, but I’d be interested in a follow up article with a lot more programs. There was no mention of an e-mail client (such as pine), an irc client (such as BitchX), an ftp client (such as ncftp), and on and on.
I prefer to use X but I still appreciate the usability of *good* CLI programs.
My workstation is a Mac running Panther. A really great GUI.
My firewall is a mini-itx computer with no GUI. I use ssh and vi to edit files, and other commands to check space, watch traffic, and so on. A GUI would be a waste on that machine, because it needs all of its resources to route and log packets in and out of my network.
I also have a hushPC mini-itx as my main Linux system. It has a lot of Xwindows programs on it, but I am running no X server on the machine itself. From the Mac, I use ssh which automatically redirects the display from the hushPC to the X server on the Mac. Since I have a very small network at 100Mbits, I can even play DVD movies on the Linux PC and watch them on my Mac screen with no frame loss.
Both my firewall and Linux PC have relatively small amounts of RAM for today’s modern GUI installations, but I can do a whole lot with both of them because they don’t waste resources drawing windows I will never see.
On my Mac I have Virtual PC running with a LInux installation, which I use to build and test linux kernel configurations. Again, no GUI is needed to build, install, and boot the Linux kernel, so by using cli only I reduce the resources that Virtual PC might eat up on my Mac if I was running KDE. I even once set up a Virtual PC “virtual vpn” with two openbsd (no gui) installations as IPsec routers, and one Linux installation (no gui), talking to my Mac over IPsec. It was a bit slow, but it would have been much worse if I thought I needed to run GUIs on the 3 Virtual PC instances.
Mutt can display HTML email fine by piping it through “lynx -stdin”, which like any good Unix program can act as a filter.
mpg321 and ogg123, because I don’t want a ncurses GUI just to listen mp3.
micq, because I don’t want a ncurses GUI just to talk in ICQ.
And for some ncurses GUIs, mutt, because it is so much better than pine. And w3m is cooler than links, too.
For those into shell scripting, learning m4 (to autogenerate configuration files) and expect (to automate interation with CLI tools) will make wonders.
nethack, so that you can lose time in CLI too.
The only thing I believe is missing from console is a good, multilingual, Unicode internationalized console. I’d switch from Linux to some other Unix if they did it. In any Gnome app I can switch from Latin-1 input to Japanese input at runtime…
“”excuse me? yes they do, or rather it helps a lot, by having a gui that gives them feed back it helds a good bit. You can have a GUI act more like a 3D texture. And they can work with that. “”
That’s a fairly stunning idea. If you turn the interface into something 3d (Like you said), then combine that with a force feedback mouse and some text->speech it could be very liberating. Don’t know much about blindness, but I’d guess that blind folks have a better ability for mental maps than seeing folks.
Seems like an obvious idea, wonder if anyone has already done it. Probably not, doubt there are enough blind users to get a decent profit out of it. Pity.
In a utopia environment, there wouldn’t be any artificial barrier between the graphic user interfaces, the command line interfaces and other interfaces.
The problem with graphic user interfaces is that they are significantly inefficient, albeit convenient; abused with needless and redundant icons and fanfare; they consume a disturbing amount of system resources for doing relatively nothing (the exception here is video games);and more often than not, little thought is put into their design.
Unfortunately, humans are visual. Science tells us that our vision is deceitful. Users judge graphic user interfaces not by efficiency and functionality, but by pretty icons, animation, window effects, colors, glitter and trivial superficialities. (Mac OS X, anyone?)
So how do I achieve efficiency and functionality? Well, you are efficient when you are doing more with less. Unfortunately, graphic user interface designers do exactly the opposite. They throw at you are multitude of distractions that you don’t need, clutter your interfaces with a whole bunch of icons and colors and leave you in a state of utter chaos and needless complexity. Oh, did I mention all those take up resources too?
How about functionality? When you launch an application, what task do you do with it? Take a look at your graphic user interfaces. Are the tasks placed conveniently and appropriately were you can use them? Are their a bunch of icons, tool bars, menus, etc on your interface that you don’t use and will never use? Can you replace all that with tools that let you get your job done? How often do you have click through menus searching for a way to execute a particular task?
You are functional when you do work effectively and efficiently instead of doing work by trial and error. A functional worker is the person who uses the โCtrl โ Sโ command to save his or her work, instead a searching through a spaghetti or meaningless icons, tool bars and menus. A functional worker issues commands to the application and not the other way round.
Modern graphic user interface designers do not encourage the efficient and functional user. Modern GUI designers want half your screen to be littered with icons, menus and windows. They want you to upgrade your system every year, because version2-X of your favorite application now renders icons and anti aliased texts in 3D. How cool!
That’s why the command line interface might always be more efficient and functional. In a CLI environment the user issues command and not the other way round. There needs to be a change in the manner we design and develop our applications.
Using an application should be an extension of your thought process. Interfaces should be designed intelligently and differently for specific tasks, and perhaps even, for specific users. Interfaces should allow users express their intentions, succinctly and accurately and of course with proper feedbacks animated or otherwise. Any sort of distraction, needless features, complexity and unnecessary innovations should be avoided.
I’ve always been interested in research methods that make graphic user interfaces less of a system resource nuisance. I think these should be major factors in judging the next generation of interfaces. But we need to begin by encouraging knowledge users. Unfortunately, the industry seems to be doing exactly the opposite.
theres nothing like using aalib for all your image viewing needs. if cli gives a cool factor, then aalib doubles it. its like the matrix, only not as lame.
GUIs are wonderful. Firstly, they provide a boatload of real estate compared to console displays. They provide a medium of communicating at a higher bandwidth to the user (e.g. icons that fall in the “a picture is worth a thousand words” category, charts, etc).
Where GUIs fail is not so much in their display, rather in how the user interacts with the data upon it.
For casual interfacing of untrained users (kiosks, web stores, etc), point and clicking your way through occasional transactions works very well.
But start making those transactions in a higher volume, and more repetitive, and the user is going to be much more productive and efficient using a keyboard centric interface rather than a mouse centric one.
As we’ve discovered running repetitive tasks on a keyboard is very easy. Muscle memory etc make the keyboard almost unconsciously navigable.
Mouse based interfaces, of course, require, for lack of a better word, “aiming” of the mouse to perform your task. That’s a much more difficult task to do in a repetitative fashion. Manipulating the mouse if a much more conscious task that brings the interface to the fore front of the brain compared to a keyboard. Once the interface is on the persons mind, their task is not.
Simple example, while typing this sentence, I’m focusing on word selection, punctuation, spelling, structure etc. What I’m not focused on is typing, manipulating my fingers to find the keys. As soon as I grab the mouse, however, I’m now in “interface” mode.
Grab mouse, find cursor, aim it at “Submit Comment” and click. Simply put, everytime you overshoot something with your mouse, you’re “wasting time”.
Certainly some interfaces are simply not practical without a mouse. Hard to do Photoshop without one.
But for many back office applications, the mouse is pretty much completely unnecessary, and that’s where folks really suffer.
Of course, most modern applications simply are not keyboard navigable, and that’s what give GUI’s a bad name.
People running Emacs/vi and xterms have little complaint about GUIs, particularly if they have a keyboard based window navigation system (e.g. alt-tab), even though they’re “surrounded” by one.
I am a GUI person with command line culture and there are things that I always do command line and things I prefer to do gui way.
The use of the term GUI in this article will refer to an X server with the possible addition of a window manager and/or desktop environment. Although I have seen applications with ncurses interface referred to as having a GUI, I will refer to their interface in this article as the console or User Interface (UI).
I realise what you’re trying to do here, but really, your definition is fundamentally wrong from the get-go. A curses based console app, or even something that presents a simple menu of choices, *is* a GUI. The value of GUIs isn’t in the pretty pictures and whizzy effects, it’s in the “prompting” and operational feedback the user gets that doesn’t exist in CLIs. With a CLI, you need to know what you’re doing and how to do it before you start. With a GUI, the interface itself helps you to figure it out, if you don’t know. A GUI helps the user explore, learn and infer, a CLI doesn’t.
Certainly, for many things, once the user knows what to do a CLI (or something conceptually identical like keyboard shortcuts) allow the user to operate more efficiently, but they don’t provide the same level of operational feedback as GUIs and, until we can get some pretty advanced natural-language technology, aren’t as intuitive.
Even more advanced things are posible with the console:
Creating PDF’s with LaTeX/DocBook and fbgs
Editing StarOffice documents. (use unzip!)
Use pine or mutt to read your (gpg signed) mail.
The console can be very productive:
use Makefile’s.
tab completion
“rm {X,x}term”
“ls {N,n}ightwish*.{mpg,mpeg} | nl | tac”
The console can be fun:
Watch TV with fbtv or aatv
It reminds me of old sun hardware: the difference between the sparcserver and the sparcstation, is that the server doesn’t have a framebuffer.
To all who moan that a GUI is always better, I’ll say you don’t know what efficient mean.
When you have something to do on 500 image (= batch processing), or rename 300 files with a specific pattern, you’ll see how limitating a GUI can be.
The best way being the “middle way”, as in boudism, using which is the best for each operation.
That’s why I often hit ALT-T (TerminalHere addon) to open a Terminal from a Tracker window and type “t .” in Terminal (alias t=/system/Tracker in ~/.profile) to open a Tracker window at the working directory from the Terminal in BeOS.
Now, please everyone get the difference between CLI and TUI.
CLI means “command line interface”, that is, you type a line, and you get an action, that’s all.
TUI means Text mode User Interface (I saw CUI also), which includes all those ncurses-based progs.
each of them having their use.
Even BeOS which is a very GUI oriented OS, TUI can be very nice:
http://clapcrest.free.fr/revol/beos/shot_xemacs_beos_002.png
> I’ll need a CLI equivalent to the Gimp before i stop using gnome.
ImageMagick’s convert program is very powerful…
Slackware has something called netwatch which is quite useful as network monitor.
I’d like to suggest also TWIN, which is a Text mode Window Manager:
http://freshmeat.net/projects/twin/
What about tabbed browising in the CLI .. is that possible ?
Elinks is your answer
http://elinks.or.cz
You are functional when you do work effectively and efficiently instead of doing work by trial and error. A functional worker is the person who uses the โCtrl โ Sโ command to save his or her work, instead a searching through a spaghetti or meaningless icons, tool bars and menus.
Normally in a GUI program, if you want to save a document, you can either click on the little disk icon (usually right in front of your face), or click File->Save. Or, of course, you can press CTRL-S. The beauty of this approach is that in any decent, coherent GUI systems, the menus, toolbars, and keystrokes are largely the same. So, once you’ve learned them in one program, you pretty much have learned it in all programs. Now, contrast this with the CLI, where usually every program kind of does it’s own thing. I have 40+ apps installed … I’d go nuts if I had to remember (or constantly look up) commands, command-line switches, or keystrokes for every program I used.
Are their a bunch of icons, tool bars, menus, etc on your interface that you don’t use and will never use? Can you replace all that with tools that let you get your job done?
Well, yeah. Any GUI app worth its wait will let you customize the interface to look exactly how you want.
I’ll say you don’t know what efficient mean. When you have something to do on 500 image (= batch processing)
Jasc’s Image Robot
[i]or rename 300 files with a specific pattern</>
There’s probably about 30 apps that do this – check download.com.
Now, don’t get me wrong – I am not going to shy away from CLI when doing things like ping or traceroute, but I really don’t use it that often.
> Also, how would rich text/HTML rendering work in email programs, and is drag ‘n drop even possible?
The proper way to render rich text/HTML email is via the “d” key… DELETE it immediately.
a story about two router vendors. First – Cisco. Second – Wellfleet which became Bay Networks, which got bought by Nortel. I’ve used both.
At some point cisco routers only had CLI to manage them. Rather clumsy, I would say. WellFleet on the other hand had nice ncurses-based management interface, it was a breeze to navigate, enable/disable different features, just a pleasure.
At some point Wellfleet (Bay Networks) decided to ditch that management interface and incorporate the full blown GUI-based one. That was a complete disaster. The interface was slow, buggy, no longer worked with VT-100 compatible, you had to have either MS/WIN or Unix/X, of course it didn’t work if you had to access the router via dial-in connection (they didn’t support PPP if I remember correctly). that was exactly the time of ‘Internet explosion’ and because of complete impracticality of managing the router via GUI (especially when network is down, or you are debugging the problem), they lost to Cisco – even if their hardware was way better. Lost and never recovered. I’ve worked with the old wellfleet, newer baynetwork routers, and also cisco, so everything I’m talking about is a first hand experience. every shop I’ve worked ended up replacing wellfleet/baynetwork routers with cisco.
“theres nothing like using aalib for all your image viewing needs. if cli gives a cool factor, then aalib doubles it. its like the matrix, only not as lame.”
Cool! I’ve been looking for a program to do this in Linux.
you can also play doom / quake / sdlgames on console (nice on framebuffer, let’s say 1280×1024, there are lots of characters on the screen, aren’t?) with aalib (sdl aalib output) or watch movies with aalib (mplayer aalib output) and so on.
if you like both text and the matrix, install cmatrix.
if you would like to see a nice demonstration of aalib, try out bb.
Firstly, looking at those screenshots, I would say that it’s worth using fbdev and getting more than 80×25 chars on the screen. It makes using the console much nicer.
Secondly, for me the gui/console division comes from the method used for the display. If you are just using ascii chars, it’s console. If there are bitmaps, it’s a gui. ncurses therefore is a console app, even though you can have windows and pull down menus in it.
Thirdly, and somewhat off topic… For some reason I like browsing the web with lynx. If I read the bbc news site with a graphical browser, I skim the text for information that catches my eye, look at the pictures and then click- move on.
If I use lynx, then I read the news without all the distractions, and understand and retain more of it afterwards. It’s strange, but sometimes filtering out all unnesessary information (one bombed out street in iraq looks pretty much like any other) makes me concentrate more on the facts.
Ignoring the CLI vs. GUI discussion for a second, I’m surprised by a few of the author’s software choices and his offhand remark about GNU screen.
GNU screen is/should be the most essential piece of software on your machine if you’re working with xterms (or aterms/rxvts, given that xterm is bloated and outdated) or with virtual consoles. It’s not just a means of using multiple terminals in one virtual terminal — it offers utilities like cut&pasting of output, audio and visual alerts on job completion, resizing and tiling applications, powerful scripting, message lines, and much more. If you get an instant message and you’re working in a full-screen vi session or if your compile job finishes while you’re browsing the web, screen will know. Even better, you can attach and detach sessions so your programs will keep going even after you’ve logged out of the machine. If you forget to log out at work, that’s not a problem. When you get home, just run “screen -R” and your session will be transferred over to home, with all windows perfectly intact. You can even run sessions collaboratively with others. Now that’s what a remote desktop ought to be.
I’m also curious as to why the author recommends CenterICQ — with its tremendous bloat (both in terms of source/compiled size and footprint) and propensity for freezing — over naim ( http://naim.n.ml.org/ ). Naim is also a lot easier to set up and use as well, being free of weird command sequences. Everything is done through well-documented IRC-like commands (tab completion is supported, of course) and the tab key to switch sessions.
While Links-2 may be the most featureful of console webbrowsers (though I think Links-Hacked still holds that title), it’s a terrible CPU and memory hog. It routinely eats 50+ MB of RAM, the vast majority of it resident. Rendering routinely brings my PII-class machine to its knees.
Likewise, SVGAlib blows. It has horrible support, requires root privs, and usually looks pretty bad. GUI-style applications running in it feel weird and its unsafe to switch consoles while SVGAlib is running. A far better solution is simply to run X with a lightweight window manager that allows full-screen applications (a la IceWM).Start up a full-screen rxvt, start up GNU screen, and you’re set. Not only do you get better refresh rates, better fonts, and a larger (character by character) work area, you suffer none of that eyestrain-causing virtual console switching. Plus, you can run Gimp or whatnot when you need to without difficulty.
I have three workspaces set up in IceWM — the first hosts my fullscreen rxvt (with screen giving me five shells (more are just a CTRL-A,n away) running a few general purpose bash command prompts, naim, and madplay (which seems to give me the best tradeoff between sound quality, stability, and resource usage)), the second has a full-screen/full-screen Opera (for Opera is still the best browser I’ve seen — it’s much lighter and faster than Konq, Firebird, Links, and even Dillo (CPU-wise, at least) while being much more featureful and standards-compliant than them as well), and the last is where I can launch Gimp, Xpdf, xzgv, mplayer or whatever other graphical application I might require.
It’s the best of both worlds, and my CPU and memory usage is lower than when I was console only (blame mutt and Links).
Frankly I would say a CLI would be very difficult for a blind person and i don’t know how much is there for tools for them.
Braille terminals. That’s what most blind person use, although the “GUI” equivalent (with force-feedback mouse) are becoming more common.
Anonymous (IP: —.cable.ubr05.azte.blueyonder.co.uk)
Hey, if some people like to use the CLI, just let them! Different (key)strokes for different folks…there are still some actions that are faster with the CLI than the GUI, like restarting services, copying and moving lots of files around, and installing software from URPMI repositories. Of course, there are GUI tools for these, and I sometimes use one, sometimes the other.
I also have a mini-command line in my kicker panel to launche programs. It’s often faster to click it and write the name of the program than to go through the menus, especially since it features a drop-down menus of the most recent commands.
As I said, if it’s not for you don’t use it, but don’t call for its eradication. People still use it (accessing servers and connecting through SSH are also common uses).
Seems like an obvious idea, wonder if anyone has already done it.
Oh, yes, there have been force-feedback UIs for a few years now.
Here’s a link for a company that offers these kind of products:
http://www.virtouch.com/
I was very surprised to see the way “screen” was mentioned, almost like it was an after-thought. Screen is by far (imho) one of the most powerful console tools around. More time should have been spent talking of it’s features. I have had *excellent* results using screen, it has performed well on every platform I have used it on. Not everyone can physically sit at the box they work/play on, that is where screen comes in.
When it comes to BitchX and CenterICQ, well, I would have to say if your looking for the best IRC client, look too BitchX, it’s packed with far more irc-goodness. For the other chat networks, the obvious choice is CenterICQ.
Midnight Commander makes file/directory management a snap. It too is feature rich. One added feature that I like (and regularly use) is the FTP client, very transparent and reliable.
I am not really into music much, but as far as MP3 tools, I am very happy with a Perl project/app called “CDDOIT”. It has proven to be a wonderful console based MP3 <-> Audio CD conversion frontend.
Mplayer, where do I start. Well, it’s is a fantastic audio/video player. It has played (very well) every video I have wanted to watch via computer. I also like that it performs well on non-x86 platforms, I use it exclusively under Solaris/SPARC.
I spend about half of my computing time within a screen/shell session, and I love it. I do like GUIs, and Fluxbox is my standard-issue wm.
There is another article that talks about this subject more at:
http://freshmeat.net/articles/view/581/
-iGZo
I use a lot of console apps for my day-to-day stuff too. centericq, mutt, irssi, etc. I find it handy to keep them all in a screen session, then I can be anywhere on the net and still be connected to my vital apps.
The trick is in screen’s detach/resume capability. It can detach itself from the controlling terminal and continue running in memory. Then you can log out, log back in from somewhere else, and resume your screen session (screen -dr) from your new location, apps intact.
http://www.gnu.org/software/screen/screen.html
Normally in a GUI program, if you want to save a document, you can either click on the little disk icon (usually right in front of your face), or click File->Save. Or, of course, you can press CTRL-S. The beauty of this approach is that in any decent, coherent GUI systems, the menus, toolbars, and keystrokes are largely the same. So, once you’ve learned them in one program, you pretty much have learned it in all programs. Now, contrast this with the CLI, where usually every program kind of does it’s own thing. I have 40+ apps installed … I’d go nuts if I had to remember (or constantly look up) commands, command-line switches, or keystrokes for every program I used.
You can’t be serious. GUI’s are horrible for consistency. Try using different web browsers. The preferences menu is sometimes called ‘options’ and is often under different headings in different browsers. Toolbars are also vastly different in different programs, particulary graphics programs. Contrast this with console apps, which share many of the same switches and keystrokes between programs. Granted not all are the same but, for example, a -v switch for verbose output is much more consistent among console apps than any icon or menu in a GUI app.
I run linux on a few headless machines. Naturally I prefer using CLI on those situations. Remote X is not enjoyable to run, especailly on slow, long haul links.
However nowadays even many linux programs trends to be GUI oriented. CLI counterpart trends to either sucks or non-existent at all.
Say you can try look for a linux bittorrent client. 9/10 of them are X based. The scares CLI clients mostly sux(Unstable, and/or writtened in interpert language and slow).
I don’t really see the trend to make tools GUI centric in Linux is a good thing.
Psst. I’ll let you in on a secret. You know those GUI Bittorrent clients you mentioned? They’re all just front-ends for the CLI-oriented python bittorrent core. Quick, choose a better example!
http://www.pitman.co.za/projects/charva/ – Charva, Convert any Swing app to a console app.
http://webpages.mr.net/bobz/ttyquake/ ttyQuake. It has to be posted
and while GUI less, the NetPBM [ http://netpbm.sourceforge.net ] is a very common set of apps used by me.
Pretty good article. CenterICQ is actually my primary IM client. Once it’s LiveJournal support improves it’ll probably take over in that department as well. I tend to like using command line apps for certain things. If they’re well designed they just seem more efficient and “together” to me. Aside from CenterICQ I also depend on irssi for irc and wget for my downloads. And although some may laugh, pico for my text editing.
” Now, contrast this with the CLI, where usually every program kind of does it’s own thing. ”
You do realize that’s not an inherent property of a CLI? Just as consistency isn’t an inherent property in GUIs. Consistency is something that arises in the design phase and carried through.
I used nothing but the console for 2 months. I know a few improvements and tasks not included here. see http://digitaljunkies.net/apps/nix.html
Everything covered by the POSIX standards. And everything in the build chain ([gi]?make, awk, sed, patch, gcc, ld, as, nasm, gasm, flex, bison, et al.). And at least one shell.
w3m, links, lynx, etc will never beat nc|html-filter.sh|less. At least from a resource utilisation point anyway. ๐
You have a screw and a nail, a hammer and a screwdriver. I don’t need to tell you what fits with what do I.
The same goes for the CLI and GUI. There are some tasks which will always be faster on a CLI, there are others which will always be faster on a GUI. The examples given above are pretty good, a GUI is the logical interface for drawing, shell scripting makes more sense in a CLI.
The difference is with a CLI you need to know what you are doing before you start, there is a much steeper learning curve simply becasue you have to know the commands.
With a well designed GUI you can jump into the system and use it without knowledge. Try doing that with a CLI you don’t know.
I like the approach BeOS and OS X use (and the Amiga > 10 years earlier), they are GUI based systems but a CLI is present and is another tool to be used.
Computers may be complex but can be and should be easy to use, people who say otherwise (and there are many) do not kow how to design in useability.
I think CLIs could probably be improved quite considerably, Unix CLIs in particular require considerable learning for a user to become proficient and I think a lot of that is unnecessary.
IBM has had better CLIs for years if not decades on systems which predate Unix. The commands are based on a simple set of rules which when learned allow you to access thousands of commands, you don’t have to know the commands becasue if you know the rules you can quickly figure out the command you need.
There is nothing wrong with GUI except the overuse of the mouse. Think about it, most mouse actions are seleting a menu item or klicking on buttons. That can be done much faster with the keyboard. Remember you have 10 fingers and 102 keys (buttons). Those buttons are here, right in front of you and always available. And the best: you can haptically feel the buttons ๐
Sure, there are apps where you need a mouse to be productive (photoshop). But even then shortkeys are very usefull, especially for poweruser.
Don’t use svgalib for console MPlayer, there are much better alternatives: if your graphics card supports it, use -vo cvidix, which uses hardware scaling, otherwise there’s vesa output support, which should work on any remotely modern card. Both of these are available without requiring an external lib.
I use two text-based mail clients here under OS/2 (Pine and Yarn), and it’s quite easy to launch different programs as needed to view various rich text (or graphical, or whatever) documents based on the MIME type(s) present in the e-mail.
If someone sends me an HTML message, I flip it to Links for viewing. Graphics files generally go to zgv under Linux or an appropriate DOS viewer (e.g., QuickView) under OS/2, sound files to Z! under OS/2, etc.
It’s nice to see that others have discovered that text-mode programs can be useful, and many of them have usability features like pull-down menus which makes them relatively easy to learn as well.
This posting is being made via Links 0.99, BTW. The OSNews web site renders VERY well in this browser…
Actually, there is kind of a middle ground solution… Ratpoison. I use ratpoison w/ GNU screen as my UI. GNU screen has all my CLI/terminal applications running. It looks exactly the same as console and acts exactly the same — with a very very small footprint. It is keyboard driven. The only GUI application I use is a web browser (Mozilla-Firebird) simply because I like reading books in html format in it better than console browsing — although postrcript is my favorite and I hate pdf — but I digress. IMHO opinion ratpoison is the best middleground unless you have a very old computer witht not alot of RAM. Check out this article from freshmeat to see what I mean :
The Anti-Desktop
http://freshmeat.net/articles/view/581/
Clearly this is the most superior option to any reasonable person.
“There is nothing wrong with GUI except the overuse of the mouse. ” — By Anonymous (IP: 146.140.220.—)
Exactly ! That is why ratpoison (kill TEH RAT ! i.e Mouse) which is a keyboard driven X multiplexer is superior to the pure console solution this guy is sugesting for hacker/programmer workstations. I agree X is unecessary for servers but if the machine at hand is not a set and forget and check on every once in a while server — but a workstation: Ratpoison is the the answer.
Discretion: I am not a ratpoison developer or friends with any of them … no reason to gratuitously plug it for personal gain. I am just a sastisfied user of it on my BSD systems .. mostely OpenBSD at this time.
But in windows you don’t gain anything by using console only…you can’t “turn off” the gui system…it’s always on because it loads with the kernel. You will save some resources, but not enough to let you get away with a full generation-older [or more] hardware. Which is what you gain using *nix with only CLI.
Before anybody starts talking about modern OS and interface, they should be forced to check out
“The Humane Interface” by Jef Raskin (Canon Cat and Mac creator !!)
Website is : http:www.jefraskin.com
Have fun.
> The problem with graphic user interfaces is that they are significantly inefficient, albeit convenient;
That remains to be seen.
> abused with needless and redundant icons and fanfare;
Bad design is bad design, CLI or GUI.
> they consume a disturbing amount of system resources for doing relatively nothing (the exception here is video games);and more often than not, little thought is put into their design.
True, but modern machines in most cases have the resources to spare.
> Unfortunately, humans are visual. Science tells us that our vision is deceitful. Users judge graphic user interfaces not by efficiency and functionality, but by pretty icons, animation, window effects, colors, glitter and trivial superficialities. (Mac OS X, anyone?)
True.
> So how do I achieve efficiency and functionality? Well, you are efficient when you are doing more with less. Unfortunately, graphic user interface designers do exactly the opposite. They throw at you are multitude of distractions that you don’t need, clutter your interfaces with a whole bunch of icons and colors and leave you in a state of utter chaos and needless complexity. Oh, did I mention all those take up resources too?
You havent said anything about efficiency. Yes there are buttons and icons. How is that inefficient? If you know what you are doing, you can easily get to what you need. Colors and icons wont distract you.
> How about functionality? When you launch an application, what task do you do with it? Take a look at your graphic user interfaces. Are the tasks placed conveniently and appropriately were you can use them?
Usually, yes they are. If not, it is bad design. What about a CLI. Are tasks placed conveniently and appropriately. If you know the program then yes, but if you dont know, then no, since oyu gotta figure it out and the CLI provides little help. With a GUI, if you know what you are doing, performing the task is just as easy.
> Are their a bunch of icons, tool bars, menus, etc on your interface that you don’t use and will never use? Can you replace all that with tools that let you get your job done? How often do you have click through menus searching for a way to execute a particular task?
If you are searching the menus, then you do not know completely how to usae the program. So searching the menus will eventually solve your problem. Now, how about a CLI, if you don’t know how to use the program, you need to search the help or look it up on the internet. Not extremly functional.
> You are functional when you do work effectively and efficiently instead of doing work by trial and error. A functional worker is the person who uses the โCtrl โ Sโ command to save his or her work, instead a searching through a spaghetti or meaningless icons, tool bars and menus. A functional worker issues commands to the application and not the other way round.
Umm… Ctrl-S saves for GUI too.
> Modern graphic user interface designers do not encourage the efficient and functional user. Modern GUI designers want half your screen to be littered with icons, menus and windows. They want you to upgrade your system every year, because version2-X of your favorite application now renders icons and anti aliased texts in 3D. How cool!
Now you are just making stuff up.
> That’s why the command line interface might always be more efficient and functional. In a CLI environment the user issues command and not the other way round. There needs to be a change in the manner we design and develop our applications.
User issues commands in GUI too. The difference is if you do not know the command, then the GUI gives you other options.
> Using an application should be an extension of your thought process. Interfaces should be designed intelligently and differently for specific tasks, and perhaps even, for specific users. Interfaces should allow users express their intentions, succinctly and accurately and of course with proper feedbacks animated or otherwise. Any sort of distraction, needless features, complexity and unnecessary innovations should be avoided.
Same can be said about CLIs.
The CLI is a powerful tool because of unix pipes and input/output redirection. Using the CLI for captive user interfaces like browsers or text editors is not very practical. It’s like using pure C for anything that doesn’t require speed.
Uh hmm. Screen, SSH and MPlayer already got named.
Bitlbee: IRC to IM (ICQ, AIM, MSN, Yahoo, Jabber) gateway -> http://www.bitlbee.org
Irssi: IRC client -> http://www.irssi.org
Libcaca: Reimplementation of AAlib, with colors -> http://sam.zoy.org/projects/libcaca
Mutt: CLI, highly configurable MUA -> http://www.mutt.org
MLdonkey: P2P (Soulseek, Ed2K, KaZaA, more) client with frontend plugings -> http://mldonkey.org
ZGV, FBI: framebuffer picture watcher -> ZGV, FBI -> http://www.svgalib.org/rus/zgv http://bytesex.org/fbi.html
Thank you! I was trying to remember the name of that application. It looks like a real efficient way to get work done.
“True, but modern machines in most cases have the resources to spare.”
You know? I hear this justification a lot. It’s never “should I as a programmer use this or that because it belongs to the user for their use?”, but more the (implied) “This is my machine. I can do what I wish with it.” If the user has a 5 Ghz processor and a Terabyte HD, does that make it OK for my program to consume 90% of both because I can? After all the user isn’t planning to do anything with it. Just because we’re not in the depression era of computing doesn’t mean we should pile our computing plate up with the users resources and pigout.
Hm, well, ncurses (+ gpm) is still a gui, right? Just philosophical …
“True, but modern machines in most cases have the resources to spare.”
You know? I hear this justification a lot. It’s never “should I as a programmer use this or that because it belongs to the user for their use?”, but more the (implied) “This is my machine. I can do what I wish with it.” If the user has a 5 Ghz processor and a Terabyte HD, does that make it OK for my program to consume 90% of both because I can? After all the user isn’t planning to do anything with it. Just because we’re not in the depression era of computing doesn’t mean we should pile our computing plate up with the users resources and pigout.
For most users, usability is far more important than RAM, CPU or disk footprint. Who cares if an application uses 2 or 20 MB if it’s put to good use.
What worries me are the (often teen age?) unix fans that buy the newest, fastest equipment and at the same time are obsessed about resource usage. A bit like audiophiles’ obsession with sound quality.
“For most users, usability is far more important than RAM, CPU or disk footprint. Who cares if an application uses 2 or 20 MB if it’s put to good use.”
I disagree. Old, cheap machines (P1, P2, etc) with little RAM are perfect for people who are on low budget. In such case, it _does_ matter if the program is bloated or not. Ie. Mozilla vs. Mozilla Firebird _does_ matter.
“What worries me are the (often teen age?) unix fans that buy the newest, fastest equipment and at the same time are obsessed about resource usage.”
It worries me when (often rich humans?) think they really do need that latest x86 powerhorse. For, exactly what? Buy an expensive one for someone who really needs it and trade it for an old one. You’re not losing anything with such move. The casual user doesn’t want to do more than basics, so there’s no use for that new x86 powerhouse. New != good; New != needed. Not by definition.
“A bit like audiophiles’ obsession with sound quality.”
Same counts for sound too. Philips MFB’s aren’t made anymore but they were of extremely high quality. Same with the x86 powerhouses: what is popular, does not need to be good, better or mandatory than something which isn’t made anymore or isn’t popular.
What this article did imo, was giving OSnews.com readers just that other perspective of using your computer. Like, “look it can be done different”. The reader decides it’s preference, and the reader is (mostly?) King/Queen of his/her computer. So if YOU do not care about bloat then stick with your bloated stuff. Thanks,
Sorry guys, this article is NOT about CLI apps, but CONSOLE apps, or what I call “low-res GUI apps” or “old-style things wich doesn’t fit in a modern desktop environment”.
Another vote for mc!
I just wish I could install it on my Mac without compiling all of the gtk and gnome libraries.
It’s by far the best and fastest file manager ever.
“For most users, usability is far more important than RAM, CPU or disk footprint. Who cares if an application uses 2 or 20 MB if it’s put to good use.
What worries me are the (often teen age?) unix fans that buy the newest, fastest equipment and at the same time are obsessed about resource usage. A bit like audiophiles’ obsession with sound quality.”
By dpi (IP: —.ipv4.freeshell.bofx.net) – Posted on 2004-01-16 19:13:50
No offense you are kind of talking out of your ass here. GUI’s and ease of use are not for computer professional hackers/programmers but a metaphor for people who don’t know WTF they are doing. They shouldn’t be using UNIX in the first place. That is what MacOSX and Microsoft windows is for. You need to read “The art of Unix programming” by Eric Raymond IMHO. It’s free on the net. You erroneously asymptotically link this preference for efficient computing with the so called invective appellation “Unix teen fanboys”. Why do two fo the top coders for BSD (NetBSD and OpenBSD) Luke Mewburne and Theo De Raadt prefer minimal non fancy WM’s over bloated GUI desktops ? hmmm. Also, if you go to Harvard and see a mathematician on unix they are likely to be doing computations in like a disgusting looking FVWM plain environment— At least the smart ones. I would venture to guess it is the same way for NASA’s NetBSD workstations but I can’t say so for sure.
Here is Luke Mewburne’s screenshot
http://unix.se/gallery/folk/aah?full=1
It’s almost as minimal as my Ratpoison setup his elite ascetism is very close indeed to my point at hand.
As a unix engineer I think the choice is clear.
MattK : Not to be a pedantic jerk but if you are referring to ratpoison I wouldn’t call it an “application” — it would more correctly be called a window manager. And even more correctly at that in all actuallity a “screen multiplexer” . BTW you are welcome. Enjoy !
Sorry for the sloppy grammar and typos as I typed all these responses as fast as I could in order to conserve time and did not review them for mistakes. However, the important main axiom bromides still got through regardless. .
k-thanks
s/is/are/ #fix first instance only not the latter as non “g”
#dictates for these regexps only pertinent in this
#instance howver the latter “is” stays static
s/fro/for/
s/ascetism/asceticism/
Actually I was lucky enough to find a picture of NASA’s Glen Research center computers using NetBSD.
http://ctd.lerc.nasa.gov/5610/images/racks.gif
If you blow up the picture you can clearly see they are using FVWM while a couple are using just plain terminal. If rocket scientists and Computer hackers don’t need big bloated inferior Desktop metaphor to do work why should we care about you ? Why should unix be designed for the banal philistines ? hmm.
If you think your big bloated desktop is more advanced technology than hacking new protocols and creating new RFC’s for Satellite Networks & Architectures in outerspace than you are a moron. It’s an aesthetic illusion.
If you use the framebuffer, you can display Japanese characters, or others which don’t fit in a byte, or use you may use kon (which is a security risk.) Then just set LANG and perhaps LC_CTYPE, if they’re not already and you want the interface to be primarily in the other language, and you should have a nicely i18n’d console.
(Caveat: I’ve not done this, but I’ve seen it done.)
Hi,
i agree with you, though i also saw a screenshot of Windows running at NASA. But can you please do proper quoting? (I did wrote that). TIA,
Without which most of this would not be possible.
For those who like minimal window managers, y’all should take a look at ION.
http://modeemi.cs.tut.fi/~tuomov/ion/
I agree with the others who pointed out that screen is an amazingly powerful terminal application. The attach/detach ability of screen allows me to start my work from at work and reattach to finish my work from some other location. Or to quickly attach to a lab machine in an xterm and start some new shells and processes. Screen also allows someone else to attach and see what is going on — a must in a shared lab environment.
mutt is another useful console application.
There is nothing wrong with GUI except the overuse of the mouse. Think about it, most mouse actions are seleting a menu item or klicking on buttons. That can be done much faster with the keyboard.
A lot of people think this, but actual measurements show it to be false. On average, menu access is quicker with a mouse.
You will save some resources, but not enough to let you get away with a full generation-older [or more] hardware. Which is what you gain using *nix with only CLI.
Windows runs quite usably on any Pentium Pro and newer hardware (with sufficient memory). That’s at least *three* and possibly four (depending on how you want to count) generations old.
If you’re not using the GUI, it won’t be using any appreciable system resources. Yes, it will chew up some swap space and maybe 1% of the spare CPU power, but that’s so negligible as to be practically nonexistant.
Some of us old users actually grew up on and used text-only interface and are quite comfortable with them. But if you have constraints, such as poor network access, 9.6k modem?, and an old pc such as a 486/33/8 mb of ram.. Console access is excellent. With a slow dial-up, Links, Lynx and W3M kicks but compared to Firebird, or even DILLO.. Pine, Mutt kicks but compared to KMAIL… Setup and Configuration is much easier if you do not setup GUI….. A 100 mb harddrive is fine for CONSOLE only.. I don’t dislike GUI, I use KDE daily. But my firewall, router, webserver, ftp server and dns machine is a 100mb pentium that also does my email retrieval and quick browsing, HAS NO GUI….ONE of the other features of Linux is it’s easy networking AT CONSOLE LEVEL.. Telnet and ftp is marvelous (behind my firewall).. My firewall-router 100 mb pentium sits in the garage, has no keyboard, mouse or monitor… Of course this can all be done with GUIs, but require more RAM, ,more SPEED, more HARDWARE, and in many cases MORE SOFTWARE… In my world, I only need a 486/33 with an install of SLACKWARE…
OTHER console apps.. that can be part of your console medly… SPLITVT— ,, CHKWWW,,,, SYSMY,,,,,CPLAY,,,DOSEMU… ARE all useful and small CLI apps..
very cool article, indeed; I learned (by fire and iron) to run CLI only, because my old machine was too old, even Fluxbox looklike a turtle machine;
the only distro could show me a CLI-only machine is possible, was Gentoo ๐
thanks alot Gentoo ๐
ps.: next step: BSD machine (without X, ofcourse ๐
How long does it take in a GUI to “browse” to a folder containing 10,000 files then move all the files ending with .mp3 and .mpg (but not .mp2) to a different directory?
How long does it take in a CLI?
The answer, of course depends somewhat on who is doing it. But I’m willing to bet that if you take a GUI “Pro” and a CLI “Pro” the guy at the command line would beat the GUI guy hands down.
Now how about if each had to move two dozen specific files which didn’t have any common traits (ie consistent file extensions, etc.) The GUI user would probably win.
I use GUI a LOT. It is very rare that I’ll be sitting at a PC without Gnome, KDE, Fluxbox, or maybe Windows. But that doesn’t invalidate CLI use.
My main complaint about GUIs is that whoever designs them has to plan for EVERY conceivable way you may want to use them. If they don’t then instead of helping you they may actually be getting in the way. With true CLI utilities, you can mix and match as needed to accomplish a task.
If you belive that GUI is the be-all/end-all of interface design, try this exercise in Windows or Linux. Find all the files which names end with .ini on your entire hard drive. Now sort by filename. Now remove the duplicates. Now tell me how many (excluding duplicates) there are. How long did it take? Could you even do it using the GUI tools available?
Now do the same thing using GNU utilities in a CLI.
find / -name ‘*.ini’ -printf “%f
” | sort -u | wc -l
While it may look (and perhaps is) god awful ugly and confusing, it does get the job done. A compitent UNIX/Linux admin should have no problem figuring out the command. And once you are used to the syntax it’s a snap.