Sie möchten gerne ein bestimmtes Kommandozeilentool präsentieren und Screencasts sind Ihnen nicht flexibel genug? Dann sollten Sie sich das Tool VHS ansehen. Das Werkzeug erlaubt es, komplette Terminalsitzungen in einer einfachen Textdatei aufzuzeichnen. Aus dieser Datei erzeugen Sie dann ein Video, um die Aktionen aus Ihrer Terminalsitzung wiederzugeben. Der Open-Source-Tipp in diesem Monat stellt das Tool vor und zeigt einige praktische Beispiele.
Die Folien für die Präsentation auf der nächsten Konferenz oder das nächste Meeting sind fertig. Um etwas Abwechselung in den Vortrag zu bringen, ist eine Demo der neuen Software geplant. Livedemos geraten jedoch oftmals mit "Murphy's Law" in Konflikt: Alles, was schiefgehen kann, geht schief. Screencasts auf der anderen Seite sind zumeist unflexibel. Was also tun?
VHS-Tapes: Wie in guten alten Zeiten
Schauen Sie sich das Tool VHS [1] an. Benannt nach dem "Video Home System", handelt es sich hierbei um ein Kommandozeilentool, das Ihnen ermöglicht, Terminalaktionen klar strukturiert in einer Textdatei zu definieren. Anstelle einer zeitaufwendigen Nachbearbeitung von Screencasts erstellen Sie ein Skript, um sämtliche Befehle, Tastatureingaben und Zeitabläufe festzulegen. Da ist es naheliegend, dass das Skript als "Tape" bezeichnet wird. Aus diesem Tape erzeugen Sie dann GIFs, MP4- oder WebM-Videos, die Sie mit einem beliebigen Videoplayer abspielen können.
Das Schöne dabei ist, dass Sie, anders als mit Screencasts, die Videos sehr einfach anpassen können, indem Sie lediglich die gewünschten Änderungen an der Tape-Datei vornehmen. Auch ist die gemeinsame Produktion eines Videos sehr einfach im Team möglich, indem Sie die Tapes einfach in einem Git-Repository, oder einem anderen Versionsverwaltungssystem, speichern.
Die Folien für die Präsentation auf der nächsten Konferenz oder das nächste Meeting sind fertig. Um etwas Abwechselung in den Vortrag zu bringen, ist eine Demo der neuen Software geplant. Livedemos geraten jedoch oftmals mit "Murphy's Law" in Konflikt: Alles, was schiefgehen kann, geht schief. Screencasts auf der anderen Seite sind zumeist unflexibel. Was also tun?
VHS-Tapes: Wie in guten alten Zeiten
Schauen Sie sich das Tool VHS [1] an. Benannt nach dem "Video Home System", handelt es sich hierbei um ein Kommandozeilentool, das Ihnen ermöglicht, Terminalaktionen klar strukturiert in einer Textdatei zu definieren. Anstelle einer zeitaufwendigen Nachbearbeitung von Screencasts erstellen Sie ein Skript, um sämtliche Befehle, Tastatureingaben und Zeitabläufe festzulegen. Da ist es naheliegend, dass das Skript als "Tape" bezeichnet wird. Aus diesem Tape erzeugen Sie dann GIFs, MP4- oder WebM-Videos, die Sie mit einem beliebigen Videoplayer abspielen können.
Das Schöne dabei ist, dass Sie, anders als mit Screencasts, die Videos sehr einfach anpassen können, indem Sie lediglich die gewünschten Änderungen an der Tape-Datei vornehmen. Auch ist die gemeinsame Produktion eines Videos sehr einfach im Team möglich, indem Sie die Tapes einfach in einem Git-Repository, oder einem anderen Versionsverwaltungssystem, speichern.
Installation unter macOS und Linux
Die Installation von VHS ist auf verschiedenen Plattformen möglich. Unter macOS oder Linux können Sie das Tool bequem über Homebrew mittels brew install vhs installieren. Es ist momentan kaum über die offiziellen Software-Repositories der einzelnen Linux-Distributionen zu bekommen, sodass hier der Einsatz von Containern lohnt. Das folgende Beispiel verwendet Podman als Container-Engine, wobei natürlich auch der Einsatz von Docker möglich ist:
podman run --rm -v $PWD:/vhs ghcr.io/charmbracelet/vhs -v vhs version v0.10.0 (517bcda)
Tapes anlegen
Die Einsatzmöglichkeiten von VHS veranschaulichen wir im Folgenden anhand zweier praktischer Beispiele. Dabei zeigen wir Ihnen, wie Sie einfache und komplexere Terminalaufnahmen erstellen, die sowohl funktional als auch visuell ansprechend sind. Ein einfaches Szenario könnte darin bestehen, eine grundlegende Terminalinteraktion aufzuzeichnen, beispielsweise das Ausführen einfacher Shell-Befehle. Hierzu erzeugen Sie in einem beliebigen Ordner eine Datei mit dem Namen "demo.tape". In dieser Datei verwenden Sie nun eine bestimmte Beschreibungssprache, die aus Anweisungen und den eigentlichen Befehlen besteht, die Sie demonstrieren möchten. Listing 1 enthält ein Beispiel für ein solches File.
Das Skript weist VHS an
1. ein GIF mit dem Namen "demo.gif" zu erstellen,
2. die Bash-Shell zu verwenden,
3. den Befehl echo 'Willkommen bei VHS!' einzugeben,
4. eine Sekunde zu warten,
5. den Befehl ls -l anzuwenden,
6. die Eingabetaste zu drücken,
7. anschließend zwei Sekunden zu pausieren, bevor die Aufnahme endet.
Listing 1: Beispieldatei demo.tape
### Eine einfache Tape-Datei die den Aufruf von einigen Shell-Kommandos zeigt.
Output demo.gif
Set Shell bash
Type "echo 'Willkommen bei VHS!'"
Sleep 1s
Type "ls -l"
Enter
Sleep 2s
Um nun aus diesem Tape das gewünschte Video zu erzeugen, führen Sie den Befehl vhs demo.tape aus. Das Tool arbeitet nun jede Anweisung der Reihe nach ab und erstellt am Ende eine animierte GIF-Datei. Als Ausgabeformat können Sie neben GIF auch MP4 oder WEBM verwenden. Dies ist gerade auch dann interessant, wenn Sie die mit VHS erzeugten Videos in eine Webseite einbinden möchten. Beispielsweise innerhalb einer README-Datei eines Git-Repositories.
Grafische Präsentation
VHS erlaubt es, die Terminaloberfläche an Ihre eigenen Bedürfnisse anzupassen. In Listing 2 sehen Sie, wie Sie ein individuelles Farbschema, Schriftarten und Fenstergrößen verwenden. Die Ausgabe erfolgt in diesem Beispiel als MP4-Video. Auch hier erstellen Sie die gewünschte Videodatei durch den Aufruf von vhs gefolgt vom Namen des Tapes. Eine Liste der zur Verfügung stehenden Themes erhalten Sie über vhs temes .
Listing 2: git.tape
### VHS erlaubt die individuelle Gestaltung eines Videos.
Output git.mp4
Set Theme GruvboxDark
Set Width 1500
Set Height 600
Set FontSize 18
Type "cd ~/git/freeipa/"
Enter
Type "grep "lg" ~/.gitconfig"
Enter
Sleep 2
Type "git lg"
Enter
Sleep 3s
Aufnahme starten
Nun mag es nicht in jedem Fall sinnvoll sein, eine Tape-Datei manuell zu schreiben. Stattdessen möchten Sie vielleicht lieber die gewünschten Aktionen innerhalb eines Terminals interaktiv ausführen und diese aufnehmen, sodass VHS automatisch ein passendes Tape basierend auf Ihren Eingaben erzeugt. Dies ist durch den Aufruf von vhs record > demo.tape ohne Probleme möglich.
Sobald Sie das Tool mit der record-Anweisung gefolgt von einem Tape-Namen aufrufen, merkt sich VHS sämtliche Aktionen, die Sie innerhalb der Shell ausführen – bis zu dem Zeitpunkt, an dem Sie das Kommando exit eingeben. Im Anschluss schreibt VHS sämtliche Anweisungen in die Tape-Datei und beachtet dabei sogar die Zeiträume zwischen den einzelnen Aktionen Ihrer interaktiven Shell-Sitzung.
Spannend ist auch die Möglichkeit, die mit VHS produzierten Videos zu veröffentlichen, um diese somit sehr einfach in eigene Webprojekte einzubinden. Hierzu stellt Charmbracelet, die Firma hinter VHS, sogar eine eigene Web-Space zur Verfügung und hat eine entsprechende Uploadfunktion direkt mit in das VHS-Tool eingebaut. Um ein fertig produziertes Video zu veröffentlichen, verwenden Sie den Befehl vhs publish <GIF-Datei> . Einen Eindruck davon, wie ein mit VHS produziertes Video aussehen kann, erhalten Sie dank eines Demovideos unter [2].
VHS bringt einen eigenen SSH-Server mit, den Sie an eine beliebige IP-Adresse binden können.
VHS mit SSH-Zugang
Ein weiteres interessantes Feature von VHS ist, dass das Tool einen SSH-Server mitbringt. Dieser basiert auf der Golang-Crypto-SSH-Bibliothek und ermöglicht, dass Sie beispielsweise innerhalb eines Teams Videos auf einem zentralen VHS-Server erzeugen, ohne dass die Software hierfür lokal installiert sein muss.
Der Server lauscht allerdings von Haus aus lediglich auf dem Loopback-Device (127.0.0.1), Sie können ihn jedoch mithilfe der Umgebungsvariable "VHS_HOST" an eine beliebige Adresse binden. Den Server starten Sie dann über vhs serve und mit dem folgenden SSH-Befehl senden Sie ein Tape an diesen:
ssh -p <Port> <IP> <Tape-Datei> > <Video-Datei>
Fazit
VHS ist ein durchdachtes Tool, das Admins bei der professionellen Präsentation von Terminaldemos unterstützt. Im Gegensatz zu klassischen Screencasts lassen sich VHS-Tapes schnell anpassen, versionieren und sogar automatisiert erstellen. Damit ist VHS nicht nur eine flexible Alternative für Konferenzen und Schulungen, sondern auch ein nützliches Werkzeug für Dokumentation, Onboarding oder CI/CD-Prozesse. Wer regelmäßig Terminalaktionen zeigen muss, sollte sich diese Software definitiv näher ansehen.