This article was published in the 04/2004 issue of the printed version of LinuxUser(04/2004). It's really first due to publish online in March 2005, but it's brought here by courtesy of LinuxUser magazine.

Textfenster einstellen mit Xtermcontrol

Klare Fenster

von Oliver Frommel
 [ Titelbild ]


X-Terminals lassen sich auf vielfältige Weise einstellen. Die Software xtermcontrol hilft dabei, ohne dass sich der Anwender die sonst nötigen Spezialzeichen merken muss.

Wer trotz Desktop viel textorientiert arbeitet, verliert leicht den Überblick, denn alle Fenster sehen gleich aus: eine einfarbige Textfläche mit einer Titelleiste. In Gnome heißt ein solches Fenster Gnome-Terminal, bei KDE Konsole, doch der Urahn aller Terminalfenster ist das X-Terminal, kurz Xterm.

Die Mutter aller Terminals

Ein Xterm lässt sich auf vielfältige Weise einstellen, beispielsweise seine Farben, Schriften oder die Titelleiste. Damit heben sich Fenster optisch voneinander ab und vereinfachen die Orientierung auf dem Desktop.

Leider braucht man dafür komplizierte Befehle in Form von Escape-Sequenzen. So lautet das Kommando, um die Titelleiste in "Mailserver" zu ändern:

echo -e "\033]0;Mailserver\007"
Die Option -e sorgt dafür, dass der echo-Befehl neben einige anderen Spezialzeichen auch Oktalzahlen versteht und richtig auswertet. Die Oktalzahl "\033" steht im Beispiel für das [Esc]-Zeichen, das nicht mittels eines einfachen Buchstabens ausgedrückt werden kann.


Terminal: Ein begriffliches Erbe aus der Unix-Steinzeit, in der noch zwischen dem eigentlichen Rechner und daran angeschlossenen, dummen Bedienungsstationen unterschieden wurde, eben den Terminals. Überreste davon finden sich noch heute in den Bezeichnungen für die virtuellen Terminals, die Linux im Textmodus besitzt, und die entsprechenden X-Terminalfenster der grafischen Oberfläche.
Escape-Sequenzen: Steuern bei echten oder virtuellen Terminals die Ausgabe. Um diese Steuerzeichen im Fluss der normalen Zeichen kenntlich zu machen, wird ihnen ein Escape-Zeichen (ESC) vorangestellt.

Analog färbt der Befehl echo "\[\033[0;34m\]" die Schrift im Xterm blau ein. Sich solche Zeichenfolgen zu merken ist kein Spaß, zumal Xterms eine ganze Menge von diesen verstehen [1].

Gedächtnisstütze

Das Programm Xtermcontrol schafft Erleichterung. Es existiert nur zu dem Zweck, die wichtigsten Eigenschaften von X-Terminals bequemer zu kontrollieren. Statt kryptischer Zeichen nutzt Xtermcontrol für Menschen verständliche Optionen und übersetzt sie in die Sprache der Xterms. Xtermcontrol lässt sich recht einfach installieren. Eine genaue Anleitung dafür finden sie in Kasten 1.

Kasten 1: Installation

Das RPM installieren Sie (unter Suse oder Red Hat) als root mit

rpm -i xtermcontrol-2.3-1.i586.rpm

Es ist auch nicht sehr schwer, Xtermcontrol selbst zu kompilieren, da es nur von wenigen anderen Paketen abhängt. Dazu müssen auf ihrem System -- neben einem Compiler -- lediglich die X-Entwicklungspakete installiert sein.

Nach dem Download entpacken Sie die Datei:

tar xfz xtermcontrol-2.3.tar.gz

Dann kompilieren Sie das Programm mit:
cd xtermcontrol-2.3
./configure
make
und installieren es:
su
make install

Die Ziele der obigen Beispiele erreicht Xtermcontrol einfacher:

xtermcontrol --title "Server-Login"
ändert die Titelleiste, während dieser Befehl die Farbe der Schrift einstellt (Abbildung 1):
xtermcontrol --fg red
Sollte das nicht ganz klappen, überprüfen Sie die verdächtige Umgebungsvariable mit echo $PROMPT_COMMAND (siehe Kasten 2).

Abb. 1: Ein Xterm vor und nach dem Einsatz von Xtermcontrol.

So wie das Programm diese Werte setzt, liest es sie analog auch aus, beispielsweise mit den Parametern --get-title und --get-fg. Xtermcontrol bietet Optionen für die wichtigsten Einstellungen wie Farben, Titeltext und Schriftart. Darüber hinaus kann es Xterms auch verkleinern, vergrößern oder ikonifizieren. Die wichtigsten Parameter sind in Tabelle 1 aufgeführt. Eine vollständige Liste finden sie auf der Homepage des Programms [2].

Tabelle 1: Wichtige Xtermcontrol-Optionen
--geometry Stellt die Größe des Fensters ein, im einfachsten Fall stehen nach dem folgenden Gleichheitszeichen Breite und Höhe, getrennt durch ein x, z.B. --geometry=640x480.
--fg Setzt die Schriftfarbe, über Farbnamen oder -codes, z.B. --fg=blue oder --fg=#0000ff
--bg Stellt die Hintergrundfarbe ein, vergleiche --fg
--title Ändert die Titelleiste des Fensters auf den angegebenen Text, z.B. --fg="Dies ist ein Xterm"
--font Teilt dem Fenster eine Schriftart zu, die der Anwender als X Font Name angibt, also in seiner kompletten Form (z.B. -sony-fixed-medium-r-normal--0-0-100-100-c-0-iso8859-1) oder als Kurzname wie micro

Schriften finden

Der Umgang mit Schriften in der X-Window-Umgebung ist trotz Xtermcontrol nicht ganz einfach. Denn wer dem Xterm eine neue Schrift (engl. Font) verpassen will, muss erst mal wissen, wie sie heißt. Diese Namen sind allerdings recht sperrig und enthalten bis zu 14 Elemente, die durch Bindestriche getrennt sind und Eigenschaften wie Schriftfamilie, Pixelgröße und Auflösung enthalten (vgl. Tabelle 1). Zum Glück gibt es für einige Schriften Kurznamen, die fehlerträchtiges Abtippen ersparen. Einen Überblick über die verfügbaren Schriften erhalten sie mit den Befehlen xlsfonts und xfontsel

Mit diesen Fontnamen und dem Parameter --font können Sie auf der Kommandozeile experimentieren bis sie die passende Schrift gefunden haben. Für permanente Einstellungen liest Xtermcontrol die Konfigurationsdatei ~/.xtermcontrol mit Schlüsselwörtern, die die Anwenderin leicht selbst erstellen und editieren kann.

Kasten 2: Regelmäßige Ausführung in der Bash

Die Standard-Shell unter Linux ist die bash. Sie besitzt gegenüber einfacheren Shells einige praktische Features: Sie ermöglicht es, durch die früher eingegebenen Befehle zu scrollen (command history) oder vervollständigt die Eingabe bei der textbasierten Navigation durchs Dateisystem, wenn der Benutzer [Tab] drückt (path completion).

Einige Einstellungen der Bash lassen sich über Umgebungsvariablen einstellen. Den aktuellen Prompt (deutsch Eingabeaufforderung) setzen Sie beispielsweise über die Variable PS1. Die Umgebungsvariable PROMPT_COMMAND ist für Befehle gedacht, die die Shell vor jeder Ausgabe eines Prompts ausführt. Stehen hier Kommandos, die Eigenschaften des Xterms ändern, werden Ihre Versuche mit Xtermcontrol vergeblich sein, denn jede Änderung wird durch das PROMPT_COMMAND überschrieben. Sie können die Variable für das aktuelle Terminal löschen:

unset PROMPT_COMMAND
Dauerhaft ändern Sie die betreffende Einstellung indem Sie mit einem Editor die Ressource-Dateien der bash bearbeiten -- entweder Ihre persönlichen ($HOME/.bashrc, $HOME/.bash_profile) oder die systemweiten (/etc/profile, /etc/bash_profile oder ähnliche je nach Distribution).

Xterms programmieren

Fortgeschrittene Benutzer können Xtermcontrol in Shell- oder Loginskripts einbauen. Listing 1 zeigt wie Xtermcontrol für das Login auf dem Mailserver eine neue Schriftfarbe einstellt und diese nach dem Logout wieder zurücksetzt. Die Befehle der Funktion mailserver arbeitet die Shell ab, wenn Sie ihren Namen auf der Kommandozeile eintippen. Damit das funktioniert, müssen Sie die Zeilen des Listings in eine der Ressource-Dateien der Bash eingetragen haben (siehe Kasten 1).

Zuerst setzt die Funktion wieder Titelzeile und Schriftfarbe, und loggt sich dann auf dem Server ein. Erst nach dem Ausloggen arbeitet die Shell das letzte xtermcontrol ab, das die Standardeinstellungen der ~/.xtermcontrol wieder herstellt.

Listing 1: Xtermcontrol in der ~/.bashrc
mailserver() {
        xtermcontrol --title "electronic mail"
        xtermcontrol --fg red
        ssh mailserver
	xtermcontrol
}

So lassen sich mit einfachen Mitteln auch kompliziertere Einstellungen an den eigenen Terminalfenstern programmieren -- Xtermcontrol macht es möglich. Wichtig ist nur, ein echtes Xterm zu verwenden, denn das zeigt sich trotz seines Alters flexibler als seine modernen Nachfolger. (ofr)

Infos

[1] Xterm-Kontrollsequenzen: http://www.xfree86.org/current/ctlseqs.html
[2] Xtermcontrol: http://www.thrysoee.dk/xtermcontrol/