# 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//` # 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"]