# cosmic-term — el emulador de terminal de COSMIC, y **la primera aplicación con ventana** del # catálogo. Hasta acá el escritorio tenía compositor, panel, dock, lanzador y una calculadora que # devuelve una fila de texto; ninguna ventana de verdad. Ésta lo es, y de paso convierte la # biblioteca de aplicaciones —que hoy sale vacía porque los veinte `.desktop` de la imagen son # `NoDisplay=true`— en algo que muestra al menos una entrada. # # ── LO QUE ARRASTRA, Y QUE NO SE ADIVINA ──────────────────────────────────────────────────────── # Su `Cargo.toml` depende de **`cosmic-files`**: el gestor de ficheros entra como LIBRERÍA (el # selector y el arrastrar-y-soltar), no como aplicación. O sea que compilar la terminal compila # medio gestor de ficheros. Es el mismo patrón que ya apareció con `cosmic-settings-config` en los # applets: en esta suite las «aplicaciones» se usan unas a otras como crates. # # `wgpu` viene en `default`, al revés que el resto de los clientes que sellamos —que pintan con # tiny-skia porque su libcosmic entra sin esa feature—. Se deja: `wgpu` y `naga` ya se compilaron # enteros para `cosmic-workspaces` (están en su línea de enlace), así que el costo ya está pago, y # tocar las features por defecto es apartarse de la única combinación que upstream prueba. name = "cosmic-term" version = "1.5.0" license = "GPL-3.0-only" [source] tarball = "https://github.com/pop-os/cosmic-term/archive/epoch-1.5.0/cosmic-term-epoch-1.5.0.tar.gz" sha256 = "ea942a519c33c6bc13dddfdd8c5addfc4307742c1f892fa67807646fc6db42bc" [build] compiler = "zig-cc" target = "x86_64-linux-musl" # Dinámico como todo cliente de la suite: `wayland-client` entra con la feature `dlopen` y un musl # estático no la honra — arranca y muere con «The wayland library could not be loaded» *teniendo* # el `.so`. link = "dynamic" flags = ["--bin", "cosmic-term"] [build.phases] # El `just install` traducido con `rootdir=/`. Los `.desktop`/`.metainfo` los GENERA el build en # `target/xdgen/` (crate `xdgen` como build-dependency), no están en el tarball: se copian si # aparecen. Acá **sí** conviene que el `.desktop` exista, al revés que en los applets — es lo que # hace que la aplicación se vea en la biblioteca. install = ''' mkdir -p /out/usr/bin /out/usr/share/applications /out/usr/share/metainfo cp target/release/cosmic-term /out/usr/bin/cosmic-term chmod 755 /out/usr/bin/cosmic-term cp target/xdgen/com.system76.CosmicTerm.desktop /out/usr/share/applications/ 2>/dev/null || true cp target/xdgen/com.system76.CosmicTerm.metainfo.xml /out/usr/share/metainfo/ 2>/dev/null || true for size in res/icons/hicolor/*; do [ -d "$size" ] || continue s=$(basename "$size") if [ -f "$size/apps/com.system76.CosmicTerm.svg" ]; then mkdir -p "/out/usr/share/icons/hicolor/$s/apps" cp "$size/apps/com.system76.CosmicTerm.svg" "/out/usr/share/icons/hicolor/$s/apps/" fi done ''' [deps] # El juego fijo de todo cliente de la suite. `dbus-config` y `password_manager` (secret-service) # hablan por **zbus**, que es Rust puro: no suman `libdbus`, al revés que cosmic-applets. build = ["libxkbcommon", "pkgconf", "libudev-zero", "libinput"]