Screen erleichtert die Arbeit mit verschiedenen Shells und Konsolentools. Wir zeigen Ihnen Tricks und Kniffe, um mit dem Terminal-Multiplexer noch komfortabler zu arbeiten.
Vor dem Rundumschlag mit Screen sei eine Frage gestattet: Spielen Sie gelegentlich Nethack [1], ein altes Dungeons&Dragons-Game, das vorwiegend mit ASCII-Grafik in der Textkonsole läuft und zu Unrecht beinahe vergessen ist? Falls nein, dann öffnen Sie bitte die lokale Konfigurationsdatei ~/.screenrc und vermerken dort zur Sicherheit folgende Variable:
nethack off
So sollte es eigentlich per Vorgabe schon dort stehen – aber oftmals ist der Teufel ein Eichhörnchen, und so gehen Sie auf Nummer Sicher. Ein nethack on hat zur Folge, dass das Programms statt verständlicher Meldungen wie Window 1 is now being monitored for all activity launige Warnungen à la You feel like someone is watching you… ausgibt. Das sorgt zwar für einen gewissen Unterhaltungswert, aber nur selten für Klarheit. Deshalb empfiehlt es sich insbesondere für Einsteiger, die Nethack-Option abzuschalten. Wir zitieren im Folgenden ausschließlich die normalen Meldungen des Programms.
Schnappschuss im Fenster
Interessante Möglichkeiten bietet die Hardcopy eines Screen-Fensters. Sei es die Ausgabe der Shell oder eines Programms in der Textkonsole – der Terminal-Multiplexer “knipst” den Inhalt wie einen Screenshot und hinterlegt ihn zum weiteren Bearbeiten in einer Textdatei. Um ein Fenster zu knipsen, benutzen Sie die Tastenkombination [Strg]+[A],[H].
Nach Eingabe von [Strg]+[A],[H] legt Screen in der Datei hardcopy.n im aktuellen Arbeitsverzeichnis den Inhalt des Fensters ab. Die Ziffer n bezeichnet dabei das gewählte Fenster: Eine Kopie des ersten Fensters landet also in hardcopy.1, ein Ausdruck von Fenster Fünf in hardcopy.5 und so weiter.
Möchten Sie der Hardcopy einen anderen Namen geben, erledigen Sie das in der Kommandozeile von Screen. Diese erreichen Sie über [Strg]+[A],[:]. In die Eingabezeile, die sich hinter dem Doppelpunkt öffnet, tippen Sie hardcopy Dateiname und bestätigen den Befehl mit [Eingabe]. Nun lautet der Name des Screenshots Dateiname.
Über eine Zeile in der Datei ~/.screenrc weisen Sie Screen bei Bedarf an, alle Hardcopies an zentraler Stelle zu lagern:
hardcopydir Verzeichnis
Von nun an laden sämtliche Bildschirmschnappschüsse des Programms nicht mehr im aktuellen Arbeitsverzeichnis, sondern im Ordner Verzeichnis.
Sonderzeichen
Ein weiterer Vorteil liegt in der systemunabhängig einheitlichen Eingabe von diakritischen Zeichen – bei Screen heißen sie “digraphs”. Dahinter verbergen sich Kombinationen zweier Zeichen, die als Einheit erscheinen: Das Zeichen ï, ein so genanntes Trema wie im französischen Wort “égoïste”, findet sich in der Regel nicht auf der deutschen Tastatur. Um es trotzdem zu schreiben, hilft Ihnen Screen, indem es den Buchstaben i und ein Anführungszeichen zu einem Zeichen vereint.
Sie erreichen dies mit dem Tastenbefehl [Strg]+[A],[Strg]+[V]. In der Kommandozeile des Programms erscheint daraufhin der Prompt Enter digraph:. Hier ergänzen Sie i", drücken [Eingabe], und an der Cursorposition im aktuellen Fenster, in dem zum Beispiel ein Texteditor wie Vim läuft, erscheint darauf hin das oben genannte Trema. Falls Sie an einer US-Tastatur ohne Umlaute sitzen, hilft Ihnen Screen durch ein simples Tastaturkürzel schnell aus der Klemme. Die Hilfeseite man screen zeigt Ihnen eine gute Vorlage:
bindkey ^K digraph '"'
Nachdem Sie diese Zeile in die die ~/.screenrc eingetragen haben, genügt ein Druck auf die Tasten [Strg]+[K],[A] um ein ä zu erzeugen.
Copy & Paste
Neben diakritischen Zeichen beherrscht Screen auch Copy & Paste – unabhängig davon, welches Programm gerade in einem seiner Fenster läuft. Um einen Bereich des Fensters zu kopieren, drücken Sie die Tasten [Strg]+[A],[Strg]+[AltGr]+[ 8] oder [Strg]+[A],[Esc]. Jetzt bewegen Sie den Cursor mittels der Pfeiltasten oder mit [H],[J],[K] und [L] frei über die Fläche der Konsole. Unten in der Fußleiste des Programms erscheint die Nachricht Copy Mode.
Um den Anfang des zu kopierenden Textes zu markieren, drücken Sie die Leertaste. Screen hebt den Bereich, den Sie mit dem Cursor überstreichen, nun hervor. Ein weiterer Druck auf die Leertaste markiert das Ende des Texts und befördert diesen in den Puffer. Mit den Tasten [Strg]+[A],[Strg]+[AltGr]+[ 9] fügen Sie den Schnipsel in ein beliebiges Fenster ein.
Bildschirmschoner
Wie ein Windowmanager unter X bietet auch Screen einen Bildschirmschoner – beziehungsweise ein externes Programm, das es im Ruhezustand ausführt. Es gibt verschiedene Programme, die sich von Haus aus dafür eignen: zum Beispiel Cmatrix, Clockywock [4] oder Rain aus dem BSD-Spiele-Paket. Der eigenen Kreativität sind hier kaum Grenzen gesetzt.
Um einen Bildschirmschoner zu definieren, füllen Sie in ~/.screenrc die Variable blankerprg mit dem Namen des auszuführenden Tools und fügen als zweite Anweisung idle. Damit legen Sie fest, nach wie vielen Sekunden des Stillstands das Blanker-Programm starten soll:
blankerprg blanker.sh idle 120 # Nach 2 Minuten starten
Der Eintrag aus diesem Beispiel aktiviert nach zwei Minuten ein Shellskript namens blanker.sh. Das besteht aus einem Zweizeiler, der über den Bildbetrachter Qiv [5] eine Slideshow öffnet:
#! /bin/sh qiv -f -s -d 4 -F foto-liste.txt
Die Option idle lässt sich übrigens durchaus auch ohne die Option blankerprg sinnvoll nutzen. Mit folgendem ~/.screenrc-Eintrag startet Screen nach 2 Minuten ein separates Fenster, in dem ein ASCII-Regen zu sehen ist:
idle 120 eval "screen rain -d 50" "idle 0"
Die letzte Definition, idle 0, verhindert, dass sich nach dem Start von rain -d 50 bei Ruhe alle zwei Minuten ein weiteres Fenster mit dem Regenmacher öffnet.
Wer schläft, wer wacht?
Screen informiert auf Wunsch darüber, ob in einem Fenster gerade Aktionen stattfinden oder nicht. Ein Beispiel: Sie stoßen in einem Fenster mit Make einen Kompilierungsvorgang an, der vermutlich etwas länger dauert. Drücken Sie nun die Tasten [Strg]+[A],[_] (den Unterstrich). Im Fußbereich des Programms erscheint die Meldung The window is now being monitored for 30 sec. silence. Das bedeutet, dass Screen Sie informieren wird, sobald sich in diesem Fenster 30 Sekunden lang nichts mehr getan hat – also Make zum Ende gekommen ist. Das Überwachen schalten Sie auf dem gleichen Weg, also mit [Strg]+[A],[_], wieder ab.
Umgekehrt erscheint gelegentlich wünschenswert, dass Screen Sie über Aktivitäten in Fenstern unterrichtet, die Sie gerade nicht betrachten: So läuft beispielsweise in Fenster 5 ein ICQ-Client, wie CenterIM, während Sie in Fenster 1 mit der Shell arbeiten. Um Sie darauf aufmerksam zu machen, dass sich einer Ihrer Kontakte im Fenster namens ICQ anmeldet, definieren Sie zunächst die Variable activity in der Datei ~/.screenrc wie folgt:
activity 'Fenster %n %t aktiv^G'
Nach einem Neustart von Screen (oder dem Befehl source .screenrc am Prompt des Tools) drücken Sie im Fenster 5, wo ICQ läuft, die Tastenkombination [Strg]+[A],[Umschalt]+[M]. Damit schalten Sie das Monitoring für Aktivitäten ein. Sobald sich im Chat etwas regt, informiert Sie Screen mit der Nachricht Fenster 5 ICQ aktiv und piepst dazu (wofür das abschließende ^G der activity-Anweisung sorgt). Mit einem weiteren [Strg]+[A],[Umschalt]+[M] beenden Sie den Zauber.
Status-Berichte
Zur Konfiguration der Statuszeilen hardstatus und caption lesen Sie in einer älteren Ausgabe [2] ausführliche Hinweise. Beide Zeilen gestalten Sie farblich und inhaltlich nach Ihren Bedürfnissen. So erhalten Sie einen Überblick der Fenster, der Systemlast oder des Datums samt Uhrzeit. Doch selbst an dieser Stelle dürfen Sie Skripte einbinden: Das Zauberwort dazu lautet backtick.
Nehmen wir an, Sie möchten auf einen Blick wissen, ob Sie sich über Ihren Provider eingewählt haben. Dazu bietet es sich an, die IP-Adresse in der Caption-Zeile anzuzeigen: Sind Sie offline, bleibt deren Platz leer. Zunächst schreiben Sie ein kleines Skript, das die IP-Adresse aus einem Kommando extrahiert, machen es ausführbar und legen es als screen-ip.sh in den Pfad $HOME/bin:
#! /bin/sh # Zeigt IP-Adresse in Screen an. ifconfig ppp0 | grep 'inet ' | cut -d: -f2 | cut -d' ' -f1
Jetzt machen Sie das Skript über die bereits erwähnte Variable backtick in der Konfigurationsdatei dem Terminal-Multiplexer bekannt:
backtick 1 2 2 /home/Username/bin/screen-ip.sh
Das Wort backtick leitet die Zeile ein. Über die frei wählbare erste Nummer, in diesem Fall die 1, referenzieren Sie den Backtick. Die beiden folgenden Zahlen weisen Screen an, dass das Skript alle zwei Sekunden aufzurufen und die Anzeige der Programmausgabe alle zwei Sekunden aufzufrischen.
Im letzten Schritt weisen Sie dem Kommando seinen Platz in der Caption-Zeile zu. Die Angabe hat dort die Form %1`. Die gesamte Zeile sieht dann beispielsweise so aus:
caption always "%{Wg} %1` %-=%{gW} %2` %{Wg} %D, %d.%M. | %c h"
Das Ergebnis zeigt Abbildung 1. Auf der LinuxUser-Website finden Sie ein weiteres Skript [6], das sich dazu eignet, die Mails auf einem POP-Server zu zählen und deren Anzahl in der Statuszeile anzeigen.
Fazit
Screen bietet eine Vielzahl an Einstellungsvarianten und erfüllt die ausgefallensten Wünsche. Die Konfiguration des Terminal-Multiplexers fällt mehr als umfangreich aus und erscheint dadurch nicht immer eingängig. Bastler, Konsolenfans und Anwender, die gerne alles im Griff haben, finden hier jedoch die Möglichkeiten, die Sie bei anderen Terminalemulationen vergeblich suchen.
[1] Nethack-Projektseite: http://www.nethack.org/
[2] Screen-Einführung: Heike Jurzik, “Fensterzauber”, http://www.linux-user.de/ausgabe/2004/09/076-screen/
[3] Screen-Workshop: Heike Jurzik, “Richtig Fensterln”, http://www.linux-user.de/ausgabe/2006/10/094-screen/
[4] Clockywock: http://soomka.com/
[5] Grafiken betrachten mit Qiv: Andreas Kneib, “Stark und schnell”, http://www.linux-user.de/ausgabe/2007/11/066-qiv/index.html
[6] Beispielskript: http://www.linux-user.de/Downloads/2008/09/048/






