diff --git a/docs/evidencia/cosmic-biblioteca-con-app-qemu-2026-08-04.png b/docs/evidencia/cosmic-biblioteca-con-app-qemu-2026-08-04.png new file mode 100644 index 00000000..4fb7c225 Binary files /dev/null and b/docs/evidencia/cosmic-biblioteca-con-app-qemu-2026-08-04.png differ diff --git a/docs/evidencia/cosmic-terminal-qemu-2026-08-04.png b/docs/evidencia/cosmic-terminal-qemu-2026-08-04.png new file mode 100644 index 00000000..0cc8b4f9 Binary files /dev/null and b/docs/evidencia/cosmic-terminal-qemu-2026-08-04.png differ diff --git a/docs/runbooks/cosmic-desktop.md b/docs/runbooks/cosmic-desktop.md index 0291525c..33fb8cbe 100644 --- a/docs/runbooks/cosmic-desktop.md +++ b/docs/runbooks/cosmic-desktop.md @@ -109,8 +109,9 @@ Más `cosmic-settings-daemon` y `xdg-desktop-portal-cosmic` fuera de esa lista. | `pop-launcher` 1.2.7 (otro repo, ver abajo) | ✅ sellado a la primera | `b3:64a5cbaa` | | `gmp` 6.3.0 · `mpfr` 4.2.2 (cadena de la calculadora) | ✅ sellados a la primera | `b3:d99a0a5d` · `b3:13982d20` | | `libqalculate` 5.12.0 (`qalc`) | ✅ sellado — la calculadora del lanzador ANDA (ver abajo) | `b3:edb8d14d` | +| **`cosmic-term`** 1.5.0 — la 1ª APLICACIÓN | ✅ **sellada a la primera** (arrastra `cosmic-files` y `wgpu`) | `b3:d0ea1c1e` | -**La cola está COMPLETA: 30 recetas, `escritorio-cosmic` 68/68.** +**La cola está COMPLETA: 31 recetas, `escritorio-cosmic` 69/69.** **El mínimo viable de una sesión son cuatro**: `cosmic-comp` + `cosmic-settings-daemon` + `cosmic-notifications` + `cosmic-panel` (los tres `.expect` de la tabla de arriba). @@ -548,6 +549,38 @@ imagen, como el color de fondo; una distro de verdad lo pondría en `/etc/skel`. mentir. Ojo: hay que repetir el `-L` en el `make`, porque el `LDFLAGS` del `make` PISA al del `configure`. +### 🖥 `cosmic-term`: la primera APLICACIÓN, y la biblioteca deja de estar vacía + +`docs/evidencia/cosmic-terminal-qemu-2026-08-04.png`: + +``` +bash-5.3# uname -srm; qalc -t '6*7' +Linux 6.16.12 x86_64 +42 +``` + +Una ventana de verdad —con decoración, *File/Edit/View*, minimizar/maximizar/cerrar—, `bash` corriendo +adentro, el **kernel propio de hammer** contestando, y el `qalc` que empaquetamos una hora antes +devolviendo 42. Se abre haciendo click en su icono en la biblioteca de aplicaciones +(`cosmic-biblioteca-con-app-qemu-2026-08-04.png`), que hasta hoy salía vacía **con razón**: los 20 +`.desktop` de la imagen eran `NoDisplay=true`. Éste no lo es, y es el primero. + +**Selló a la primera, y eso es noticia por lo que arrastra**: su `Cargo.toml` depende de +**`cosmic-files`** —el gestor de ficheros entra como LIBRERÍA, por el selector y el +arrastrar-y-soltar—, así que compilar la terminal compila medio gestor de ficheros. Mismo patrón que +`cosmic-settings-config` en los applets: **en esta suite las «aplicaciones» se usan unas a otras como +crates**, y el grafo de deps de Cargo no se parece al mapa de componentes. + +`wgpu` viene en `default`, al revés que el resto de los clientes que pintan con tiny-skia. Se dejó +como está: `wgpu` y `naga` ya se habían compilado enteros para `cosmic-workspaces`, así que el costo +estaba pago, y apartarse de las features por defecto es apartarse de la única combinación que +upstream prueba. Cierra con **dos `NEEDED`**: `libxkbcommon.so.0` y `libc.so`. + +**Terminfo, para la próxima:** la ncurses del corpus es *libs-only* y no instala la base de terminfo, +pero trae `--with-fallbacks=…,xterm-256color,…` compilados. A la terminal no le hace falta —el que +necesita terminfo es lo que corre ADENTRO— y el hijo acá es el `sh` de busybox, que no lo usa. El día +que entren `vim` o `htop` en la imagen, hará falta un paquete de datos de terminfo. + ### ⏱ El panel tiene un DEADLINE de arranque: con 4 vCPU sale mutilado Medido: con `-smp 4` el panel arranca **sin ala izquierda, sin reloj y sin dock** —sólo la bandeja @@ -564,9 +597,9 @@ El número de procesos no distingue «arrancó» de «dibujó». El framebuffer ## Lo que falta, en orden -1. **Aplicaciones con ventana.** Sigue sin haber ninguna: los 20 `.desktop` de la imagen son - `NoDisplay=true`, así que la biblioteca sale vacía y eso es correcto. La calculadora del lanzador - ya da resultados, pero es una fila de texto, no una app. `cosmic-term` sería la primera de verdad. +1. **Más aplicaciones.** `cosmic-term` ya está y es la única. `cosmic-files` **ya se compila entero** + como dep de la terminal, así que empaquetarlo como aplicación es casi gratis; después + `cosmic-settings` y `cosmic-edit`. 2. `xdg-desktop-portal-cosmic` — sin él no hay captura de pantalla, ni file-chooser, ni compartir. 3. `cosmic-settings` (el panel de control) y `cosmic-files`: la suite tiene aplicaciones y el catálogo todavía no. diff --git a/docs/state/targets.toml b/docs/state/targets.toml index e27675c8..d00d94d6 100644 --- a/docs/state/targets.toml +++ b/docs/state/targets.toml @@ -107,6 +107,9 @@ paquetes = [ # Y el `qalc` al que el plugin `calc` le pasa la expresión: tercer nivel de hijo por PATH. Es la # primera raíz del perfil que existe para que una TECLA dé un resultado, no para que algo enlace. "libqalculate", + # La primera APLICACIÓN con ventana del catálogo, y la primera entrada de la biblioteca que no es + # `NoDisplay`. Hasta acá el perfil listaba escritorio; desde acá lista también lo que se abre. + "cosmic-term", # Datos, no binarios: el tema de iconos (y el hicolor del que hereda), las tablas de xkb y una # tipografía. Ninguno es dep de build de nadie y sin ellos el escritorio arranca roto — sin puntero, # sin teclado o con tofu. diff --git a/recipes/incoming-cosmic/cosmic-term.toml b/recipes/incoming-cosmic/cosmic-term.toml new file mode 100644 index 00000000..07a716fa --- /dev/null +++ b/recipes/incoming-cosmic/cosmic-term.toml @@ -0,0 +1,57 @@ +# 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" + +[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"] diff --git a/scripts/cosmic/hydrate-cosmic.sh b/scripts/cosmic/hydrate-cosmic.sh index 7b442faa..73807ed5 100755 --- a/scripts/cosmic/hydrate-cosmic.sh +++ b/scripts/cosmic/hydrate-cosmic.sh @@ -55,6 +55,10 @@ else # …y `qalc`, que es a lo que el plugin `calc` del lanzador le pasa la expresión. Tercer nivel de # hijo invisible para el grafo: sesión → lanzador → pop-launcher → qalc, todos por PATH. recipes/incoming-cosmic/libqalculate.toml + # La PRIMERA aplicación con ventana del catálogo. A diferencia de todo lo de arriba, ésta sí es + # alcanzable «desde el escritorio»: su `.desktop` no es `NoDisplay`, así que aparece en la + # biblioteca. Sigue siendo raíz a mano porque nadie la declara como dep de nada. + recipes/incoming-cosmic/cosmic-term.toml recipes/incoming-cosmic/cosmic-app-library.toml recipes/incoming-cosmic/cosmic-workspaces-epoch.toml # Ni binario ni librería: DATOS. El tema de iconos de COSMIC — sin él el escritorio no se ve