cosmic: los componentes que MATAN la sesión son TRES, no uno — corrección medida

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) <noreply@anthropic.com>
This commit is contained in:
2026-08-03 14:25:12 -04:00
co-authored by Claude Opus 5
parent 0f2f9ec2ee
commit 999e9bdcb5
2 changed files with 41 additions and 28 deletions
+18 -5
View File
@@ -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.
+23 -23
View File
@@ -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 &