The conventional wisdom is that, once Linux reaches a true, user-friendly
paradise state, there will be no need for any command line work at all.
Your editor, however, is a heavy command line user, and has been since,
well, since he was able to get away from punch cards. Some sorts of tasks
are best done in a graphical, pointer-oriented mode. But others are,
truly, best done with the command line. The pure expressive power of a
command-oriented interface has yet to be matched in the graphical world -
at least, for a wide variety of tasks.
Once upon a time, an ADM-3A
terminal looked like a very nice interface. Those days have passed,
for many of the years
since, the definitive terminal emulator has been xterm, which was
packaged with the original X11R1 release. xterm was, for its time, a
marvel of configurability, with a nice set of menus for controlling its
behavior, setting fonts, and providing that all-important access to the
"reset" function for when it gets stuck in the VT100 graphics mode.
There is one other xterm feature which has never been matched anywhere: no
other terminal emulator comes with its own Tektronix 4014 storage tube
emulator mode built in. Your editor who, along with many co-workers, had
sunburned his face working with real storage-tube terminals appreciated this
mode at the time. It has been a while, however, since your editor (or just
about anybody else) has had to run software which expects to talk to such a
terminal; even so, every xterm still has a Tektronix terminal lurking
In general, little has happened with xterm over the years, with the
exception of the addition of color support. For the most part, development
in terminal emulators has happened elsewhere. Your editor has finally
decided that it is time to take a look around, and, perhaps, move beyond
the venerable xterm.
But first: a word on color in terminal emulators; this is a subject on
which your editor can get truly grumpy. Many developers have jumped into
adding color support to terminal-oriented applications with little regard
for basic human factors and usability. A usable terminal should not look
like the Las Vegas strip at night. Color usage, to be effective, must be
subtle and carefully thought out. In particular:
- Users must be given obvious and easy control over color usage.
Different people have very different combinations of monitors, background
colors, limitations in color perception, and general preferences.
There is no single choice of colors that will work for any substantial
portion of the user community.
- The basic nature of the human visual system is that it separates
objects based on intensity differences, not color differences.
If you are designing colors for a white-background display, every
color you use must be, with few exceptions, a low-intensity color.
Hot pink on white may look snazzy, but people will have to work hard
to read it.
- Dark blue should never be used for anything somebody is expected to
read. Short wavelength colors tend to focus just in front of the
retina, and will thus always be a little bit blurry.
Color xterm thus fails on all counts. The colors can be configured via the
X resource database, but it is not straightforward. The default colors are
on the garish side, and they are too bright.
For years, the default replacement for xterm was rxvt. This terminal
emulator is, for all practical purposes, a version of xterm with a lot of
the extra stuff (such as the Tektronix mode) stripped out. It does live up
to its promise of being smaller, taking just over half the virtual memory
required by xterm. rxvt, however, suffers from a lack of maintenance (last
release was November, 2001, with a development version showing a release in
March, 2003), poor default colors, and no
menus for run-time configuration. This terminal emulator has been dropped
from a number of modern distributions.
(As an aside, rxvt, like most other terminal emulators, dropped the
xterm/Xaw scrollbar. This is a big loss; no other scrollbar is as useful
as the old Xaw implementation, which gives very precise control over just how much the
window is scrolled. Wheel mice have made good scrollbars less important,
but your editor wishes that developers interested in usability wouldn't so
casually drop interaction modes which are clearly better).
If you want to know the current state of the art in terminal emulation, of
course, you have to look at what the desktop projects are doing. Your
editor is happy to report that neither GNOME nor KDE has neglected the
lowly terminal emulator.
GNOME's entry is gnome-terminal. This terminal emulator does all of the
stuff that one would expect of an xterm replacement, with a number of
useful new goodies:
- Tabs. A tabbed terminal emulator turns out to be just as useful as
a tabbed web browser. If you tend to have a lot of things going on at
once and limited desk space, tabs make life much easier.
- Nice configurability. It is easy to eliminate gnome-terminal's most
obnoxious features (blinking cursor, space-wasting menu bar), tweak
fonts and colors, etc. The default colors are also relatively
good, at least for people who work in a white-background mode.
- Multiple profiles. Each tabbed session can have its own fonts,
colors, titles, etc. If you tend to keep tabs around for specific
purposes (one could, for example, keep a root shell in one tab), you
can tweak the presentation to make the current task immediately
gnome-terminal also has a nice feature in that it makes the pointer fade
away as soon as the user starts typing. No more moving the mouse around to
get the pointer out of your way. An invisible pointer might seem like a
human factors problem in its own right, but the simple fact is that you
generally have to move the pointer to find it anyway.
Your editor's biggest complaint about gnome-terminal might be that
scrolling with the mouse wheel is a relatively coarse operation; xterm
scrolls in smaller steps unless the shift key is held. The number of lines
to scroll on a mouse wheel event would be a nice addition to the
terminal emulator, has most of the features described above.
In addition, Konsole offers:
- Bookmarks. In the Konsole world, a bookmark is just a saved directory
path; selecting a bookmark causes Konsole to feed a cd
command to the underlying shell.
- History browsing. Konsole can search for a string in the past
history, making it easy to go back and see what happened earlier.
- Notifications. When asked, Konsole will monitor a session for
activity (or, optionally, the lack thereof) and notify the user when
it happens. If you want to know right away when that long
make finishes, Konsole can tell you. It also can notify you
when something rings a bell in one of your sessions; such sessions are
also annotated with a little bell icon in the tab bar.
Konsole, too, will hide the pointer. Unlike gnome-terminal, however, it
does not wait until you start typing, but hides it regardless after a few
Konsole comes with a reasonable set of default colors, and provides user
control as well. The color editor works by way of "schemas," and is rather
awkward to work with. The gnome-terminal profile-based mechanism seems
Both gnome-terminal and Konsole will let you do crazy things, like putting
a background image into the terminal window. Such features make for
screenshot eye candy, but they are not good for usability.
Fortunately, nobody seems to set up either emulator with background images by
Both Konsole and gnome-terminal make it easy to change fonts - if you like
the options provided. Your editor, who long since found a monospace X font
which optimizes both readability and screen space, very much misses the
ability to chose an arbitrary X font. It is probably possible by digging
under the hood somewhere, but the configuration screens are not helpful in
this regard. One should also note that both terminal emulators are memory
hogs, requiring vastly more virtual and physical memory than xterm to run.
That notwithstanding, it is clear that both desktop projects have managed
to improve the state of the art in terminal emulation. Even better, they
have both managed to (1) avoid the temptation to ruin usability with
flashy eye candy, and (2) retain a full set of configuration options
so that this crucial tool can be tweaked to each user's needs.
Congratulations would seem to be in order.
[For completeness: other terminal emulators out there include
9term, the Plan 9
entry; aterm, an rxvt-derived
emulator with background image support; and Eterm, an emulator which prioritizes fancy
backgrounds well above readability or usability (see image at left). There are also several
emulators designed around non-western character sets, which your editor is
in no position to review usefully.]
to post comments)