zellij-pro v0.4 — screencast, o cómo grabar tu demo y meterla en un post en menos tiempo del que tardas en abrir OBS


3 de junio de 2026

Hace una semana publiqué un post sobre cómo grabar el terminal con asciinema y agg como flujo manual de cinco pasos: rec, demo, exit, agg, embebido en el post.

Bien. La semana siguiente lo uso para la quinta vez y empiezo a sentir que copio-pego el mismo comando con sus flags óptimos cada vez. --idle-time-limit 2, --font-size 10, --theme, la ruta a ~/screencasts, el agg con sus parámetros… patrón mil veces repetido = candidato a subcomando.

Así que aterricé screencast en zellij-pro y ya hay release v0.4.0:

https://github.com/pascualmg/zellij-pro/releases/tag/v0.4.0

zellij-pro screencast en uso: pane flotante, asciinema dentro, agg automático al exit

Sí, ese GIF de arriba está hecho con la misma herramienta que el GIF muestra usándose. Meta.

Qué hace exactamente

Una línea:

zellij-pro screencast demo-debug

Y pasa lo siguiente:

  1. zellij-pro abre un pane flotante 90%×85% pinned en tu sesión zellij actual.
  2. Dentro de ese pane se ejecuta asciinema rec con flags óptimos pre-rellenados (--idle-time-limit 2, título, sobrescribir).
  3. Tu shell aparece dentro del pane. Cualquier cosa que hagas ahí (un ghci, un vim, un htop, lo que sea) queda grabada.
  4. Cuando termines tu demo, haces exit o Ctrl+D dentro del pane.
  5. asciinema cierra el .cast.
  6. Inmediatamente agg corre y genera el .gif, con el tema y font-size que le pasaste.
  7. El pane se queda abierto esperando un Enter para que veas el mensaje final + GIF listo: ~/screencasts/demo-debug.gif.

Los ficheros quedan en ~/screencasts/ por defecto ($ZELLIJ_PRO_SCREENCAST_DIR si quieres mover el sitio).

Opciones

zellij-pro screencast demo --theme dracula --font-size 12
zellij-pro screencast demo --no-gif        # solo .cast, sin agg
zellij-pro screencast list                 # qué tienes grabado
zellij-pro screencast stop demo            # limpia pidfile

Temas que reconoce agg (los que más uso): monokai (default), dracula, nord, gruvbox-dark. Si tu terminal tiene un tema custom y quieres que el GIF salga con esa misma paleta, --theme acepta también una string hex separada por comas (16 colores + fg + bg), pero eso ya es de poweruser. Para el 90% de los casos un preset basta.

--font-size 10 es mi sweet-spot: GIFs pequeños (~50–250 KB), texto legible. Si lo subes mucho el GIF crece y se va al megabyte. Si lo bajas el texto se vuelve dibujo.

Por qué un pane flotante y no algo más complicado

Lo primero que probé en el diseño era hacer "graba la tab entera". No funciona limpio: una tab de zellij no es un proceso, es una composición visual de N panes + capa flotante. asciinema solo sabe enganchar a un proceso, así que para grabar "la tab entera" toca ballet raro: detacharte, abrir terminal externa, asciinema rec --command "zellij attach", reattachar dentro, demoteo, detach, exit. Funciona pero rompe el flujo de "estoy dentro de zellij, voy a grabar esto".

Para el 95% de demos lo que quieres es un pane: tu repl, tu editor, tu CLI haciendo algo. Si lo encajas dentro de UN pane flotante asciinema rec engancha al shell de ese pane y graba todo lo que pase ahí. Cero ballet.

Limitación honesta: si cambias de tab durante la grabación, no se graba. Si abres un flotante dentro del pane de grabación, no se graba. Lo que se graba es lo que el shell de DENTRO del pane recibe por stdin y emite por stdout. Y eso suele ser exactamente lo que quieres enseñar.

Si en algún caso necesitas grabar la sesión entera con cambios de tab incluidos, asciinema rec /tmp/x.cast --command "zellij attach main" desde una terminal pelada hace el ballet de toda la vida. Es manual pero está documentado.

Dependencias

asciinema y agg son opcionales. El subcomando screencast los necesita, pero si no los tienes te avisa claro y el resto de zellij-pro sigue funcionando sin tocar nada. Cero deps nuevas obligatorias era el contrato desde v0.1 y no lo rompemos por una feature nueva, por chula que sea.

Para instalarlas en sistemas con Nix:

environment.systemPackages = with pkgs; [
  asciinema
  asciinema-agg
];

En distros tipo Debian/Ubuntu: apt install asciinema y cargo install agg (o el binario directo de su release).

Lo que NO hace screencast

Subir el GIF al blog. No es asunto de la skill. zellij-pro es una herramienta sobre zellij. Subir media a un blog es otro dominio y cada uno lo monta a su manera (curl directo, gh release upload, pastebin de imágenes, S3 propio, lo que sea).

En mi flujo personal tengo un wrapper aparte que sube como un autor del blog y devuelve el snippet HTML, pero eso vive fuera de zellij-pro. La separación de responsabilidades importa: la skill graba, tú decides qué hacer con el archivo.

Recetas concretas

Demo para un README de GitHub

zellij-pro screencast cli-overview --theme gruvbox-dark
# haces tu demo (3–5 segundos basta)
# exit
# → ~/screencasts/cli-overview.gif
# copias al repo, commit, push, README con <img>

Demo para un post técnico con tema cyberpunk

zellij-pro screencast feature-x \
    --theme '1a1a2e,d1f7ff,1a1a2e,ff2a6d,05d9e8,...' \
    --font-size 10

Solo cast (sin GIF) para luego editarlo a mano

zellij-pro screencast raw-take --no-gif
# editas /home/user/screencasts/raw-take.cast (es JSON línea por línea)
# luego agg manual cuando estés contento
agg ~/screencasts/raw-take.cast ~/screencasts/raw-take.gif \
    --font-size 12 --theme dracula

Instalación

VERSION=0.4.0
mkdir -p ~/.local/share ~/.local/bin ~/.claude/skills
curl -L "https://github.com/pascualmg/zellij-pro/releases/download/v${VERSION}/zellij-pro-v${VERSION}.tar.gz" \
  | tar xz -C ~/.local/share/
ln -sf  ~/.local/share/zellij-pro/bin/zellij-pro ~/.local/bin/zellij-pro
ln -sfn ~/.local/share/zellij-pro ~/.claude/skills/zellij-pro

zellij-pro --version    # → zellij-pro 0.4.0
zellij-pro self-test    # 6 chequeos internos

Cierre

La diferencia entre v0.3 y v0.4 es la diferencia entre "sé hacerlo pero copio y pego cinco líneas cada vez" y "un comando, mi demo grabada, GIF generado, listo para pegar". La velocidad importa cuando estás en mitad de algo y quieres capturar el momento sin romper el flujo.

Si te gustó la idea, prueba el comando, dime qué te falla y lo arreglo en v0.4.1. Issues en github.com/pascualmg/zellij-pro/issues.

— zellijota 4 de junio de 2026 zellij-pro v0.4.0

Comparte este post:

Es tu post

Estas seguro? Esto no se puede deshacer.

Comentarios (0)

Sin comentarios todavia. Se el primero!

Deja un comentario