# cosmic-bg — el que pinta el fondo de pantalla. Es un cliente Wayland normal, uno de los que
# `cosmic-session` levanta después del compositor.
#
# ── POR QUÉ ES EL SEGUNDO CLIENTE QUE SE CONSTRUYE ──────────────────────────────────────────────
# Porque separa dos preguntas que en el resto de la suite vienen pegadas. cosmic-bg habla Wayland con
# `smithay-client-toolkit` —la implementación en Rust del protocolo, sin libwayland— y decodifica
# imágenes con crates puros (image, jxl-oxide, fast_image_resize). **No toca libcosmic ni iced.**
# Así que si el fondo pinta y el panel no, el problema es de la capa de UI, no del transporte.
#
# ── PERO NO ES RUST PURO, Y ESO SE MIDIÓ, NO SE SUPUSO ──────────────────────────────────────────
# El primer intento salió sin `[deps]` con el argumento «un cliente Wayland en Rust no toca C», y
# reventó en el `build.rs` de smithay-client-toolkit pidiendo `xkbcommon.pc`. **sctk ENLAZA
# libxkbcommon; no la dlopea** — el que la dlopea es winit, que es otra capa. La regla que sale:
# «habla el protocolo en Rust» dice cómo viaja el byte, no con qué se interpreta un teclado.
# Como el artefacto de libxkbcommon trae `.a` además de `.so`, el `link = "static"` sigue siendo
# verdad y no una etiqueta.
#
# El árbol es un workspace con `config/` como miembro (cosmic-bg-config), que es lo que leen los
# demás componentes para saber qué fondo hay puesto. Los defaults van a `/usr/share/cosmic/<APPID>/`
# con la misma convención de cosmic-config que en cosmic-comp: **el nombre del fichero ES la clave**.
name    = "cosmic-bg"
version = "1.5.0"
license = "MPL-2.0"

[source]
tarball = "https://github.com/pop-os/cosmic-bg/archive/epoch-1.5.0/cosmic-bg-epoch-1.5.0.tar.gz"
sha256  = "12b30c60e15ac6c0f4b3eca8c37642145683e830833b429958222dfc395db177"

[build]
compiler = "zig-cc"
target   = "x86_64-linux-musl"
# ── DINÁMICO, Y NO ES UNA PREFERENCIA ──────────────────────────────────────────────────────────
# `wayland-client` entra con la feature `dlopen`: no ENLAZA libwayland-client, la carga en runtime.
# Un binario musl ESTÁTICO no tiene dlopen funcional, así que el cliente arranca y muere con
# «The wayland library could not be loaded» — con el .so presente en el rootfs, que es lo que hace
# el diagnóstico confuso: no falta la librería, falta poder abrirla.
link     = "dynamic"
# Un único target para `cargo rustc --` (ver el comentario de cosmic-comp): el workspace trae también
# la lib de config.
flags    = ["--bin", "cosmic-bg"]

[build.phases]
install = '''
mkdir -p /out/usr/bin /out/usr/share/cosmic/com.system76.CosmicBackground
cp target/release/cosmic-bg /out/usr/bin/cosmic-bg
chmod 755 /out/usr/bin/cosmic-bg
cd data && find v1 -type f -exec install -Dm0644 {} /out/usr/share/cosmic/com.system76.CosmicBackground/{} \;
'''

[deps]
# dav1d: NO lo pide cosmic-bg sino la unificación de features de cargo — el crate `image`
# termina con AVIF prendida por otro consumidor del árbol aunque acá esté declarada sin
# defaults. Ver el comentario de recipes/incoming-cosmic/dav1d.toml.
build = ["libxkbcommon", "pkgconf", "dav1d"]
