From 999e9bdcb5170aa1aee94311a6edee42368946b1 Mon Sep 17 00:00:00 2001 From: sergio Date: Mon, 3 Aug 2026 14:25:12 -0400 Subject: [PATCH] =?UTF-8?q?cosmic:=20los=20componentes=20que=20MATAN=20la?= =?UTF-8?q?=20sesi=C3=B3n=20son=20TRES,=20no=20uno=20=E2=80=94=20correcci?= =?UTF-8?q?=C3=B3n=20medida?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El arranque en modo session murió con 'failed to start notifications daemon' (main.rs:306). Grepeando '\.expect(' aparecen los tres: main.rs:255 cosmic-settings-daemon main.rs:306 cosmic-notifications main.rs:325 cosmic-panel O sea que el mínimo viable de una sesión COSMIC son CUATRO binarios: compositor más esos tres. Cómo me equivoqué, que es la parte reusable: leí start_component(), vi que sólo logueaba, y generalicé a 'todos menos el settings-daemon'. Pero notifications y panel NO PASAN por esa función — tienen su propio .expect() unas líneas antes. Buscar la función que lanza no es lo mismo que buscar los .expect del fichero, y grepear la construcción que mata cuesta lo mismo y no generaliza de más. De paso, el bloque que configura el fondo de color sale del branch de modo bare: estaba adentro, así que en modo session cosmic-bg se quedaba con el wallpaper por defecto (que vive en git-lfs y no existe) y la pantalla salía negra por una razón distinta de la que se estaba investigando. Co-Authored-By: Claude Opus 5 (1M context) --- docs/runbooks/cosmic-desktop.md | 23 +++++++++++---- scripts/cosmic/cosmic-start-qemu.sh | 46 ++++++++++++++--------------- 2 files changed, 41 insertions(+), 28 deletions(-) diff --git a/docs/runbooks/cosmic-desktop.md b/docs/runbooks/cosmic-desktop.md index e33cdb21..bef3e6a3 100644 --- a/docs/runbooks/cosmic-desktop.md +++ b/docs/runbooks/cosmic-desktop.md @@ -164,11 +164,24 @@ INFO cosmic_session: got environmental variables from cosmic-comp: [("WAYLAND_D ERROR panic: 'failed to start settings daemon: NotFound' src/main.rs:255 ``` -Es un `.expect()`, sin feature que lo apague. **Y es el ÚNICO así**: los demás componentes se lanzan -con `start_component()`, que ante un fallo sólo hace `error!("failed to start …")` y sigue -(`main.rs:558`). O sea que la sesión se puede probar con la suite a medias —el resto de las piezas que -falten van a aparecer como líneas de error y nada más—; el settings-daemon es la única cuya ausencia -la mata. **Esto corrige lo que decía la sección de +Es un `.expect()`, sin feature que lo apague. **Y NO es el único — son TRES**, y esto corrige lo que +esta misma sección afirmaba hace unas horas: + +| línea | componente | qué pasa si falta | +|---|---|---| +| `main.rs:255` | `cosmic-settings-daemon` | panic | +| `main.rs:306` | `cosmic-notifications` | panic | +| `main.rs:325` | `cosmic-panel` | panic | + +El resto (app-library, launcher, workspaces, osd, bg, idle) va por `start_component()`, que ante un +fallo sólo hace `error!("failed to start …")` y sigue (`main.rs:558`). O sea que **el mínimo viable de +una sesión COSMIC son cuatro binarios**: compositor + esos tres. + +**Cómo se equivocó el diagnóstico, que es la parte reusable**: leí `start_component()`, vi que sólo +logueaba, y generalicé a «todos menos el settings-daemon». Pero notifications y panel **no pasan por +esa función** — tienen su propio `.expect()` unas líneas antes. Buscar la función que lanza no es lo +mismo que buscar los `\.expect(` del fichero; **grepear la construcción que mata cuesta lo mismo y no +generaliza de más**. **Esto corrige lo que decía la sección de cosmic-settings-daemon**: no es que sin él se pierdan el brillo y el tema, es que **no hay sesión**. Queda por eso el modo `bare` en `cosmic-start` —el camino que upstream ya soporta como `install-bare-session`—: se lanza el compositor solo y los clientes a mano contra su WAYLAND_DISPLAY. diff --git a/scripts/cosmic/cosmic-start-qemu.sh b/scripts/cosmic/cosmic-start-qemu.sh index aae125e4..04d13e88 100644 --- a/scripts/cosmic/cosmic-start-qemu.sh +++ b/scripts/cosmic/cosmic-start-qemu.sh @@ -128,6 +128,29 @@ export XDG_DATA_DIRS=/usr/share XDG_CONFIG_DIRS=/etc/xdg mkdir -p "$XDG_RUNTIME_DIR" && chmod 700 "$XDG_RUNTIME_DIR" [ -w "$XDG_RUNTIME_DIR" ] || say "!! XDG_RUNTIME_DIR se perdió entre el arranque y ahora" +# ── FONDO: color liso, porque la imagen por defecto NO SE PUEDE EMPAQUETAR ──────────────────── +# El default de cosmic-bg apunta a `/usr/share/backgrounds/cosmic/orion_nebula_nasa_heic0601a.jpg`, +# que vive en el repo `cosmic-wallpapers`… en **git-lfs**: el tarball de GitHub pesa 20 KB y trae +# punteros, no imágenes. O sea que la receta obvia produciría un paquete de ficheros de texto. +# Mientras eso no se resuelva, se escribe la config de USUARIO con una fuente `Color`, que +# cosmic-bg soporta de fábrica. Va acá y no en el artefacto a propósito: es política de esta +# imagen de prueba, no algo que el paquete prometa. +if [ ! -f /usr/share/backgrounds/cosmic/orion_nebula_nasa_heic0601a.jpg ]; then + mkdir -p "$HOME/.config/cosmic/com.system76.CosmicBackground/v1" + cat > "$HOME/.config/cosmic/com.system76.CosmicBackground/v1/all" <<'RON' +( + output: "all", + source: Color(Single((0.13, 0.29, 0.53))), + filter_by_theme: true, + rotation_frequency: 3600, + filter_method: Lanczos, + scaling_mode: Zoom, + sampling_method: Alphanumeric, +) +RON + say "fondo: color liso (el wallpaper por defecto vive en git-lfs y no se empaqueta)" +fi + # ── MODO: bare (default) o session ────────────────────────────────────────────────────────────── # `cosmic-session` es el camino de producción, pero HOY no se puede usar: llama a # `cosmic-settings-daemon` con `.expect("failed to start settings daemon")` (src/main.rs:255) y @@ -177,29 +200,6 @@ done if [ -n "$WD" ] && [ "${COSMIC_MODE:-bare}" != session ]; then export WAYLAND_DISPLAY="$WD" - # ── FONDO: color liso, porque la imagen por defecto NO SE PUEDE EMPAQUETAR ──────────────────── - # El default de cosmic-bg apunta a `/usr/share/backgrounds/cosmic/orion_nebula_nasa_heic0601a.jpg`, - # que vive en el repo `cosmic-wallpapers`… en **git-lfs**: el tarball de GitHub pesa 20 KB y trae - # punteros, no imágenes. O sea que la receta obvia produciría un paquete de ficheros de texto. - # Mientras eso no se resuelva, se escribe la config de USUARIO con una fuente `Color`, que - # cosmic-bg soporta de fábrica. Va acá y no en el artefacto a propósito: es política de esta - # imagen de prueba, no algo que el paquete prometa. - if [ ! -f /usr/share/backgrounds/cosmic/orion_nebula_nasa_heic0601a.jpg ]; then - mkdir -p "$HOME/.config/cosmic/com.system76.CosmicBackground/v1" - cat > "$HOME/.config/cosmic/com.system76.CosmicBackground/v1/all" <<'RON' -( - output: "all", - source: Color(Single((0.13, 0.29, 0.53))), - filter_by_theme: true, - rotation_frequency: 3600, - filter_method: Lanczos, - scaling_mode: Zoom, - sampling_method: Alphanumeric, -) -RON - say "fondo: color liso (el wallpaper por defecto vive en git-lfs y no se empaqueta)" - fi - for c in cosmic-bg cosmic-panel cosmic-osd cosmic-notifications cosmic-app-library cosmic-launcher cosmic-idle; do if [ -x "/usr/bin/$c" ]; then "/usr/bin/$c" >"/tmp/$c.log" 2>&1 &