You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

431 lines
16 KiB

<!doctype linuxdoc system>
<!-- The Konsole Handbook -->
<article>
<!-- Title information -->
<title>The Konsole Handbook
<author>Lars D&ouml;lle,
<htmlurl url="mailto:lars.doelle@on-line.de" name="lars.doelle@on-line.de">
<date>Version 0.0.1, 06 Jun 1998
<abstract>This document describes Konsole version 0.8.6
Please be aware of the fact that this document is under construction.
<!-- Table of contents -->
<toc>
<!-- Begin the document -->
<sect>Introduction
<p>
Konsole is a X terminal emulation for the K Desktop Environment.
<p>
In the context of a graphical user interface being a terminal
emulation means, that it's task is to provide a display
to an application that is originally designed to run on a computer
with a character terminal attached.
<p>
To give a short taxonomy of free X terminals, there' two other
of this kind: xterm, which is the original, written even before X
itself (a month or two), and xvt, a light-wight xterm clone, on
which most other currently available derivates (notably eterm)
base. After a decade, konsole is the first rewrite from ground up.
While xterm has definitely been hacked to death meanwhile (it's
README starts with the words "Abandon All Hope, Ye Who Enter Here"),
konsole offers a fresh start using contemporary technologies and
understanding of X.
<sect>Overview
<p>
When invoked, konsole starts this client application (which is
the shell by default) and displays all the clients output in it's
window while forwarding key presses and mouse clicks to the client.
<p>
By this most of konsole's behavior is really controlled by the
application that actually runs in it. There are only a few
special features that konsole adds to this. These additional
features are not uncommon, so much of the following description
applies to any decent terminal emulation.
<p>
<itemize>
<item>History Buffer
<p>
Text that is scrolled out of the screen is kept in a history buffer
for later review. Currently a maximum of 100 lines are kept in this
buffer. While it is not possible to change text that has ended up
in the buffer, one can look at it and copy it partially or entirely
to the clipboard.
<item>Keyboard
<p>
The Shift-PageUp and Shift-PageDown keys are used to scroll through
the history buffer. All other keystrokes are passed on to the
application run within the emulation. Note that their might be
some dead keys.
<item>Mouse
<p>
You need a three button mouse to make full use of the terminal.
The buttons have different functions:
<p>
<itemize>
<item>Left button
<p>
Clicking the left button is passed as an event to the application
running in the emulation if it is mouse aware. If a program will
react on mouse clicks konsole indicates this by showing an arrow
cursor. If not an ibeam (bar) cursor is shown.
<p>
Holding the left button down and dragging the mouse over the screen
with a mouse unaware application running, will mark a region of the
text. While dragging, the marked text is displayed reverse for visual
feedback. As soon as the button is released, the marked text copied
to the clipboard for further use within Konsole or another application.
<P>
Normally, new-line characters are inserted at the end of each line
selected. This is normally best for cut and paste of source code
or the output of a particular command. For ordinary text, the
line breaks are often not important. One would prefer for the
text to be a stream of characters that will be automatically
re-formatted when pasted another application. To select in
text-stream mode, hold-down the Ctrl key while selecting
normally.
<p>
It the upper or lower edge of the text area is touched while marking,
Konsole scrolls up or down, thereby eventually exposing text within the
history buffer. The scrolling stops as soon as you stop moving the
mouse.
<p>
After releasing the mouse, Konsole attempts to keep the text in the
clipboard visible by holding the marked area reversed. The marked
area reverts back to normal as soon as either the contents of the
clipboard is changed, the text within the marked area is altered
or you've clicked the left mouse button.
<p>
To mark text on a mouse aware application the shift key has to
be pressed when clicking.
<item>Middle Button
<p>
Pressing the middle button copies text currently in the clipboard.
This works just as if clipboard contents is typed on the keyboard,
so the application running in the emulation will react by it's own
way on it.
<item>Right Button
<p>
The right button brings up the configuration menu. Additionally,
the shift and the control key may be uses with this button to
get access to other parts of the menu.
</itemize>
<p>
<item>Sessions
<p>
Konsole offers to run several sessions (programs) at once. New sessions
can be started using the "New"-menu. One can switch between sessions
with the "Sessions"-menu. Both menus are available as right mouse button
menus, too, when pression the shift or the control key as modifiers.
<p>
The session menu can be freely configured due to the local needs.
(A section explaining how is missing, see /opt/kde/share/apps/konsole
for some examples.)
</itemize>
<sect>Configuration
<p>
Using the option menu one can control much of konsole's appearance.
The configuration is both available using the menu bar or clicking
on konsole's window with the right mouse button.
<itemize>
<item>Menu Bar
<p>
Having this option checked provides a menu bar in the top of the
window. Different from the regular behavior, the menu bar does
not accept "hot keys" to prevent making some ALT-key combinations
unusable for the client applications.
<p>
<item>Frame
<p>
Selects whether a decorating border is to be drawn.
<p>
<item>Scrollbar
<p>
Having a scrollbar provides another way to control the history
buffer. Do not confuse this feature with scrolling inside the
client application, although it often may (and shall) look like.
<p>
<item>Font
<p>
The font menu offers two completely different adjustments.
First, a collection of fonts of different sizes given, so
that a font that matches both the resolution and the prefered
window size can be chosen. Second, there is one additional
"Linux" font, that is different from all the above by it's
encoding. One needs to have this font set when running a
linux console emulation.
<p>
<item>Size
<p>
While the size of the window is freely adjustable by the regular
means, it may sometimes be desireable to set the size of konsole
window to match the requierements of old, size unaware programs.
The size menu offeres the most often used sizes. If non of them
match, resize the screen due to your needs. When the size is
changed, konsole displays it in the title to help with the
adjustment.
<p>
<item>Color Schema
<p>
This option allows one to select a color schema.
(A section explaining how is missing, see /opt/kde/share/apps/konsole
for some examples.)
<p>
</itemize>
<p>
For more historical reasons, the backspace key shall not emit
CTRL-H when running with Linux. (The only application that i
know which really depends on this special behavior is "emacs",
where CTRL-H means "Help"). Although every application is
properly configurable, so one could have configured emacs to
accept F1 as the help key, an uncommon use of the keyboard
codes has been traditionalized. Don't worry about it, just
make sure that the option
<itemize>
<item>BS sends DEL
</itemize>
is checked.
<p>
In this case, konsole send a DEL character (hex 7F) when pressing
the backspace key instead of the regular BS character (hex 08).
The delete key is also sending something different from the DEL
character in this case.
<p>
All the above options take effect immediately but only for the
current invocation. To make the adjustments permanent, click the
option:
<itemize>
<item>Save options
</itemize>
<sect>Installation
<p>
Konsole is currently part of the kdenonbeta package and should be
compiled and installed as indicated in the package's main directory.
<p>
If you experience problems with that, please refer to
<ref id="probPack" name="installation problems"> below.
<sect>Bugs and FAQ
<p>
Before sending bug reports, please check the problem with another
X terminal to find out whether it is `konsole' specific or not.
<sect1>Installation Related Problems
<p>
Konsole requieres some specific fonts that come along with it's
distribution but are not installed due to the authors preference
not claim root privileges during the installation process. You'll
have to do this manually. See README.linux.console for details.
<sect1>Application Related Problems
<p>
Some programs have flaws when run under a X console.
<sect2>MC (midnight commander 4.1.21)
<p>
<itemize>
<item> only when the emulation is called 'xterm' mc reacts on resize events
(before any key is pressed) and on (xterm) mouse events. Note that
xterm mouse events aren't specific at all, e.g. the Linux console
produces them also.
<item> After ^O (showing the secondary screen) mc does not propagate resize
events at all to it's sub shell. Try this with xterm, or whatever else
terminal emulation.
<item> Apparently it does more strange things with the sub shell.
When resizing the window with the mc panels shown, the secondary
screen gets somehow affected (by real or faked prompts). This gets
even worse when an application program is running while doing so.
<item> sends out at least newlines but often more stuff when resizing while
the panels are shown.
<item> Under high traffic, some parts of the text is known to get lost.
Try `ripple' in the test directory until you notice a drop. Since
i've been able to reproduce this bug with kvt, rxvt and xterm, and
i validated also that the data is already lost at read(3), i may
well have stumbled into something different here. Because i was
also only able to produce this effect while running mc, i feel
pretty certain that mc's sub shell handling causes this effect.
<item> Resizing does not work well when running under linux console emulation.
Especially, mc does not forward the resize information to the subshell.
It is not mouse aware then any longer, too.
</itemize>
<sect2>Vim 4.6
<p>
<itemize>
<item> emits a newline at exit, thereby producing a strange image on the
secondary screen when run together with mc as default editor.
</itemize>
<sect2>dselect (Debian package manager front end):
<p>
<itemize>
<item> assumes black background. So turn to white-on-black color scheme
when using it. When run under the linux console emulation, it does
not cope well with resize events (segfault).
</itemize>
<sect1>Broken Termcap and Terminfo Databases
<p>
Please be aware of the fact that most applications (those using ncurses)
base their knowledge on how to talk to a terminal emulation on the
information within a database. This might well be wrong. Again, you
should experience likely problems then with other emulations.
<p>
So, for example:
<itemize>
<item>debian 1.3.1 (Bo) omits the kdch1 entry, thus the DELETE key does
appear not to work properly. Other keys might be missing as well.
<item>the mc 4.1.21 distribution contains a xterm.ti with faulty hpa, vpa
entries (with <tt/[/ omitted after <tt/ESC/). Even stranger, xterm runs
happily with them, because of a feature, that allows to accept errorness
sequences under some circumstances (<tt/ESC Pn C/ is treated like
<tt/ESC [ Pn C/, where <tt/C/ is a non-digit.).
<item>I've included a xterm.ti for this reason. (Compile using tic.)
</itemize>
<sect1>Problems with BACKSPACE, DELETE and Likely Keyboard Issues.
<p>
Once upon a time there was a terminal without a delete key.
This problem has been perpetuated in Linux and is still a
never ending nightmare. It has been worked around separately
in all programs that have to deal with these keys and they
have now ended up to be configurable and therefore are likely
to come in configured wrong. And so is konsole.
<p>
Konsole emits DEL (0x7f) for the BS key and ESC[3~ for the
DEL key if the `BS sends DEL' option is activated, and then
behaves like a typically configured Linux console. Ctrl-H (0x08)
is then left for the use of the application programs, e.g.
typically configured emacs help.
<p>
When this options is not set, the BS key sends BS (0x08) and
the DEL key sends DEL (0x7f), as regular VT100s and IBM PCs do.
<p>
[ Since every program can be configured BS=BS, DEL=DEL, and
the poor terminal without delete key mentioned above exists
today only in legends, the author wonders why this BS hack
is still around. ]
<p>
ctrl-^ == ctrl-~ == ctrl-` == RS == 0x1e cannot be typed with
an european keyboard map loaded, since all three base characters
are prefixes (i.e. are eventually to be continued with a second
character). X11 is known to have these dead keys.
<sect1>Color Scheme
<p>
Because of a storm of complaints about the color scheme,
konsole offers configurable color schemes in it's latest
versions. A proper document on them is still missing.
<sect1>Fonts
<p>
(Slightly outdated, check README.linux.console)
<p>
<itemize>
<item> the VGA font uses a different encoding then the other ones,
and will therefore not display graphic and national characters
when run with TERM=xterm. It is best suited to dos(1) and
also work somewhat with TERM=linux. Note that the inclusion
of this font is experimental.
<item> other fonts but the ones included appear not to be usable for
terminal applications. This is not that much due to their
variable pitch (which i'd implemented experimentally), but
because they miss the graphical subset. Try xfd(1x) to check
this.
<item> In general a proper font family for terminals seems to be
missing at all. If you know about a scalable terminal font
family, please drop me a line.
</itemize>
<sect1>Security
<p>
Although konsole is prepared to be installed root-suid, it is not
intented to be used so. Don't do it. Konsole drops privileges
immediately after being started. Secure keyboard (X11) is not
implemented which means that other X11 applications can get the
keyevents from konsole, if they want. Beware of trojan horses.
<p>
konsole does not fchown(2) the pseudo tty. This means, that in a
multiuser environment someone may eavesdrop your (root) session.
For newer Linux kernels (2.1/2.2), konsole will deny such attempts.
To validate whether this is possible or not, try the following within
konsole:
<p>
<verb>
$ tty
/dev/ttyp3
</verb>
<p>
As another (non-root) user, try:
<p>
<verb>
$ echo 'test' > /dev/ttyp3
</verb>
<p>
If you receive the string within the konsole's session, the session
is insecure.
<p>
For other UNIXes, this hole will be closed in a bit,
but the solution will require konsole being installed root/suid.
I'm aware, that this might not be possible in every installation,
but i cannot help that.
<sect1>Known Bugs (konsole-0.8.6)
<p>
<itemize>
<item> keys on the keypad does not cause any effect when numlock is not
set. This truly reflects, what i receive from Qt. All the keys
come in as #ffff. Think this comes from the eventFilter i had to
install to get the key-presses.
<item> check TODO for "bugs" due to missing features, also.
</itemize>
<sect1>Features That Will Not Be Implemented.
<p>
<itemize>
<item> utmp entries.
<p>
The utmp is a database that reports who is currently logged on.
This is used by programs like who, finger, wall, talk, etc. to
list the users of a system and to contact them.
<p>
It does not make sense when used with an X terminal, since there
is nothing like _the_ terminal then, to which one can send notices.
<p>
The proper solution would be, to stamp the utmp with the xdm/kdm
session manager. Further, a proper notification/chat program should
be run automatically when the X session starts (ktalk?), so that
a communication channel is available to the one at the console.
</itemize>
</article>