termotion

A declarative terminal animation generator — describe a terminal scene in YAML, render deterministic WebM, MP4 or PNG sequences for stream overlays.

Rustexperimentalanimation · yaml · ffmpeg · streamingterminal softwaresource on github

Why

“Be right back”, “starting soon” and “ending” scenes for a stream, as fake terminal sessions — written as code, versioned, and rendered identically every time.

How

  • A six-crate workspace: schema, timeline, core, render, encode, CLI.
  • A scene declares canvas, prompt, theme, font and cursor, then a timeline of typed actions — write, command, pause, pause_random (seeded), backspace, clear, colored spans. Unknown fields are rejected; includes and variables are supported.
  • The timeline compiles into a timestamped program (termotion inspect prints it). Rendering is CPU-only with cosmic-text for shaping and tiny-skia for rasterizing, checked by golden-frame tests.
  • Raw RGBA frames are piped into FFmpeg for VP9 WebM or H.264 MP4; PNG sequences need no external tools.
  • It never executes the commands it draws.
termotion render brb.yaml --output brb.webm
$ git clone https://github.com/zombocoder/termotion
← all projects