Sellada b3:25caa359 al primer intento. `--help` corre y los NEEDED traen `libpipewire-0.3.so.0`: graba CON audio, que era exactamente lo que anoche no se podía. Es la app que estaba bloqueada por el defecto del triaje —preguntaba «¿existe la receta?» en vez de «¿la alcanza quien la usa?»—: sus dos backends de captura de sonido vivían sólo en colas y una receta del corpus no alcanza una cola hermana. Con pipewire en el corpus, cae sola. `-Ddefault_audio_backend=pipewire` explícito y no `auto`: su meson resuelve `auto` mirando qué encontró en el sandbox (meson.build:95-101), o sea que el artefacto dependería de lo que quedó montado en el lab. Misma disciplina que en mpv y ffmpeg. ⚠ SE LISTA SÓLO EN `escritorio-sway`, y la razón es de PROTOCOLO: captura por `wlr-screencopy`, que implementan los compositores wlroots. KWin y mutter NO lo implementan —usan el portal/ScreenCast—, así que meterlo en esas dos imágenes sería enviar una herramienta que no puede funcionar ahí: deuda fantasma con forma de app. En COSMIC hay que verificar si cosmic-comp expone el protocolo antes de listarlo; no se listó a ciegas. Cubre el caso de uso principal por el que uno instala OBS, con UNA receta en vez de las 20 + Qt6 + X11 que OBS pedía. escritorio-sway 146/146.
56 lines
3.2 KiB
TOML
56 lines
3.2 KiB
TOML
# 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",
|
|
]
|