bumbler
November 27th, 2003, 20:28
I'm not sure where to go next. Any ideas?
---------------------------------------------

Desktop FreeBSD Part 7: Terminal Emulator Settings
Ed Hurst 27 November 2003

================================================== ======================

To really take advantage of the best tools in computing requires that
you become quite comfortable with using the command line interface
(CLI). In general, nearly every task -- aside from graphical work
itself -- can be accomplished from the CLI. Once the user becomes more
adept at CLI work, these non-graphical tasks can be done more quickly,
with more fine-grained control, and with less demand on computer
resources.

Even among ordinary desktop users of FreeBSD, there are those who
almost never start the X server. However, most of us simply access that
part of the system through "terminal emulators," also called "terminal
windows." In KDE, the typical terminal emulator is Konsole, though it
is not quite the same as a console. We call them "emulators" because
there is a great deal of similarity between a console and a terminal
emulator, but the latter are still controlled by the X server, and the
two exhibit different behaviors in general. At this point, those
differences are not really important. Rather, it is the differences
between the various terminal emulators that matter to us.

There are two areas of configuration for the terminal emulators that
contribute to ease of use: keystrokes and color text.

KEYSTROKES

We have mentioned previously Anne Barreta's guide to sane keyboard
settings <http://www.ibb.net/~anne/keyboard.html>. Just getting your
DEL and BKSP keys to work as you expect is no simple task. What we have
today is the result of a system established long ago by folks who had
different hardware than is commonly available today. There were dozens
of keyboards and dozens of terminal types, each with their own peculiar
behaviors, and few bearing much resemblance to what the average home
computer has. Most computer users today have been conditioned by one
computer culture, and the folks who write Open Source were affected by
another. The latter tend to preserve the defaults to what they were for
that institutional equipment. That doesn't mean we ordinary desktop
users can't have it our way, but that we have to do a little work to
get it.

I could not add anything to Anne's work. What I will do here is extract
the most common issues for desktop users. It's been my experience that
for Konsole, if you choose the keyboard setting for XTerm 4, you will
usually get what you expect. On the menu at the top of the Konsole
window, select "Settings" and, then "Keyboard" then "XTerm (XFree
4.x.x)" and you should get on the commandline a BKSP key that rubs out
the previous character going backwards, and DEL will remove whatever is
under the cursor. However, with an XTerm, that's not so simple.

There are a handful of configuration files in your home directory that
we call "dot files" because they are named with a dot or period at the
front, which keeps them normally "hidden" out of sight. In the one
named .Xdefaults, you need to put these lines:

xterm.Translations: #override \
<Key>BackSpace: string(0x7F)\n\
<Key>Delete: string("\033[3~")\n\
<Key>Home: string("\033[H")\n\
<Key>End: string("\033[F")
*ttyModes: erase ^?

This will tell XTerm what you want those keys to do, along with the END
and HOME keys. Now when you are typing on the command line, you can use
those keys as you might expect: HOME takes the cursor back to beginning
of the line, and END takes it out to the end. Then, we need to add a few
lines to a file named .inputrc:

#For XTerm
"\e[1~": beginning-of-line
"\e[4~": end-of-line
#for rxvt and Konsole
"\e[7~":beginning-of-line
"\e[8~":end-of-line

Now, when you open XTerm or Konsole on your desktop, all the keys will
tend to work as you expect. In some console applications they will also
work that way. Anne explains how to work with different ones in her
tutorial.

What we are doing is telling the system to translate the signals from
the keyboard into certain actions. The whole thing is really quite
complicated, and for the most part, over my head. The strange
characters between the quotation marks in these files are a
representation of the signals coming from the keyboard under differing
circumstances. If you want to see what any keystrokes do under the
various terminals, first type ^V on the command line, then the
keystrokes you are testing. It works for any combination that you can
press at one time. This can help you decide what to put in various
configuration files.

But why go to all this trouble for XTerm when Konsole is already setup?
In part, it's that issue of resources again. To use Konsole takes more
power than a simple XTerm, especially if you are not using KDE. To use
Konsole outside KDE requires that a part of KDE be fired up. Also,
there are some things in Konsole that cannot be adjusted as they can be
for XTerm. For example, you may recall I stated that I have tweaked my
.joerc so that I can use comfortable keystrokes to get what I want
while editing. For example, if I run Joe in XTerm, I can hit CTRL+HOME
and move the cursor to the top of the file. That won't work in Konsole.


COLORS

It was learned long ago that file operations were simpler if the
listing of files and folders was color-coded. We learned the "ls"
command to get a list of the files an any directory in the console. If
you type that command, it will show the directory where you are working
at the time. You can tell it to list any directory you name. For
example, if you type

ls /etc

it will show the files and folders in the /etc folder. How can you tell
which is a folder, and which is a file? Try adding the "-G" option to
"ls" and it should give you names in color: files the same as the plain
text, and folders in blue. If you like this option as the standard, you
can give the "ls" command an "alias" that makes it work that way all
the time. In your .bashrc, add this line at the bottom of the file:

alias ls="ls -G"

This means that the "ls" command will always assume you want the "-G"
option inclueded.

By default, Konsole generally allows color text display when it is
called for by the choice of commands. Those colors are somewhat muted
compared to other terminal emulators. Most of the colors reflect old
standards long established. This was done on consoles that were black
in the background, and the default text was a bright gray, not quite
white. If you use a color scheme that is different from that, text
colors may not work just right. When you first open a Konsole, it's
usually white in background, and the text is black. I personally find
this annoying and change it. Simply open the "Settings" in the Konsole
menu, then "Schema" followed by "Linux colors" to get that older style.

For XTerm, you can learn something about it by typing the simple command
"env" and seeing a list of "environment settings". One of them should
included mention of "TERMCAP" followed by a description of the Color
XTerm ("xterm-color"). This shows that your standard XTerm window is
set up to display color text. Again, getting your XTerm to show that
color-on-black schema requires putting some lines in your .Xdefaults
file:

xterm*background: black
xterm*foreground: gray
xterm*cursorColor: SkyBlue
xterm*font: 9x15
xterm*ScrollBar: on
xterm*SaveLines: 3500

All of these settings are explained in detail if you can wade through
the XTerm man page ("man xterm"). Each of these is human readable up to
a point. I happen to favor a pale blue cursor block. The font is a
standard terminal font and the size is appropriate for all the smallest
monitors. The "SaveLines" setting allows you to scroll back up a ways
to see what was printed on the screen for 3500 lines. All of these can
be adjusted to suit your tastes. The quickest way to learn color names
for your system is to install "xcolorsel" (/usr/ports/x11/xcolorsel).
This application will display blocks of color with their system names.
In KDE, the KColorSel application (under "Graphics" in the menu) will
allow you to choose colors by their numerical code; simply copy the code
in the small window marked "HTML" along with the hash-mark (#). XTerm
will read that format as well for color settings.

You can also install the RxVt terminal (/usr/ports/x11/rxvt), which is
a little lighter on resources than either XTerm or Konsole. It does
things a little differently, such as displaying color in the man pages
instead of bold and underlined text. You can study how to customize
that with its own man page ("man rxvt").

One final note on terminal emulators. Because we are using the Bash
Shell, we have some interesting options for customizing what shows up
as our prompt on the command line. I've seen some that were downright
extravagant. I prefer a small amount of color coded information. If you
put this line in your .bashrc:

export PS1="\[\033[0;36m\]\u@\h\[\033[0m\]\w\[\033[1;33m\]>\[\033[0m\] "

your prompt will display the user name, the "at" symbol (@) and the
name of your computer, all in cyan. The directory where you are will be
displayed in the default text color, and the whole thing ends in a
yellow arrow-head marker, or greater-than sign. To learn how to create
your own custom Bash prompt, simply look up the Bash-Prompt-HOWTO on
the Internet. You can find it wherever Linux documents are hosted. These
include:

http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/
http://www.linuxselfhelp.com/howtos/Bash-Prompt/Bash-Prompt-HOWTO.html
http://www.faqs.org/docs/Linux-HOWTO/Bash-Prompt-HOWTO.html