# wf-recorder 0.6.0 — grabador de pantalla para compositores Wayland (wlroots y compatibles). # # POR QUÉ ESTA Y NO OBS. El triaje de `docs/plan-apps-usuario-final.md` midió que OBS pide Qt6 —que # vive sólo en `incoming-kde`— más el stack X11 y veinte recetas nuevas, o sea que hoy sólo podría # ser una app DE KDE y no de las cuatro imágenes. Y el 80% de para qué se instala OBS es grabar la # pantalla. Esto lo cubre con UNA receta. # # ══ ESTUVO BLOQUEADA UNA NOCHE, Y VALE LA PENA QUE SE SEPA POR QUÉ ═════════════════════════════ # El triaje la daba en «0 recetas faltantes» y era mentira, porque preguntaba lo que no era: **¿existe # la receta en el disco?** en vez de **¿la alcanza quien la usa?**. Sus dos backends de captura de # audio son `libpulse-simple` y `libpipewire-0.3`, los dos existían en las tres colas de escritorio # y en ninguna en el corpus, y una receta del corpus no alcanza una cola hermana. Construía, pero # grababa MUDO — y a diferencia de mpv no tiene backend ALSA con el que caerse. # Se destrabó promoviendo `pipewire` al corpus (2026-09-03). Ésta es la primera app que cobra esa # decisión. # # ══ PIPEWIRE Y NO PULSE, explícito ═════════════════════════════════════════════════════════════ # `-Dpulse=disabled -Dpipewire=enabled` y `-Ddefault_audio_backend=pipewire`. Es el servidor de # audio decidido de la distro, y además `pulseaudio` NO se promovió al corpus a propósito (su # `libpulse-mainloop-glib` del corpus se traga la glib estática; ver `recipes/pulseaudio.toml`). # El `default_audio_backend` NO se deja en `auto`: su meson lo resuelve mirando qué encontró en el # sandbox (`meson.build:95-101`), que es la clase de perilla que hace depender el artefacto de lo # que quedó montado en el lab. # # gbm y libdrm salen de mesa: la captura pide el buffer al compositor por # `wlr-screencopy` y lo convierte en GPU antes de codificar. # # Fuente por commit git (ADR 0006): el `/archive/` de GitHub lo genera la forge al vuelo y su sha256 # cambia cuando el servidor actualiza git/gzip. `v0.6.0` es un tag LIVIANO ⇒ éste es su commit. name = "wf-recorder" version = "0.6.0" license = "MIT" [source] repo = "https://github.com/ammen99/wf-recorder.git" commit = "ca103be2473db0983baf74e17b291385c3c79d79" [build] compiler = "zig-cc" target = "x86_64-linux-musl" # Dinámico por el mismo cierre que mpv: ffmpeg va `--enable-shared`, mesa expone gbm/EGL como `.so` # y libpipewire también. link = "dynamic" flags = [] [build.phases] configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Dpulse=disabled -Dpipewire=enabled -Ddefault_audio_backend=pipewire" compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output" install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild" [deps] build = [ "meson", "samurai", "python3", "pkgconf", "scdoc", "linux-headers", "ffmpeg", "pipewire", "mesa", "libdrm", "wayland", "wayland-protocols", ]