How to Record a Terminal GIF

Step-by-step guide to recording terminal sessions as GIF animations using VHS, asciinema, and AgentGIF CLI.

1. Prérequis

Pour enregistrer des GIF terminaux, vous avez besoin de :

VHS fonctionne en lisant un fichier .tape qui décrit les frappes clavier, les commandes et le timing — puis il rejoue ces actions dans un terminal virtuel et capture la sortie sous forme de GIF.

2. Installer VHS

PlateformeCommande d'installation
macOSbrew install vhs
Ubuntu/Debiansudo mkdir -p /etc/apt/keyrings && curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg && echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list && sudo apt update && sudo apt install vhs
Arch Linuxyay -S vhs
Gogo install github.com/charmbracelet/vhs@latest

Vérifier l'installation :

vhs --version

3. Créer un fichier tape

Un fichier tape est un script en texte brut qui indique à VHS quoi taper, quand attendre et quels paramètres utiliser. Créez un fichier appelé demo.tape :

Output demo.gif
Set Shell "bash"
Set FontSize 16
Set Width 1000
Set Height 580
Set Theme "Catppuccin Mocha"

Type "echo 'Hello, world!'"
Enter
Sleep 2s

Type "ls -la"
Enter
Sleep 3s

Commandes principales

CommandeDescriptionExemple
OutputDéfinir le chemin du fichier de sortieOutput "demo.gif"
TypeTaper du texte (simule des frappes clavier)Type "git status"
EnterAppuyer sur EntréeEnter
SleepAttendre une duréeSleep 2s
Ctrl+CEnvoyer un raccourci clavierCtrl+C
HideArrêter l'enregistrement (pour la configuration)Hide
ShowReprendre l'enregistrementShow

4. Configurer les paramètres

Placez les commandes Set en haut de votre fichier tape, avant toute commande Type.

Paramètres recommandés pour AgentGIF

Set Shell "zsh"
Set FontSize 15
Set Width 1000
Set Height 580
Set Padding 20
Set Theme "Catppuccin Mocha"
Set TypingSpeed 50ms
Set CursorBlink false

Tous les paramètres disponibles

ParamètreDéfautDescription
Shell"bash"Shell à utiliser (bash, zsh, fish, sh)
FontSize14Taille de police en pixels
Width800Largeur du terminal en pixels
Height600Hauteur du terminal en pixels
Padding0Rembourrage autour du terminal
Theme"default"Color theme (see theme gallery)
TypingSpeed50msDélai entre les frappes clavier
Framerate50Images par seconde du GIF
PlaybackSpeed1Multiplicateur de vitesse de lecture
CursorBlinktrueAfficher le curseur clignotant
LetterSpacing0Espacement de lettres supplémentaire
LineHeight1.0Multiplicateur de hauteur de ligne

Thèmes

VHS est livré avec 44 thèmes intégrés. Choix populaires pour la documentation développeur :

ThèmeStyle
Catppuccin MochaSombre chaud (accents pastel)
DraculaViolet foncé
Tokyo NightSombre teinté de bleu
NordBleu arctique
One DarkSombre inspiré d'Atom
Solarized DarkSombre classique avec tons chauds
MonokaiInspiré de Sublime Text

Parcourez tous les thèmes avec aperçus en direct : Galerie de thèmes.

5. Enregistrer le GIF

vhs demo.tape

VHS ouvre un navigateur sans interface, rejoue le fichier tape et sauvegarde le GIF. Un enregistrement typique prend 10 à 30 secondes.

Prévisualiser avant de téléverser :

# macOS
open demo.gif

# Linux
xdg-open demo.gif

6. Optimiser la taille du fichier

AgentGIF accepte des GIF jusqu'à 10 Mo, mais les fichiers plus petits se chargent plus vite. Conseils pour réduire la taille des GIF :

TechniqueImpact
Réduire les dimensions (Width 800)Significatif — diviser la largeur par deux divise la taille par quatre
Réduire la cadence d'images (Framerate 30)Modéré — réduit les images de 40%
Enregistrement plus courtSignificatif — visez 5 à 15 secondes
Utiliser PlaybackSpeed 1.5Modéré — moins d'images au total
Désactiver le clignotement du curseur (CursorBlink false)Faible — moins d'images uniques
Fond uni (évitez la transparence)Faible — meilleure compression GIF

Pour le meilleur équilibre qualité/taille, les paramètres recommandés ci-dessus produisent des GIF d'environ 100 à 300 Ko pour un enregistrement de 10 secondes.

7. Téléverser sur AgentGIF

Téléverser via CLI (le plus rapide) :

agentgif upload demo.gif \
  --title "Git Interactive Rebase" \
  --command "git rebase -i HEAD~3" \
  --tags git,rebase \
  --open

Or upload via the web interface — drag and drop the GIF file.

Inclure un fichier cast active la couche agent IA :

agentgif upload demo.gif --cast demo.cast --title "My Demo"

8. Fonctionnalités avancées des fichiers tape

Masquer/Afficher pour la configuration

Utilisez Hide/Show pour exécuter des commandes de configuration sans les enregistrer :

Hide
Type "cd /tmp/demo-project"
Enter
Type "mkdir -p src"
Enter
Show

# Now recording starts
Type "ls -la"
Enter
Sleep 2s

Formats de sortie multiples

VHS peut produire plusieurs formats simultanément :

Output demo.gif
Output demo.mp4
Output demo.webm

Variables d'environnement

Set Shell "bash"
Type "export PS1='$ '"
Enter
Hide
Sleep 500ms
Show

Raccourcis clavier

Ctrl+C     # Cancel current command
Ctrl+L     # Clear screen
Ctrl+D     # EOF / exit
Tab        # Tab completion
Up         # Previous command
Escape     # Escape key

9. Outils d'enregistrement alternatifs

OutilSortieAvantagesInconvénients
VHSGIF, MP4, WebMScriptés, reproductibles, thèmesNécessite une configuration
asciinema.castEnregistrement en direct, fichiers légersPas de sortie GIF (nécessite une conversion)
TerminalizerGIFEnregistrement en direct, config YAMLTailles de fichiers importantes
PeekGIF, WebMEnregistreur d'écran GUIPas spécifique au terminal

Nous recommandons VHS pour les démos scriptées (reproductibles, versionnables) et asciinema + conversion VHS pour les enregistrements en direct.

See also: asciinema vs AgentGIF comparison.