How to Record a Terminal GIF

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

1. المتطلبات المسبقة

لتسجيل تسجيلات طرفية بصيغة GIF، تحتاج إلى:

يعمل VHS بقراءة ملف .tape الذي يصف ضغطات المفاتيح والأوامر والتوقيت — ثم يعيد تشغيل تلك الإجراءات في طرفية افتراضية ويلتقط المخرجات كتسجيل GIF.

2. تثبيت VHS

المنصةأمر التثبيت
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

التحقق من التثبيت:

vhs --version

3. إنشاء ملف Tape

ملف tape هو سكريبت نصي عادي يُخبر VHS بما يكتب ومتى ينتظر وما الإعدادات التي يستخدمها. أنشئ ملفاً اسمه 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

الأوامر الأساسية

الأمرالوصفمثال
Outputتعيين مسار ملف المخرجاتOutput "demo.gif"
Typeكتابة نص (محاكاة ضغطات المفاتيح)Type "git status"
Enterالضغط على EnterEnter
Sleepالانتظار لمدة معينةSleep 2s
Ctrl+Cإرسال اختصار لوحة المفاتيحCtrl+C
Hideإيقاف التسجيل (للإعداد)Hide
Showاستئناف التسجيلShow

4. ضبط الإعدادات

ضع أوامر Set في أعلى ملف tape الخاص بك، قبل أي أوامر Type.

الإعدادات الموصى بها لـ 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

جميع الإعدادات المتاحة

الإعدادالافتراضيالوصف
Shell"bash"الشل المستخدم (bash، zsh، fish، sh)
FontSize14حجم الخط بالبكسل
Width800عرض الطرفية بالبكسل
Height600ارتفاع الطرفية بالبكسل
Padding0الحشو حول الطرفية
Theme"default"Color theme (see theme gallery)
TypingSpeed50msالتأخير بين ضغطات المفاتيح
Framerate50إطارات GIF في الثانية
PlaybackSpeed1مضاعف سرعة التشغيل
CursorBlinktrueإظهار المؤشر الوامض
LetterSpacing0تباعد إضافي بين الأحرف
LineHeight1.0مضاعف ارتفاع السطر

الثيمات

يأتي VHS مع 44 ثيماً مدمجاً. خيارات شائعة لتوثيق المطورين:

الثيمالأسلوب
Catppuccin Mochaداكن دافئ (نبرات باستيل)
Draculaبنفسجي داكن
Tokyo Nightداكن بصبغة زرقاء
Nordأزرق قطبي
One Darkداكن مستوحى من Atom
Solarized Darkداكن كلاسيكي بنبرات دافئة
Monokaiمستوحى من Sublime Text

تصفح جميع الثيمات مع معاينات مباشرة: معرض الثيمات.

5. تسجيل التسجيل

vhs demo.tape

يفتح VHS متصفحاً بلا رأس، ويعيد تشغيل الـ tape، ويحفظ التسجيل. يستغرق التسجيل النموذجي 10-30 ثانية.

معاينة قبل الرفع:

# macOS
open demo.gif

# Linux
xdg-open demo.gif

6. تحسين حجم الملف

يقبل AgentGIF تسجيلات تصل إلى 10 MB، لكن الملفات الأصغر تُحمَّل بشكل أسرع. نصائح للحفاظ على حجم التسجيل صغيراً:

التقنيةالتأثير
تقليل الأبعاد (Width 800)كبير — تنصيف العرض يُربّع حجم الملف
تقليل معدل الإطارات (Framerate 30)متوسط — يُقلل الإطارات بنسبة 40%
تسجيل أقصركبير — استهدف 5-15 ثانية
استخدم PlaybackSpeed 1.5متوسط — إجمالي إطارات أقل
تعطيل وميض المؤشر (CursorBlink false)صغير — إطارات فريدة أقل
خلفية صلبة (تجنب الشفافية)صغير — ضغط GIF أفضل

لأفضل توازن بين الجودة والحجم، تنتج الإعدادات الموصى بها أعلاه تسجيلات حول 100-300 KB لتسجيل مدته 10 ثوانٍ.

7. الرفع إلى AgentGIF

الرفع عبر CLI (الأسرع):

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.

إرفاق ملف cast يُفعّل طبقة وكيل الذكاء الاصطناعي:

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

8. ميزات Tape المتقدمة

إخفاء/إظهار للإعداد

استخدم Hide/Show لتشغيل أوامر الإعداد دون تسجيلها:

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

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

صيغ مخرجات متعددة

يمكن لـ VHS إخراج صيغ متعددة في وقت واحد:

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

متغيرات البيئة

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

اختصارات لوحة المفاتيح

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

9. أدوات تسجيل بديلة

الأداةالمخرجاتالمزاياالعيوب
VHSGIF, MP4, WebMمبرمج، قابل للتكرار، ثيماتيتطلب إعداداً
asciinema.castتسجيل مباشر، ملفات صغيرةلا مخرجات GIF (يحتاج تحويلاً)
TerminalizerGIFتسجيل مباشر، إعداد YAMLأحجام ملفات كبيرة
PeekGIF, WebMمسجّل شاشة ذو واجهة رسوميةغير مخصص للطرفية

نوصي بـ VHS للعروض التوضيحية المبرمجة (قابلة للتكرار والتحكم بالإصدار) وasciinema + تحويل VHS للتسجيلات المباشرة.

See also: asciinema vs AgentGIF comparison.