# Das Handbuch zu Konsole

Lars
Dölle
Autor

    lars.doelle@on-line.de

Stefan
Doll
Deutsche Übersetzung

    stefan@i-2000.com

Version 0.0.1, 6. Juni 1998

Dieses Dokument beschreibt Konsole Version 0.8.6, es ist noch nicht vollständig fertiggestellt.

KDE Konsole Handbuch

KDE
konsole
xterm
terminal

## Einführung

Konsole ist ein X-Window Terminalemulator für KDE.

Im Zusammenhang mit graphischen Benutzeroberflächen versteht man unter einem Terminalemulator eine Benutzerschnittstelle zu Anwendungen, die ursprünglich für Computer mit Text-Terminal entwickelt wurden.

Gebräuchliche X Terminalemulatoren basieren auf zwei frei verfügbaren Programmen: xterm, dem Original, und xvt, einer leichtgewichtigeren Alternative. Die Basis für die meisten anderen X Terminalemulatoren (z.B. eterm) ist xvt. Konsole wurde jedoch mit Hilfe moderner Methoden vollständig neu entwickelt.

## Übersicht

Wenn Konsole aufgerufen wird, startet es automatisch eine erste Anwendung. Per Voreinstellung ist das die Befehlszeile (=Shell). Die Ausgabe dieser Anwendung wird im Konsole-Fenster dargestellt, und alle Tastenanschläge und Mausklicks werden an das Anwendungsprogramm weitergereicht.

Dadurch wird das Verhalten von Konsole hauptsächlich durch die Anwendung kontrolliert, die es gerade ausführt. Zusätzlich bietet Konsole (wie die meisten anderen Terminalemulatoren) einige weitere Leistungen.

Verlaufsspeicher

  Text, der nicht mehr im Konsole-Fenster dargestellt ist, läßt sich mit Hilfe des Rollbalkens (=scroll bar) wieder sichtbar machen. Dabei werden maximal 100 Zeilen im Verlaufsspeicher aufbewahrt. Dieser Text läßt sich nicht mehr ändern, er kann aber (ganz oder teilweise) kopiert und angezeigt werden.

Tastatur

  Die Tasten Shift + Bild-aufwärts und Shift + Bild-abwärts, Shift + Cursor-aufwärts und -abwärts werden benutzt um durch den Verlaufsspeicher zu navigieren. Alle anderen Tasten werden an die Anwendung weitergeleitet. Oft werten Anwendungsprogramm nicht alle verfügbaren Tasten aus.

Maus

  Um die Fähigkeiten von Konsole voll auszuschöpfen, wird eine Maus mit drei Tasten benötigt. Die Tasten haben folgende Funktionen:

  Linke Taste

    Ein Klick der linken Taste wird an die Anwendung weitergeleitet. Konsole benutzt einen Pfeil als Mauszeiger, wenn das Anwendungsprogramm über Mausunterstützung verfügt. Andernfalls wird ein senkrechter Balken (ein Textzeiger) dargestelllt.

    Druck auf die linke Taste und anschließendes Bewegen der Maus (=ziehen) markiert einen Textabschnitt. Der ausgewählte Text wird dabei invertiert dargestellt. Sobald die Maustaste losgelassen wird, wird der Text in die Zwischenablage kopiert und kann dann für Konsole oder andere Programme verwendet werden.

    Normalerweise werden Zeilenumbrüche des markierten Texts mitkopiert. Das ist sinnvoll für Quelltext (von Programmiersprachen) oder die Ausgabe bestimmter Befehle, aber für gewöhnlichen Text wäre eine Auswahl ohne Zeilenumbrüche günstiger. Eine solche Auswahl läßt sich durch gleichzeitiges Drücken der Strg-Taste während des Markiervorgangs erzeugen.

    Wird der Mauszeiger während der Auswahl über das obere oder untere Ende des Textfensters hinausbewegt, so rollt Konsolen-Anzeige aufwärts oder abwärts und zeigt Text aus dem Verlaufs-Speicher an. Dieser Vorgang endet, sobald die Mausbewegung aufhört.

    Wenn die Maustaste losgelassen wird, bleibt der ausgewählte Textabschnitt markiert (=invertierte Darstellung). Die Markierung wird aufgehoben, wenn die Zwischenablage verändert wird, wenn eine Änderung des markierten Texts erfolgt oder wenn die linke Maustaste betätigt wird.

    Bei Anwendungsprogrammen mit Mausbenutzung muß zusätzlich die Shift-Taste betätigt werden, um Text auszuwählen.

  Mittlere Taste

    Ein Klick der mittleren Taste fügt Text aus der Zwischenablage ein. Die Anwendung verhält sich dann so, als ob der Inhalt der Zwischenablage auf der Tastatur eingegeben würde.

  Rechte Taste

    Gedrückthalten der rechten Maustaste aktiviert das Optionsmenü. Weitere Menüs werden durch gleichzeitiges Gedrückthalten der Shift-Taste (Dateimenü) oder der Strg-Taste (Sitzungsmenü) angezeigt.

Sitzungen

  Konsole kann mehrere Sitzungen (=mehrere Anwendungsprogramme) gleichzeitig verwalten. Neue Sitzungen können über das Dateimenü gestartet werden, mit dem Sitzungsmenü kann zwischen den Sitzungen gewechselt werden. Beide Menüs können auch mit der rechten Maustaste aufgerufen werden. (Rechte Maustaste und Shift-Taste = Dateimenü, rechte Maustaste und Strg-Taste = Sitzungsmenü.)

  Das Sitzungsmenü läßt sich frei konfigurieren, Beispiele finden sich in /opt/kde/share/apps/konsole.

## Konfiguration

Über das Optionsmenü läßt sich das Aussehen von Konsole kontrollieren. Erreichen läßt sich das Optionsmenü über die Menüleiste oder über die rechte Maustaste.

Menüleiste

  Wenn diese Einstellung gewählt ist, dann wird die Menüleiste am oberen Rand des Textfensters angezeigt. Die KDE-üblichen Tastenkürzel werden von der Menüleiste nicht unterstützt. Dies geschieht, um sicherzustellen, daß diese Tastenkombinationen (z.B. ALT-F) den Anwendungsprogrammen zur Verfügung stehen.

Rahmen

  Bestimmt, ob ein dekorativer Rahmen angezeigt wird.

Rollbalken

  Der Rollbalken ermöglicht es, im Verlaufs-Speicher zu navigieren. Manche Anwendungen bieten darüber hinaus eigene Roll-Möglichkeiten.

Zeichensatz

  Das Zeichensatzmenü bietet zwei grundsätzlich verschiedene Einstellungsgruppen. Die erste Gruppe erlaubt die Auswahl verschiedener Zeichengrößen, um Konsole an Auflösung und Fenstergröße anzupassen. Die zweite Gruppe bietet "Linux"-Zeichensätze die anders codiert sind. Diese werden benötigt, wenn als Anwendungsprogramm eine Konsolen-Emulation unter Linux ablaufen soll.

Größe

  Grundsätzlich läßt sich die Größe des Konsole-Fensters mit den üblichen Mitteln frei wählen. Manchmal ist es jedoch hilfreich, die Größe des Konsole-Fensters entsprechend den Anforderungen mancher alter Programme zu setzen, weil diese die nicht mit Fenstern verschiedener Größe zurechtkommen. Das Menü bietet die gebräuchlichsten Dimensionen. Passen keine, so kann das Fenster mit der Maus auf die gewünschte Größe gebracht werden.

Farbschema

  Diese Option erlaubt die Auswahl eines Farbschemas. Einige Beispiele finden sich in /opt/kde/share/apps/konsole .

Aus historischen Gründen erzeugt die Rücktaste kein Strg-H unter Linux. Dem Autor ist nur eine Anwendung bekannt, die dieses Verhalten erfordert: der Emacs-Editor, welcher Strg-H zum Anzeigen der Hilfe benutzt. Obwohl es möglich wäre, Emacs mit F1 als Hilfetaste zu konfigurieren, hat sich diese sonderbare Verwendung der Tastatur-Codes durchgesetzt. Es sollten sich hieraus keine Probleme ergeben, sofern die Option

- BS sendet DEL

aktiviert ist.

In diesem Fall sendet Konsole ein DEL-Zeichen (hex 7F) statt des normalen BS-Zeichens (hex 08). Entsprechend sendet die Entferne-Taste (=Delete) auch kein DEL-Zeichen, sondern verwendet einen anderen Code.

Alle Veränderungen im Optionsmenü werden sofort wirksam, aber nur solange diese Instanz von Konsole läuft. Um die Änderungen für alle zukünftigen Aufrufe des Programms zu übernehmen, muß der Menüpunkt

- Einstellungen sichern

angeklickt werden.

## Kompilierung und Installation

Konsole ist derzeit Teil des "kdebase" Pakets und sollte kompiliert und installiert werden, wie in der Anleitung des Pakets beschrieben. (Die Anleitung findet sich im Hauptverzeichnis des Pakets.)

Bitte lesen Sie Probleme bei der Installation weiter unten im Handbuch, falls Probleme auftreten sollten.

## Fehlerberichte, Fragen und Antworten

Bitte überprüfen Sie, ob eventuell auftretende Probleme spezifisch für Konsole sind, bevor Sie einen Fehlerbericht absenden. Sie sollten also zunächst überprüfen, ob die Probleme auch mit einem anderen X Terminalemulator auftreten.

### Probleme bei der Installation

Konsole benötigt spezielle Zeichensätze, die im Paket enthalten sind. Sollte Konsole nicht von einem Benutzer mit Root-Rechten installiert worden sein, so muß die Installation der Zeichensätze von Hand nachgeholt werden. Siehe README.linux.console für Details.

### Probleme mit Anwendungen

Einige Programme haben Mängel, wenn sie in einem X Terminalemulator laufen.

#### MC (midnight commander 4.1.21)

- MC reagiert auf Änderungen der Fenstergröße und auf Maussteuerung nur, wenn der X Terminalemulator 'xterm' heißt. Konsole erzeugt die gleichen Maus-Steuerzeichen wie xterm, es liegt nur am Namen.

- Nach Strg-O (zweiten Bildschirm anzeigen) werden Änderungen der Fenstergröße nicht mehr an die Sub-Shell weitergegeben. Die gleichen Probleme treten mit xterm und anderen X Terminalemulatoren auf.

- Weitere Probleme mit der Sub-Shell: Änderungen der Fenstergröße (während die mc-Menüs angezeigt werden) haben Auswirkungen für den sekundären Bildschirm (durch echte oder falsche Prompts). Das wird schlimmer, wenn gleichzeitig ein Anwendungsprogramm läuft.

- Sind die mc-Menüs aktiviert, so werden bei Änderungen der Fenstergröße Zeilenumbrüche und andere Zeichen erzeugt.

- Bei hoher Aktivität gehen Zeichen verloren. Das läßt sich mit 'ripple' im Testverzeichnis reproduzieren. Das gleiche Problem tritt mit kvt, rxvt und xterm auf. Es konnte festgestellt werden, daß die Daten bereits bei read(3) verloren gegangen sind. Der Effekt tritt nur mit der Sub-Shell von mc auf, es ist wahrscheinlich, daß dort der Fehler liegt.

- Änderungen der Fenstergröße funktionieren nicht richtig, wenn die Linux Konsole-Emulation aktiviert ist. Weder die Größenänderung noch spätere Mauskontrollinformationen werden von mc an seine Sub-Shell weitergereicht.

#### Vim 4.6

- Erzeugt einen Zeilenumbruch beim Beenden des Programms. Dadurch entsteht ein merkwürdiges Bild auf dem sekundären Bildschirm, wenn vim von mc als Default-Editor verwendet wurde.

#### dselect (Oberfläche für die Debian-Paketverwaltung):

- Erwartet schwarzen Hintergrund, daher muß das Weiß-auf-Schwarz-Farbschema verwendet werden. In der Linux Konsole-Emulation erzeugen Änderungen der Fenstergröße einen segmentation fault.

### Fehler in Termcap und Terminfo Dateien

Die meisten Anwendungen (nämlich diejenigen, die ncurses verwenden) benutzen die Informationen aus den Termcap und Terminfo Dateien um mit Terminal Emulatoren zu kommunizieren. Diese Informationen können falsch sein. In diesem Fall sollten andere Terminal-Emulatoren die gleichen Probleme aufweisen.

Zum Beispiel:

- debian 1.3.1 (Bo) läßt den kdch1-Eintrag aus. Daher funktioniert zumindest die Entferne-Taste (=Delete) nicht richtig.

- mc 4.1.21 enthält ein xterm.ti mit falschen hpa, vpa Einträgen (`[` fehlt nach `ESC`). Erstaunlicherweise funktioniert xterm mit diesen Einträgen. Es kommt mit bestimmten, fehlerhaften Einträgen zurecht. (`ESC Pn C` wird wie `ESC [ Pn C` behandelt, wobei `C` keine Zahl ist.).

- Der Autor hat daher ein xterm.ti mitgeliefert. (Bitte mit tic kompilieren.)

### Probleme mit Rück- und Entferne-Tasten (= Backspace, Delete), weitere Tastaturprobleme

Es war einmal... ein Terminal ohne Entferne-Taste. Das daraus entstehende Problem hat Linux geerbt, und es ist noch heute ein Alptraum. Alle Programme benutzen Provisorien, die sich des Problems annehmen, und sind nun konfigurierbar ... und daher wahrscheinlich falsch konfiguriert. Das gilt auch für Konsole.

Konsole erzeugt DEL (0x7f) für die Rücktaste, es erzeugt BS und ESC&lsqb;3˜ für die Entferne-Taste (=Delete) wenn 'BS sendet DEL' aktiviert ist und verhält sich dann wie eine typische Linux-Konsole. Strg-H verbleibt für Anwendungsprogramme (z.B. Emacs).

Ist diese Option nicht aktiviert, dann sendet die Rücktaste BS (0x08), und die Entferne-Taste (=Delete) sendet DEL (0x7f) genau wie normale VT100s und IBM PCs.

&lsqb;Heutzutage läßt sich jedes Programm mit BS=BS, DEL=DEL konfigurieren, und das Terminal ohne Entferne-Taste existiert schon lange nicht mehr. Der Autor fragt sich deshalb, warum dieses Problem noch immer existiert.]

Strg-ˆ == Strg-˜ == Strg-` == RS == 0x1e lassen sich mit einer europäischen Tastatur nicht eingeben, da alle drei Zeichen Prefixe sind. (Das heißt: sie sollten mit einem zweiten Zeichen kombiniert werden.) X11 hat diese inaktiven Tasten.

### Farbschemata

Konsole bietet jetzt konfigurierbare Farbschemata. Entsprechende Dokumentation ist noch nicht verfügbar.

### Zeichensätze

(Etwas überholt, siehe README.linux.console)

- Der VGA-Zeichensatz benutzt eine andere Codierung als die anderen Zeichensätze. Grafikzeichen und internationale Zeichen werden nicht unterstützt, wenn TERM=xterm gesetzt ist. Der Zeichensatz eignet sich am besten für dos(1) und ist auch mehr oder weniger nützlich für TERM=linux. Dieser Zeichensatz ist noch experimentell.

- Zeichensätze, die nicht aufgelistet sind, scheinen für Terminalanwendungen nicht nutzbar zu sein. Das liegt nicht am variablem Pitch (der experimentell unterstützt wird), sondern an fehlenden Grafikzeichen. Das läßt sich mit xfd(1x) überprüfen.

- Allgemein scheint eine geeignete Zeichensatzfamilie für Terminals zu fehlen. Bitte lassen Sie es den Autor wissen, wenn Ihnen ein geeigneter skalierbarer Zeichensatz bekannt sein sollte.

### Sicherheitsaspekte

Es ist möglich Konsole mit root-suid zu installieren. Davon wird jedoch abgeraten! Konsole gibt die Rechte sofort nach dem Start auf. Der "Secure keyboard"-Mechanismus von X11 ist nicht implementiert. Das bedeutet, daß andere Programme Tastenbetätigungen von Konsole auswerten können. Vorsicht vor trojanischen Pferden!

Konsole wendet nicht fchown(2) auf den Pseudo-tty an. Das bedeutet daß jemand (im Mehrbenutzerbetrieb) Ihre Root-Sitzung mitverfolgen kann. Für neuere Kernelversionen (2.1/2.2), wird Konsole solche Attacken zurückweisen. Um zu überprüfen ob ein System in dieser Hinsicht verwundbar ist, kann man folgendes ausprobieren:

    $ tty
    /dev/ttyp3

Unter einer anderen Benutzerkennung (nicht Root) nun folgendes eingeben:

`$ echo 'test' > /dev/ttyp3`

Erscheint der Text in der Konsole-Sitzung, dann ist die Sitzung nicht sicher.

Für UNIX-Versionen wird das Sicherheitsloch bald geschlossen. Die Lösung macht es aber erforderlich, daß Konsole mit root/suid installiert wird. Der Autor sieht ein, daß das nicht in jeder Situation möglich sein wird, sieht aber keine Alternative.

### Bekannte Probleme (konsole-0.8.6)

- Tasten des Ziffernblocks haben keinen Effekt, solange "Num Lock" nicht eingeschaltet wird. Dieses Verhalten wird von Qt bestimmt, alle Tasten werden mit Code &num;ffff wiedergegeben. Der Fehler liegt wahrscheinlich im eventFilter, der die Tastenbetätigungen auswertet.

- Die Datei TODO enthält Beschreibungen weiterer Probleme, die im Zusammenhang mit noch nicht implementierten Funktionen auftreten.

### Noch nicht verfügbare Funktionen

utmp Einträge

  utmp ist eine Datenbank, die wiedergibt, wer momentan im System arbeitet. Diese Information wird von Programmen wie who, finger, wall, talk usw. verwendet, um die Benutzer aufzulisten und anzuzeigen, wie sie kontaktiert werden können.

  Das ergibt wenig Sinn im Zusammenhang mit einem X Terminalemulator, da es nicht nur ein Terminal gibt, das alle Meldungen empfängt.

  Die richtige Lösung wäre, den utmp-Eintrag mit xdm oder kdm vorzunehmen. Außerdem sollte sich ein Meldungs- oder Chatprogramm automatisch öffnen, sobald X gestartet wird (z.B. ktalk). Auf diese Art wäre ein geeigneter Kommunikationskanal vorhanden.