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 — a terminal recorder by Charm that converts scripted terminal sessions into GIFs
- ttyd — un serveur web terminal (dépendance VHS, installé automatiquement sur macOS)
- ffmpeg — pour l'encodage vidéo (installé automatiquement sur macOS)
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
| Plateforme | Commande d'installation |
|---|---|
| macOS | brew install vhs |
| Ubuntu/Debian | sudo 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 Linux | yay -S vhs |
| Go | go 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
| Commande | Description | Exemple |
|---|---|---|
Output | Définir le chemin du fichier de sortie | Output "demo.gif" |
Type | Taper du texte (simule des frappes clavier) | Type "git status" |
Enter | Appuyer sur Entrée | Enter |
Sleep | Attendre une durée | Sleep 2s |
Ctrl+C | Envoyer un raccourci clavier | Ctrl+C |
Hide | Arrêter l'enregistrement (pour la configuration) | Hide |
Show | Reprendre l'enregistrement | Show |
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ètre | Défaut | Description |
|---|---|---|
Shell | "bash" | Shell à utiliser (bash, zsh, fish, sh) |
FontSize | 14 | Taille de police en pixels |
Width | 800 | Largeur du terminal en pixels |
Height | 600 | Hauteur du terminal en pixels |
Padding | 0 | Rembourrage autour du terminal |
Theme | "default" | Color theme (see theme gallery) |
TypingSpeed | 50ms | Délai entre les frappes clavier |
Framerate | 50 | Images par seconde du GIF |
PlaybackSpeed | 1 | Multiplicateur de vitesse de lecture |
CursorBlink | true | Afficher le curseur clignotant |
LetterSpacing | 0 | Espacement de lettres supplémentaire |
LineHeight | 1.0 | Multiplicateur de hauteur de ligne |
Thèmes
VHS est livré avec 44 thèmes intégrés. Choix populaires pour la documentation développeur :
| Thème | Style |
|---|---|
| Catppuccin Mocha | Sombre chaud (accents pastel) |
| Dracula | Violet foncé |
| Tokyo Night | Sombre teinté de bleu |
| Nord | Bleu arctique |
| One Dark | Sombre inspiré d'Atom |
| Solarized Dark | Sombre classique avec tons chauds |
| Monokai | Inspiré 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 :
| Technique | Impact |
|---|---|
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 court | Significatif — visez 5 à 15 secondes |
Utiliser PlaybackSpeed 1.5 | Modé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
| Outil | Sortie | Avantages | Inconvénients |
|---|---|---|---|
| VHS | GIF, MP4, WebM | Scriptés, reproductibles, thèmes | Nécessite une configuration |
| asciinema | .cast | Enregistrement en direct, fichiers légers | Pas de sortie GIF (nécessite une conversion) |
| Terminalizer | GIF | Enregistrement en direct, config YAML | Tailles de fichiers importantes |
| Peek | GIF, WebM | Enregistreur d'écran GUI | Pas 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.