[OpenBSD]

[FAQ-Index] [Zum Kapitel 6 - Vernetzung] [Zum Kapitel 8 - Allgemeine Fragen]

7 - Tastatur- und Bildschirmkontrollen


Inhaltsverzeichnis



7.1 - Wie kann ich die Tastatur neu belegen? (wscons)

Die meisten OpenBSD-Plattformen nutzen den wscons(4)-Konsolentreiber.

Bei wscons(4)-Konsolen werden die meisten Optionen mit dem Werkzeug wsconsctl(8) kontrolliert. Beispielsweise würde man die Tastaturbelegung mit Hilfe von wsconsctl(8) wie folgt ändern:

# wsconsctl keyboard.encoding=de

Im nächsten Beispiel werden wir die [CAPS LOCK]-Taste neu belegen; und zwar so, dass sie nun [STRG L] (die linke Steuerungstaste) ist:

# wsconsctl -w keyboard.map+="keysym Caps_Lock = Control_L"

7.2 - Wird die Maus auch unter der Konsole unterstützt?

Für die alpha-, amd64- und i386-Plattformen bietet OpenBSD den wsmoused(8) an - einer Portierung des FreeBSD moused(8). Er kann bei jedem Neustart automatisch aktiviert werden, indem du die passende Zeile in rc.conf.local(8) editierst.

7.3 - Auf den Scrollbackpuffer zugreifen (amd64, i386 und einige Alphas)

OpenBSD bietet auf einigen wenigen Plattformen einen sogenannten Konsolenscrollbackpuffer. Damit ist es möglich, Informationen zu sehen, die bereits wieder oben aus dem Bildschirm gescrollt sind. Um sich auf- und abwärts zu bewegen, benutze einfach die Tastenkombinationen [SHIFT]+[BILD AUF] und [SHIFT]+[BILD AB]

Der Standardscrollbackpuffer und somit auch die Anzahl der Seiten, die du so betrachten kannst, beträgt 8. Das ist eine Funktionalität des vga(4)-Treibers - daher funktioniert das alles natürlich nicht ohne VGA-Karte auf jeglichen Plattformen (viele Alpha-Systeme haben TGA-Video).

Wegen der Speicherbegrenzung unterstützen die Installationskernel keine Scrollbackfunktion. Ein Konsolenwechsel wird den Scrollbackpuffer löschen.

7.4 - Wie wechsle ich zwischen den Konsolen?(amd64, i386, Zaurus und einige Alphas)

Auf amd64, i386 und einigen Alphas mit vga(4)-Karte bietet OpenBSD sechs virtuelle Terminal an: /dev/ttyC0 bis /dev/ttyC5. Das Terminal ttyC4 ist für die Benutzung des X-Window-Systems reserviert, was noch fünf Textkonsolen übrig lässt. Du kannst zwischen ihnen hin- und herspringen, indem du die Tastaturkombinationen [STRG]+[ALT]+[F1], [STRG]+[ALT]+[F2], [STRG]+[ALT]+[F3], [STRG]+[ALT]+[F4] und [STRG]+[ALT]+[F6] benutzt.

Die X-Umgebung benutzt ttyC4: [STRG]+[ALT]+[F5]. Wenn du X benutzt, bringen dich die [STRG]+[ALT]+[Fn]-Tasten auf die Textkonsolen und [STRG]+[ALT]+[F5] bringt dich wieder auf die grafische Oberfläche.

Wenn du mehr als die standardmäßige Anzahl der Textkonsolen haben willst, kannst du den Befehl wsconscfg(8) benutzen, um Bildschirme für ttyC6, ttyC7 und weitere zu erzeugen. Zum Beispiel:

wsconscfg -t 80x25 6
Dieser Eintrag erzeugt ein virtuelles Terminal für ttyC6, welches man mit [STRG]+[ALT]+[F7] erreicht. Vergiss nicht, diesen Befehl deiner rc.local(8)-Datei hinzuzufügen, wenn der zusätzliche Bildschirm auch nach dem nächsten Neustart noch vorhanden sein soll.

Denk daran, dass du keinen login:-Prompt auf der neu erzeugten virtuellen Konsole erhältst, bis du sie in /etc/ttys(5) auf on setzt und entweder mit init(8) neustartest oder ein HUP-Signal mittels kill(1) sendest.

Auf dem Zaurus stehen standardmäßig zwei virtuelle Terminals (/dev/ttyC0 und /dev/ttyC1) zur Verfügung, die mit den Tastenkombinationen [ALT]+[CALENDAR] und [ALT]+[ADDRESS] erreicht werden können (Die [ALT]-Taste befindet sich rechts neben der linken [CTRL]-Taste).

7.5 - Wie kann ich eine Konsolenauflösung von 80 x 50 bekommen? (amd64, i386, paar Alphas)

Anwender der Architekturen amd64, i386 oder VGA-Alpha haben normalerweise eine Konsole mit 25 Zeilen und je 80 Buchstaben. Viele VGA-Grafikkarten sind aber in der Lage, eine höhere Textauflösung von 50 Zeilen mit 80 Buchstaben darzustellen.

Zunächst einmal kann man einen Font, der die gewünschte Auflösung unterstützt, mittels des Befehls wsfontload laden. Der standardmäßige Textbildschirm mit der Auflösung 80x25 benutzt 8x16-Pixelfonts; um die vertikale Auflösung zu verdoppeln, müssen wir 8x8-Pixelfonts benutzen.

Danach müssen wir die virtuelle Konsole löschen und in der gewünschten Auflösung neu erzeugen. Das machen wir mit dem Befehl wsconscfg.

Das kann während des Bootens automatisch am Ende deiner rc.local-Datei geschehen:

wsfontload -h 8 -e ibm /usr/share/misc/pcvtfonts/vt220l.808
wsconscfg -dF 5
wsconscfg -t 80x50 5
Wie bei jeder Änderung deiner Systemkonfiguration solltest du etwas Zeit mit den passenden Handbuchseiten verbringen, um zu verstehen, was diese Befehle eigentlich tun.

Die erste Zeile dort oben lädt den 8x8-Schriftsatz. Die zweite Zeile löscht den virtuellen Bildschirm Nummer 5 (den man mit [STRG]-[ALT]-[F6] erreichen würde). Die dritte Zeile erzeugt einen neuen Bildschirm 5 mit der Auflösung 50 Zeilen mit je 80 Buchstaben. Wenn du alles so gemacht hast, werden deine anderen virtuellen Bildschirme ganz normal im 80x25-Modus erscheinen; der neue Bildschirm 5 mit 80x50 ist mit [STRG]-[ALT]-[F6] erreichbar.

Denke daran, dass [STRG]-[ALT]-[F1] hier Bildschirm 0 ist. Wenn du die anderen Schirme auch ändern willst, wiederhole einfach die Schritte delete und add screen für jeden Bildschirm, den du mit 80x50 betreiben willst.

Du solltest aber Bildschirm 4 (ttyC4, [STRG]-[ALT]-[F5]) unverändert lassen, da dieser von X als grafischer Schirm genutzt wird. Außerdem ist es nicht möglich, die Auflösung des ersten Konsolendevices zu ändern (also ttyC0).

Selbstverständlich können all diese Befehle auch als root an der Konsole eingegeben werden - oder besser mittels sudo(8).

Hinweis: Das funktioniert nicht mit allen Grafikkarten. Dummerweise unterstützen nicht alle Grafikkarten die von wscons benötigten Schriftsätze für den 80x50-Textmodus. In diesen Fällen solltest du über den Einsatz von X nachdenken.

7.6 - Wie kann ich eine serielle Konsole benutzen?

Es gibt viele Gründe, warum du auf deinem OpenBSD-System eine serielle Konsole benutzen willst: OpenBSD unterstützt auf den meisten Plattformen eine serielle Konsole - die Details weichen aber stark ab.

Bedenke, dass serielles Arbeiten/Interfacing KEINE einfache Sache ist - du wirst oft ungewöhnliche Kabel benötigen und Schnittstellen sind oft nicht zwischen den Maschinen standardisiert und manchmal noch nicht mal auf einer einzelnen Maschine konsistent. Ein komplettes Tutorial über serielles Arbeiten/Interfacing geht zwar weit über die Möglichkeiten dieses Artikels hinaus, aber wir geben dir trotzdem einen guten Rat: Nur weil der Stecker hineinpasst, heißt das noch lange nicht, dass es auch funktioniert.

/etc/ttys-Änderung

Es gibt zwei Punkte, um eine funktionierende serielle Konsole unter OpenBSD zu erhalten. Erstens musst du OpenBSD haben, um deinen seriellen Port als Konsole für Statusausgaben und Singleuser-Modus benutzen zu können. Zweitens muss deine serielle Schnittstelle eingeschaltet sein, um als interaktives Terminal benutzbar zu sein, so dass ein Benutzer sich einloggen kann, wenn die Maschine im Multiuser-Betrieb läuft. Dieser Teil ist zwischen den verschiedenen Plattformen relativ gleich und wird hier besprochen.

Terminalsitzungen werden von der Datei /etc/ttys kontrolliert. Bevor OpenBSD dir auf der seriellen Konsole einen login:-Prompt serviert, musst du das ganze in /etc/ttys einschalten - normalerweise gibt es ja andere Verwendungen für die serielle Schnittstelle. Bei Plattformen, die normalerweise eine angeschlossene Tastatur und einen angeschlossenen Bildschirm haben, ist die serielle Konsole standardmäßig ausgeschaltet. Wir benutzen hier die i386-Plattform als Beispiel. In diesem Fall musst du die Zeile editieren, die wie folgt aussieht:

     tty00   "/usr/libexec/getty std.9600"   unknown off
Ist so zu ändern in, dass sie so ähnlich wie folgt aussieht:
     tty00   "/usr/libexec/getty std.9600"   vt220   on secure
Die serielle Schnittstelle ist in diesem Fall die Gerätedatei tty00, die wir als Konsole nutzen wollen. vt220 ist dabei der termcap(5)-Eintrag, der DEIN Terminal beschreibt (weitere häufig genutzte Optionen sind vt100, xterm etc.). Das on aktiviert das getty für die serielle Schnittstelle, sodass ein login:-Prompt präsentiert wird, die Option secure erlaubt ein root- (UID 0) Login auf dieser Konsole (das kann man wollen - oder auch nicht) und 9600 ist die Baudrate des Terminals. Du solltest dabei die Baudrate aber nicht auf den maximalen Wert stellen, der von deiner Hardware unterstützt wird, da eine solche Einstellung weitaus mehr Probleme als Nutzen verursachen wird. Die meisten System haben eine Standardgeschwindigkeit (liegt bei Boot-ROMs und/oder dem Bootloader meist bei 9600). Verwende diesen Wert, wenn du keinen guten Grund hast, einen anderen nutzen zu müssen.

Denke daran, dass du die serielle Konsole auch ohne diese Schritte für Installationen benutzen kannst, da das System im Singleuser-Modus läuft und getty gar nicht erst für den Login benutzt wird.

Auf einigen Plattformen und einigen Konfigurationen ist es notwendig, das System im Singleuser-Modus zu booten, damit die Änderungen durchgeführt werden können.

amd64 und i386

Um den Bootprozess dazu zu bewegen, die serielle Schnittstelle als Konsole zu verwenden, erzeuge oder editiere deine /etc/boot.conf-Datei, damit sie folgende Zeile enthält:
     set tty com0
Damit kannst du die erste serielle Schnittstelle als Konsole verwendest. Die Standardbaudrate ist 9600 bps, das kann mittels der stty-Option in /etc/boot.conf angepasst werden. Diese Datei wird auf deinem Bootlaufwerk abgelegt (kann auch deine Installationsdiskette sein); das Kommando kann aber ebenso gut am boot>-Prompt vom OpenBSD-Secondstage-Bootloader eingegeben werden, wenn es nur ein einziges Mal (oder zum ersten Mal) genutzt werden soll.

Hinweise für amd64 und i386:

SPARC und UltraSPARC

Diese Maschinen sind so entworfen worden, dass sie vollständig über eine serielle Konsole gewartet werden können. Entferne einfach die Tastatur von der Maschine und das System läuft über die serielle Konsole.

SPARC- und UltraSPARC-Hinweise

MacPPC

Die MacPPC-Maschinen sind durch OpenFirmware für die Benutzung mittels serieller Konsole vorbereitet. Benutze die folgenden Befehle:
     ok setenv output-device scca
     ok setenv input-device scca
     ok reset-all
 
Setze deine serielle Konsole auf 57600 bps, 8N1.

MacPPC-Hinweise

Mac68k

Die serielle Konsole wird im Booter-Programm ausgewählt (im "Options"-Pulldownmenü, dann "Serial Ports". Prüfe den "Serial Console"-Knopf, dann wähle die Modem- oder Druckerschnittstelle). Du wirst ein Macintosh-Modem oder -Druckerkabel an die serielle Schnittstelle des Macs anschließen müssen. Wenn das in Zukunft deine Standardeinstellung sein soll, musst du dem Booterprogramm sagen, dass es deine Optionen speichern soll.

Mac68k-Hinweise

7.7 - Wie schalte ich meine Konsole aus (Bildschirmschoner, wscons)?

Wenn du - auch ohne Benutzung von X - möchtest, dass sich deine Konsole nach einer gewissen Zeitspanne der Inaktivität ausschaltet, so kannst du die folgenden wscons(4)-Variablen ändern: Du kannst diese Variablen auf der Kommandozeile mittels des wsconsctl(8)-Befehls setzen:
     # wsconsctl display.screen_off=60000
     display.screen_off -> 60000
oder sie dauerhaft setzen, indem du sie in der Datei /etc/wsconsctl.conf einträgst, sodass sie beim nächsten Bootvorgang aktiviert werden:
     display.vblank=on               # enable vertical sync blank
     display.screen_off=600000       # set screen blank timeout to 10 minutes
     display.kbdact=on               # Restore screen on keyboard input
     display.outact=off              # Restore screen on display output
Der Bildschirmschoner wird entweder aktiv, wenn display.kbdact oder display.outact auf on gesetzt sind.

7.8 - ALLES, WAS ICH AM LOGINPROMPT SCHREIBE, IST IN GROSSBUCHSTABEN!

Tatsächlich ist das eine Funktionalität, kein Fehler.

Nahezu alle Unix-Befehle und -Benutzernamen werden in Kleinbuchstaben eingegeben. Trotzdem waren einige alte Terminals nur in der Lage Großbuchstaben zu benutzen, was es für sie unmöglich machte, für Unix benutzt zu werden. Als Umgehung des Problems hat getty(8), wenn du deinen Benutzernamen komplett in Großbuchstaben eingegeben hast, angenommen dass dein Terminal »lowercase challenged« sei und hat einfach alles, was du getippt hast, als Kleinbuchstaben interpretiert, es allerdings alles in Großbuchstaben ausgegeben. Wenn du ein gemischtes oder Nur-Großbuchstaben-Passwort hast, kannst du dich nicht einloggen.

Wenn du [STRG]-D am Loginprompt drückst, wird getty(8) beendet und init(8) wird einen neuen starten, der dann Groß- und Kleinbuchstaben sauber akzeptiert.

7.9 - Was ist tmux?

Für diejenigen, die mit dem Programm »screen«, das als Paket angeboten wird, vertraut sind, oder mit window(1), das sich im Basissystem befindet, mag jene Antwort am einfachsten sein, die besagt, dass tmux(1) viele Funktionen von screen und window, und darüber hinaus viele weitere besitzt.

Für jene, die mit den genannten Programmen nicht vertraut sind, ist tmux ein Terminal-Multiplexer. Dies ist ein Programm, dass es einer Anzahl von Programmen erlaubt, denselben Bildschirm für Eingabe und Ausgabe zu benutzen. In tmux wird eine solche Kollektion von Programmen »session« (Sitzung) genannt, wobei jedes Programm in einem tmux »window« (Fenster) läuft.

Zusätzlich zum Teilen des Terminals erlaubt es tmux, eine Sitzung und ihre Fenster von der Bildschirmausgabe zu trennen, sie damit einfach im Hintergrund weiterlaufen zu lassen, und sie später wieder an dieselbe, oder aber eine andere Konsole »anzuhängen«. Eine Sitzung kann manuell oder durch ein unerwartetes Ereignis, wie zum Beispiel einer Unterbrechung des Netzwerks, getrennt werden, in jedem Falle aber bestehen die Programme fort und laufen weiter wie normal.

tmux besitzt ebenfalls viele andere Eigenschaften wie zum Beispiel die Aufteilung des Fensters in verschiedene Sektionen (»panes« genannt; auf Deutsch: Feld), einer Historie der Bildschirmausgabe jedes Fensters, konfigurierbaren Tastenkombinationen und der Sperrung des Terminals. Weitere Informationen offenbart ein Blick in die tmux(1)-Handbuchseite.

Wie benutze ich tmux?

Der erste Schritt ist, tmux zu starten:

$ tmux

Dies startet eine neue tmux-Instanz mit einer einzigen neuen Sitzung (»0« genannt), und erzeugt einen Klienten, der auf dem Bildschirm dargestellt wird. Der größte Teil des Bildschirms wird ein Fenster mit einem Shell-Prompt zeigen, und es ist zu sehen, dass die letzte Zeile durch eine Statuszeile eingenommen wird. Letztere zeigt linkerhand den Namen der Sitzung in eckigen Klammern, den Fenstertitel (für Shells normalerweise leer) und die Uhrzeit auf der rechten Seite, und in der Mitte eine Übersicht der aktuell geöffneten Fenster. In dieser neuen Sitzung wird die Liste der aktuell geöffneten Fenster nur einen Eintrag aufweisen, zum Beispiel:

0:ksh*

Ein kurzer Einschub hinsichtlich Terminals: unter OpenBSD werden Anwendungen auf die Möglichkeiten des Terminals mit Hilfe der Umgebungsvariable TERM aufmerksam gemacht. Diese ist auf den Namen eines Eintrags der terminfo(5)-Datenbank gesetzt und erzählt dem Programm das das Terminal, zum Beispiel, Farbe unterstützt, oder die Möglichkeit des Einschubs von Zeilen besitzt, oder viele andere Dinge. Ein wichtige Anmerkung ist, dass der »xterm«-Eintrag der Datenbank keinerlei Farbunterstützung hat, sodass tmux in xterm standardmäßig keine Farbe benutzt. TERM sollte auf »xterm-xfree86« gesetzt werden, wenn Farbunterstützung gewünscht wird (die »XTerm*termName« X-Ressource kann als Eintrag in der Datei .Xdfaults dazu benutzt werden, dies für alle xterms zu setzen). Es ist außerdem wesentlich, dass TERM in den Shells, die innerhalb von tmux gestartet werden, auf »screen« gesetzt ist, da sonst von diesen gestartete Programme eventuell keine korrekte Bildschirmausgabe produzieren - tmux setzt diesen Wert selbst, aber es sollte darauf geachtet werden, dass er in den Shell-Startdateien nicht überschrieben wird.

Um zu der Statuszeile zurückzukommen - die Nummer »0« ist die Indexzahl des Fensters, »ksh« sein Name und das »*« indiziert, dass dies das aktuell dargestellte Fenster oberhalb der Statuszeile ist. Jedwede Eingabe wird zu der Shell durchgereicht, und jedwede Ausgabe dargestellt. Zum Beispiel, startet man »top«:

$ top

Es wird laufen wie normal, und den Bereich des Bildschirms oberhalb der Statuszeile okkupieren. Dir wird auch auffallen, dass sich der in der Statuszeile dargestellte Fenstername von »ksh« zu »top« geändert hat - tmux benennt Fenster so um, dass ihr Name den des gerade laufenden Programms reflektiert.

Stellen wir uns vor, dass du tmux vom Bildschirm loslösen, und zu der ursprünglichen Shell zurückkehren willst, von der es gestartet wurde. Eine tmux-Sitzung kann durch das gemeinsame Drücken der Tasten Ctrl (Steuerungstaste) und b, gefolgt von der d-Taste vom Bildschirm losgelöst werden. Die Ctrl-b Tastenkombination (in tmux und seiner Handbuchseite zu einem einfachen »C-b« verkürzt) ist unter dem Namen »prefix key« (Präfixtaste) bekannt und wird benutzt, um tmux zu zeigen, das die nächste Taste, die gedrückt wird, als Instruktion interpretiert werden soll, anstatt sie zu dem im Fenster laufenden Programm durchzureichen.

Nach dem Drücken von Ctrl-b d und der Rückkehr an den Shell-Prompt kann die tmux-Sitzung mit Hilfe des »attach«-Kommandos wieder verbunden werden:

$ tmux attach

Die tmux-Sitzung wird wieder erscheinen, und die Statuszeile und »top« werden immer noch vergnügt laufen. (Startest du stattdessen tmux ohne Argumente, so wird eine zweite Sitzung erzeugt, die den Namen »1« tragen wird.)

Als Nächstes lass uns ein zweites Fenster erzeugen. Dies wird mit Hilfe der »c«-Taste gemacht: drücke die Präfixtaste Ctrl-b, gefolgt von der »c«-Taste. Ein neues Fenster wird erzeugt und wieder wird ein Shell-Prompt auf dem Bildschirm dargestellt. Die Statuszeile wird dahingehend aufgefrischt, um das neue Fenster zu zeigen:

0:top- 1:ksh*

Der »-« nach dem »top« zeigt »das vorherige aktuelle Fenster« (das letzte Fenster) an. Ein erneutes Ctrl-b c erzeugt eine andere neue Shell:

0:top  1:ksh- 2:ksh*

Es gibt verschiedene Kommandos um zwischen Fenstern hin- und herzuschalten. Von Fenster 2 aus kann man zum vorherigen Fenster, Nummer 1, wechseln, indem man Ctrl-b p (»previous«, vorheriges) eingibt. Ctrl-b n (»next«, nächstes) schaltet zum nächsten Fenster; In diesem Falle gibt es kein Fenster 3, sodass die Zählung von vorne beginnt und somit Fenster 0 das aktuelle Fenster wird. Man kann auch Ctrl-b w (»windows«, Fenster) drücken um ein interaktives Menü der offenen Fenster zu erhalten, Ctrl-b l (»last«, letztes) um zum letzten (das mit »-« markierte) Fenster, oder Ctrl-b 0 um Fenster 0 direkt anzuspringen, Ctrl-b 1 für Fenster 1 und so weiter bis einschließlich Ctrl-b 9 für Fenster 9. Also, um zurück zu »top« in Fenster 0 zu gelangen, kann man es entweder mit Ctrl-b 0 direkt anspringen, oder mit zweimal Ctrl-b p in zwei Schritten über Fenster 1 hinweg erreichen, oder von Fenster 2 aus durch Ctrl-b n eine neue Zählung erzwingen und dadurch bei 0 landen, oder aber man drückt Ctrl-b w und wählt Fenster 0 aus der Liste aus.

Manchmal möchte man auch ein Fenster erzeugen in dem ein Programm direkt läuft, ohne das zuerst eine Shell gestartet wird. Dies kann vom tmux Kommandoprompt aus erreicht werden. Das Drücken der Tastenkombination Ctrl-b : verwandelt die Statuszeile in einen »:«-Prompt, an dem Kommandos eingegeben werden können. Alle von tmux unterstützten Kommandos werden auf der Handbuchseite dokumentiert. In diesem Fall wird das Kommando »new-window« benötigt. Jedes Kommando besitzt ein Kürzel, das an seiner statt benutzt werden kann, für »new-window« ist dies »neww«. Also, um ein Fenster zu erzeugen in dem tetris(6) läuft, tippe:

neww tetris

Dieses neue Fenster wird geschlossen, wenn sich tetris beendet, oder kann zwingend mit der Tastenkombination Ctrl-b & vernichtet werden. Letzteres wird zuerst eine Bestätigung verlangen, und, wenn gegeben, das Fenster schließen und das darin laufende Programm beenden.

Ein weiterer häufiger Wunsch ist die Umbenennung eines Fensters. Die kann mit der Tastenkombination Ctrl-b , geschehen. Die Statuszeile wird sich in einen »(rename-window)«-Prompt ändern, an dem der neue Name eingegeben werden kann. Das umbenennen eines Fensters schaltet das automatische Umbenennen für dieses Fenster aus; um diese Eigenschaft wiederzuerlangen, muss mit der Tastenkombination Ctrl-b : der Kommandoprompt aktiviert- und Folgendes eingegeben werden (mehr über die Bedeutung im nächsten Abschnitt):

setw -u automatic-rename

Ein weitere wichtige Tastenkombination ist es wert, erinnert zu werden: Ctrl-b ?. Diese zeigt eine Liste aller tmux Tastenkombinationen und der Kommandos, die sie ausführen. Zum Beispiel zeigt Ctrl-b ?, dass die Taste c an das Kommando »new-window« gebunden ist, und die Taste n an das Kommando »next-window«.

tmux konfigurieren

Viele Benutzer wollen die Art, wie tmux aussieht oder sich verhält, an ihre Bedürfnisse anpassen. Dies geschieht mit Hilfe der Konfigurationsdatei ~/.tmux.conf. Diese Datei enthält eine Liste von tmux-Kommandos, die ausgeführt werden, wenn tmux ursprünglich gestartet, also bevor die erste Sitzung erzeugt wird. Alle tmux-Kommandos werden auf der Handbuchseite dokumentiert, aber einige geläufige Beispiele, die du vielleicht in deiner Konfigurationsdatei haben möchtest, werden weiter unten diskutiert.

Der geläufigste Bedarf besteht im Setzen von Optionen. Es gibt zwei Optionstypen in tmux: Sitzungsoptionen und Fensteroptionen. Sitzungsoptionen kontrollieren das Verhalten einer Sitzung, und Fensteroptionen das einzelner Fenster. Für beide gibt es eine Anzahl globaler Optionen. Wenn sich tmux für einen Optionswert zwischen dem einer Sitzung und dem eines Fensters entscheiden muss, so wird es den lokalen Wert für dieses Fenster vorziehen, und nur dann den globalen Wert benutzen, wenn kein lokaler gefunden wurde.

Sitzungsoptionen werden mit dem Kommando »set-option« (Alias: »set«), und Fensteroptionen mit dem Kommando »set-window-option« (Alias: »setw«) gesetzt. Um eine globale Option zu setzen, benutze die »-g« Kommandooption; fehlt diese, so wird die Option für das aktuelle Fenster oder die aktuelle Sitzung gesetzt. Diese Kommandos akzeptieren auch wenige andere Optionen, wie z. B. »-u«, dass eine lokale Option löscht und es damit einem Fenster oder einer Sitzung erlaubt, wieder die globale Option zu erben.

In der Konfigurationsdatei ist es üblich, globale Optionen zu setzen. Lass uns einen Blick auf einige Beispiele werfen, die die Statuszeile anpassen:

set -g status-bg blue
set -g status-right '#(sysctl vm.loadavg)'
setw -g window-status-current-attr underscore

Schreibt man diese drei Kommandos in .tmux.conf und startet tmux danach neu, so ändert sich der Hintergrund der Statuszeile auf blau, wird der Systemauslastungsdurchschnitt auf der rechten Seite dargestellt, und außerdem wird das aktuelle Fenster unterstrichen. Die Statuszeile kann auch komplett ausgeschaltet werden:

set -g status off

Es existiert eine große Anzahl anderer Optionen; eine weitere Praktische ist der Wechsel hin zu vi(1)-ähnlichen Tastenkombinationen am Kommandoprompt und in der Fensterliste und anderen interaktiven tmux-Modi:

set -g status-keys vi
setw -g mode-keys vi

Die aktuell gesetzten Optionen und ihre Werte kann man mit den Kommandos »show-options« und »show-window-options« auflisten. Wie die »set«-Kommandos auch akzeptieren diese die Option »-g« zum Zugriff auf die globalen Optionen.

Ein weitere geläufige Aufgabe für die Konfigurationsdatei ist das Hinzufügen von, oder das Modifizieren bestehender Tastenkombinationen für tmux, dass heißt der Kommandos, die nach dem Drücken von Ctrl-b zusammen mit einer weiteren Taste ausgeführt werden. Diese werden mit dem Kommando »bind-key« (Alias: »bind«) hinzugefügt oder geändert, und mit dem Kommando »unbind-key« (Alias: »unbind«) entfernt. Zwei Beispiele für »bind-key« sind:

bind C-d detach
bind / neww 'exec top'

Die erste Zeile erzeugt eine Bindung zwischen Ctrl-b Ctrl-d und der Loslösung von tmux von dem Bildschirm, identisch der standardmäßigen Ctrl-b d, und die zweite verknüpft Ctrl-b / mit dem Erzeugen eines neues Fensters, in welchem »top« ausgeführt wird.

Viele Leute möchten einen anderen Präfix anstelle von Ctrl-b haben. Dies kann dadurch erzielt werden, dass sowohl die »set-option« als auch die Tastenkombinationskommandos benutzt werden, um die Präfixtastenoption dergestalt zu ändern, dass das zweimalige Drücken auch weiterhin den Originalwert an das Fenster durchreicht. Um den Präfix auf Ctrl-a zu ändern:

set -g prefix C-a
unbind C-b
bind C-a send-prefix

Die letzte nützliche Sache, die man in der Konfigurationsdatei machen kann, ist das Erzeugen einer anfänglichen Reihe von Fenstern, wenn tmux startet. Dies ist ein wenig komplizierter als die vorangegangenen Beispiele. In tmux müssen Sitzungen Fenster haben, und ohne Sitzung können keine Fenster erzeugt werden. Das heißt, um in der Konfigurationsdatei Fenster zu erzeugen, muss es zuerst eine Sitzung geben, der sie zugeordnet werden können. Zum Beispiel (beachte, dass »new« der Alias für das Kommando »new-session« ist):

new -d 'exec top'
neww -d
neww -d

Diese Kommandos erzeugen zuerst eine neue Session, in deren erstem Fenster »top« läuft, und danach zwei weitere Fenster. Die »-d«-Optionen weisen tmux an, weder zu versuchen, die neue Session an den Bildschirm anzuhängen, noch die neuen Fenster zu aktuellen Fenstern zu machen. Bevor man diese Zeilen in die .tmux.conf schreibt, sollte ein weiteres Problem bedacht werden. Wenn man tmux ohne Argumente startet, so führt es das Kommando »new-session« aus, sodass ein per »tmux« von der Shell gestartetes tmux aus der Konfigurationsdatei die Anweisung erhält, eine Sitzung zu starten, wonach das gestartete tmux ebenfalls eine andere Sitzung erzeugt, sodass in diesem Fall am Ende zwei Sitzungen existieren. Um dies zu vermeiden, sollte tmux mit »tmux attach« gestartet werden, wenn eine Sitzung aus der Konfigurationsdatei heraus erzeugt werden soll - dies bedeutet, dass es die Sitzung aus der .tmux.conf erzeugt und sich danach sofort an sie anhängt, ohne eine zweite Sitzung zu starten.

Fortgeschrittene Benutzung von tmux

Dieser Abschnitt behandelt kurz einige der eher fortgeschrittenen Möglichkeiten, die tmux bietet. Lies die Handbuchseite für weitere Informationen.

In tmux kann man zwischen Fenstern das Kopieren und Einfügen von Text durchführen. Dazu muss der Text im Kopiermodus kopiert, und dann mit dem Einfügekommando eingefügt werden. Um in den Kopiermodus zu gelangen, benutze Ctrl-b [. Im Kopiermodus (mit der Fensteroption »mode-keys« gesetzt auf »emacs«, siehe Handbuchseite für »vi«-Tastenkombinationen) ermöglichen die Pfeiltasten eine Positionierung des Cursors, Ctrl-Space (Leertaste) beginnt die Selektion und Ctrl-w kopiert. Man kann den Cursor ebenfalls mit Page up (Seite hoch), Page down (Seite runter), Ctrl-a und Ctrl-e bewegen. Drücke g oder Escape, um den Kopiermodus zu verlassen. Danach wird Ctrl-b ] den kopierten Text in das aktuelle Fenster einfügen, als ob man ihn direkt getippt hätte.

tmux läßt sich ganz gut mit Skripten steuern, und die meisten Kommandos, die am Kommandoprompt eingegeben, oder über eine Tastaturkombination abgerufen werden können, können ebenfalls von einer Shell aus benutzt werden. Beinahe alle tmux-Kommandos akzeptieren ein optionales Argument »-t« zur Spezifizierung einer Sitzung oder eines Fensters als Kommandoziel. Zum Beispiel wird dieses Kommando:

$ tmux kill-window -t0:1
das Fenster 1 der Sitzung 0 vernichten. Und:
$ tmux new-window -tmysession

erzeugt ein neues Fenster in der Sitzung mit Namen »mysession«. Viele Kommandos akzeptieren andere Argumente, zum Beispiel akzeptiert das Kommando »new-window« eine Option »-n« zur Benennung des neuen Fensters, und »new-session« akzeptiert verschiedene Argumente zur Spezifizierung von Attributen für das Fenster, das mit der Sitzung erzeugt wird. Diese Argumente können ebenfalls benutzt werden, wenn ein Kommando an eine Tastenkombination gebunden-, oder vom Kommandoprompt aus benutzt wird.

Ein weiteres nützliches Merkmal ist die Möglichkeit, ein einfaches Fenster in mehrere Sektionen aufzusplitten, die »pane« (Feld) genannt werden. Mit der Tastenkombination Ctrl-b " kann man Fenster vertikal (von oben nach unten) aufteilen. Ein Feld kann nach oben oder unten mit den Tastenkombinationen Ctrl-b Alt-Up (Meta und Pfeil-hoch) und Ctrl-b Alt-Down (Meta und Pfeil-runter) in der Größe verändert, und das aktive Feld mit Ctrl-b o gewechselt werden. Zusätzlich kann ein Fenster, das derart aufgeteilt wurde, in eine Reihe fester Layouts überführt werden, durch welche man mit der Tastenkombination Ctrl-b Space (Leertaste) durchwechseln kann; jedoch können Felder in einem solchen Layout nicht in der Größe verändert werden. In -current wurde das Aufteilen erweitert, und unterstützt nun auch die horizontale Aufteilung (Ctrl-b %); ebenfalls wurden die festen Layouts geändert, sodass sie nun einmal (mit denselben Ctrl-b Space Tasteneingaben) angewendet aber danach frei sowohl in der Größe, als auch horizontal und vertikal verändert werden können.

[FAQ-Index] [Zum Kapitel 6 - Vernetzung] [Zum Kapitel 8 - Allgemeine Fragen]


[back] www@openbsd.org
$OpenBSD: faq7.html,v 1.70 2012/04/16 00:11:30 ajacoutot Exp $