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
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
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-debugY pasa lo siguiente:
zellij-proabre un pane flotante 90%×85% pinned en tu sesión zellij actual.- Dentro de ese pane se ejecuta
asciinema reccon flags óptimos pre-rellenados (--idle-time-limit 2, título, sobrescribir). - Tu shell aparece dentro del pane. Cualquier cosa
que hagas ahí (un
ghci, unvim, unhtop, lo que sea) queda grabada. - Cuando termines tu demo, haces
exitoCtrl+Ddentro del pane. asciinemacierra el.cast.- Inmediatamente
aggcorre y genera el.gif, con el tema y font-size que le pasaste. - El pane se queda abierto esperando un
Enterpara 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 pidfileTemas 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 10Solo 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 draculaInstalació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 internosCierre
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
Comentarios (0)
Sin comentarios todavia. Se el primero!
Deja un comentario