cosmic: pop-launcher — el lanzador eran DOS programas, y ahora Super abre
cosmic-launcher sólo dibuja: manda lo tecleado por stdin a un proceso hijo, pop-launcher, que es quien busca. Sin ese binario la ventana no tiene qué mostrar y no se muestra — mismo modo de falla que el panel sin applets: falta un HIJO, no una librería, y el log del padre se lee sano. Vive en otro repo (pop-os/launcher), fuera del pin epoch-N. La versión la fija el Cargo.lock de cosmic-launcher (rev a332a3a7 de la 1.2.7), no el último tag: el lock es lo que garantiza que hablen el mismo protocolo. Tarball por commit, porque no hay tag que nombre esa rev. Selló a la primera, b3:64a5cbaa, con un solo NEEDED: libc.so. Verificado de punta a punta: Super abre el lanzador, «?» lista los seis plugins con su sintaxis (o sea que la enumeración y el IPC JSON-sobre-stdio andan) y «=2+2» LANZA el plugin, que contesta «qalc command is not installed». Esa respuesta es la mejor prueba disponible: el hijo corrió, evaluó y devolvió fila. Falta libqalculate, que es un paquete, no un problema. Cola 27/27, escritorio-cosmic 63/63. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 8.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 68 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
@@ -106,8 +106,9 @@ Más `cosmic-settings-daemon` y `xdg-desktop-portal-cosmic` fuera de esa lista.
|
||||
| `cosmic-app-library` | ✅ sellado | `b3:b2a163e7` |
|
||||
| `cosmic-workspaces-epoch` | ✅ sellado (necesitó `mesa`, ver gotcha 11) | `b3:a031249e` |
|
||||
| **`cosmic-applets`** (19 binarios en uno) | ✅ **sellado** (necesitó `dbus-shared`, ver gotcha 10) | `b3:3e53a325` |
|
||||
| `pop-launcher` 1.2.7 (otro repo, ver abajo) | ✅ sellado a la primera | `b3:64a5cbaa` |
|
||||
|
||||
**La cola está COMPLETA: 26 recetas, `escritorio-cosmic` 62/62.**
|
||||
**La cola está COMPLETA: 27 recetas, `escritorio-cosmic` 63/63.**
|
||||
|
||||
**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).
|
||||
@@ -447,10 +448,36 @@ es de qué fichero son, no dónde más aparece esa palabra.*
|
||||
**Es el riesgo del pin lockstep asomando desde adentro de upstream**: el dato y el parser del *mismo*
|
||||
epoch no coinciden.
|
||||
|
||||
**`Super` a secas sigue sin abrir nada, y no es un bug nuestro**: liga `System(Launcher)`, y
|
||||
`cosmic-launcher` es sólo la interfaz — el motor de búsqueda es **`pop-launcher`**, un binario aparte
|
||||
que el catálogo todavía no tiene (`pop-launcher failed to start: No such file or directory`). Los
|
||||
atajos andan; lo que falta es el paquete.
|
||||
**`Super` abre el lanzador** — pero hizo falta un paquete más, y de otro repo: ver abajo.
|
||||
|
||||
### 🔎 `pop-launcher`: el lanzador es DOS programas
|
||||
|
||||
`Super` no abría nada y el único rastro era una línea que no menciona ninguna tecla:
|
||||
`ERROR pop-launcher failed to start: No such file or directory`. **`cosmic-launcher` es sólo la
|
||||
interfaz**: dibuja la lista y manda lo tecleado por stdin a un proceso hijo, `pop-launcher`, que es
|
||||
quien busca. Sin ese binario la ventana no tiene qué mostrar, así que no se muestra — el mismo modo
|
||||
de falla que el panel sin applets: *lo que falta es un HIJO, no una librería, y el log del padre se
|
||||
lee sano.*
|
||||
|
||||
Vive en **otro repo** (`pop-os/launcher`), no versiona por `epoch-N` y no entra en el pin lockstep.
|
||||
**La versión la fija el `Cargo.lock` de cosmic-launcher** —rev `a332a3a7` de la 1.2.7—, no el último
|
||||
tag del repo: el lock es lo que garantiza que hablen el mismo protocolo. El tarball se pide por
|
||||
commit (`/archive/<sha>.tar.gz`), porque no hay tag que nombre esa rev. Selló a la primera
|
||||
(`b3:64a5cbaa`) con **un solo `NEEDED`: `libc.so`**.
|
||||
|
||||
Es otro **multiplexor por symlink**, como cosmic-applets: un binario, y cada plugin es un enlace con
|
||||
su nombre dentro de su propio directorio junto al `plugin.ron` que lo describe. El servicio enumera
|
||||
`plugins/*/`; si está el `.ron` y falta el enlace —o al revés— el plugin no existe para él, **sin
|
||||
error**. Ojo con el `sed 's/_/-/'` de upstream: cambia sólo el primer guión bajo, así que el
|
||||
directorio es `desktop_entries` y el ejecutable de adentro `desktop-entries`. Son dos nombres
|
||||
distintos a propósito.
|
||||
|
||||
Verificado de punta a punta (`cosmic-super-lanzador-`, `cosmic-pop-launcher-plugins-`,
|
||||
`cosmic-pop-launcher-calc-qemu-2026-08-04.png`): `Super` abre el lanzador, `?` lista los seis plugins
|
||||
con su sintaxis —o sea que la enumeración y el IPC JSON-sobre-stdio andan— y `=2+2` **lanza el
|
||||
plugin, que contesta «qalc command is not installed»**. Esa respuesta es la mejor prueba que había
|
||||
disponible: el proceso hijo corrió, evaluó la consulta y devolvió una fila. Lo que falta ahora es
|
||||
`libqalculate` (el binario `qalc`), que es un paquete, no un problema.
|
||||
|
||||
### ⏱ El panel tiene un DEADLINE de arranque: con 4 vCPU sale mutilado
|
||||
|
||||
@@ -468,7 +495,10 @@ El número de procesos no distingue «arrancó» de «dibujó». El framebuffer
|
||||
|
||||
## Lo que falta, en orden
|
||||
|
||||
1. `xdg-desktop-portal-cosmic` — sin él no hay captura de pantalla, ni file-chooser, ni compartir.
|
||||
1. **Aplicaciones.** No hay ni una: los 20 `.desktop` de la imagen son `NoDisplay=true`. El primer
|
||||
candidato barato es `libqalculate` (el binario `qalc`), que es lo único que le falta al plugin de
|
||||
la calculadora para dar un resultado en vez de decir que no está.
|
||||
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.
|
||||
4. `cosmic-greeter` (hoy `cosmic-session` lo lanza y falla con ENOENT, sin consecuencias) y
|
||||
|
||||
@@ -37,9 +37,9 @@
|
||||
"sealed": 74
|
||||
},
|
||||
"escritorio-cosmic": {
|
||||
"raices": 18,
|
||||
"clausura": 62,
|
||||
"sealed": 62
|
||||
"raices": 19,
|
||||
"clausura": 63,
|
||||
"sealed": 63
|
||||
},
|
||||
"escritorio-mirada": {
|
||||
"raices": 14,
|
||||
@@ -47,7 +47,7 @@
|
||||
"sealed": 31
|
||||
}
|
||||
},
|
||||
"sin_perfil": 650,
|
||||
"sin_perfil": 649,
|
||||
"orphan_deps": [],
|
||||
"topo_ok": true,
|
||||
"nodes": {
|
||||
@@ -10658,7 +10658,9 @@
|
||||
"state": "sealed",
|
||||
"blocked_by": [],
|
||||
"unblocks": 0,
|
||||
"perfiles": [],
|
||||
"perfiles": [
|
||||
"escritorio-cosmic"
|
||||
],
|
||||
"dependientes_total": 0
|
||||
},
|
||||
"popeye": {
|
||||
|
||||
@@ -101,6 +101,9 @@ paquetes = [
|
||||
# Los applets del panel. No es un componente que la sesión lance: lo spawnea el PANEL, por AppID,
|
||||
# y sin ellos arranca y no se dibuja. Un binario multiplexor con veinte symlinks.
|
||||
"cosmic-applets",
|
||||
# El MOTOR del lanzador, de otro repo y fuera del pin `epoch-N`: `cosmic-launcher` sólo dibuja y
|
||||
# lanza a `pop-launcher` como proceso hijo por PATH. Sin él, `Super` no abre nada.
|
||||
"pop-launcher",
|
||||
# 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.
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
# pop-launcher — el MOTOR del lanzador. No es de la suite COSMIC y por eso casi se pasa por alto.
|
||||
#
|
||||
# ── POR QUÉ APARECE RECIÉN AHORA ────────────────────────────────────────────────────────────────
|
||||
# `cosmic-launcher` selló, arranca, se registra en el bus… y `Super` no abre nada. La razón está en
|
||||
# una línea del serial que no menciona ninguna tecla:
|
||||
# ERROR pop-launcher failed to start: No such file or directory (os error 2)
|
||||
# `cosmic-launcher` es **sólo la interfaz**: dibuja la lista y manda lo que tecleás por stdin a un
|
||||
# proceso hijo, `pop-launcher`, que es quien busca. Sin ese binario la ventana no tiene nada que
|
||||
# mostrar, así que no se muestra. Mismo modo de falla que el panel sin applets: **el componente que
|
||||
# falta es un HIJO, no una librería**, y el log del padre se lee sano.
|
||||
#
|
||||
# Vive en OTRO repo (`pop-os/launcher`), no versiona por `epoch-N` y no entra en el pin lockstep de
|
||||
# la suite: la versión la fija el `Cargo.lock` de cosmic-launcher, que pinea la rev exacta
|
||||
# `a332a3a7` de la 1.2.7. Ese lock es la fuente de verdad — no el último tag del repo, que podría
|
||||
# hablar otro protocolo con la interfaz que ya tenemos sellada.
|
||||
name = "pop-launcher"
|
||||
version = "1.2.7"
|
||||
|
||||
[source]
|
||||
# Tarball por COMMIT, no por tag: la rev sale del Cargo.lock de cosmic-launcher y no hay tag que la
|
||||
# nombre. GitHub sirve `/archive/<sha>.tar.gz` igual que los de tag, y el sha256 de abajo lo ancla.
|
||||
tarball = "https://github.com/pop-os/launcher/archive/a332a3a73316a3595816dd02fe426a1d3543167a.tar.gz"
|
||||
sha256 = "adff78338a1680d9efa068741f6a95458b21e8278d96f4903f06004fda8ad7c6"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
# DINÁMICO, por la misma razón que todo cliente de la suite: el plugin `cosmic_toplevel` entra con
|
||||
# `cctk`/`sctk`, que traen `wayland-client` con la feature `dlopen`. Un musl estático no la honra.
|
||||
link = "dynamic"
|
||||
# El binario se llama `pop-launcher-bin` (paquete `bin/` del workspace) y se INSTALA como
|
||||
# `pop-launcher`. Los tres nombres —paquete, binario compilado, binario instalado— no coinciden, y el
|
||||
# que importa para que la interfaz lo encuentre es el último. `-p` además de `--bin` porque el
|
||||
# workspace tiene cuatro miembros y `cargo rustc` exige un único target cuando hay flags tras `--`.
|
||||
flags = ["-p", "pop-launcher-bin", "--bin", "pop-launcher-bin"]
|
||||
|
||||
[build.phases]
|
||||
# El `just install` traducido, con `rootdir=/` (o sea `/usr`, no `~/.local`).
|
||||
#
|
||||
# ⚠ EL DISEÑO ES UN MULTIPLEXOR POR SYMLINK, igual que cosmic-applets: hay UN binario y cada plugin
|
||||
# es un enlace con su nombre dentro de su propio directorio, junto al `plugin.ron` que lo describe.
|
||||
# El servicio enumera `plugins/*/` y ejecuta el enlace; si el `.ron` está y el enlace no —o al revés—
|
||||
# el plugin simplemente no existe para él, sin error. Por eso van los dos, y por eso el bucle no se
|
||||
# puede "simplificar" a copiar los .ron sueltos.
|
||||
#
|
||||
# El `sed 's/_/-/'` de upstream cambia SÓLO el primer guión bajo, y así queda: `desktop_entries` es
|
||||
# el directorio y `desktop-entries` el ejecutable de adentro. No es un descuido: son dos nombres
|
||||
# distintos a propósito.
|
||||
install = '''
|
||||
mkdir -p /out/usr/bin /out/usr/lib/pop-launcher/plugins /out/usr/lib/pop-launcher/scripts
|
||||
cp target/release/pop-launcher-bin /out/usr/bin/pop-launcher
|
||||
chmod 755 /out/usr/bin/pop-launcher
|
||||
for p in calc desktop_entries files find pop_shell pulse recent scripts terminal web cosmic_toplevel; do
|
||||
mkdir -p /out/usr/lib/pop-launcher/plugins/$p
|
||||
cp plugins/src/$p/*.ron /out/usr/lib/pop-launcher/plugins/$p/
|
||||
ln -sf /usr/bin/pop-launcher "/out/usr/lib/pop-launcher/plugins/$p/$(echo $p | sed 's/_/-/')"
|
||||
done
|
||||
cp -r scripts/. /out/usr/lib/pop-launcher/scripts/ 2>/dev/null || true
|
||||
'''
|
||||
|
||||
[deps]
|
||||
# El juego fijo de todo cliente de la suite. `sctk`/`cctk` (plugin cosmic_toplevel) enlazan
|
||||
# xkbcommon; udev/input llegan por la misma cadena. NO hace falta openssl: `reqwest` entra con
|
||||
# `default-features = false` y `rustls-tls`, o sea TLS en Rust puro — al revés que
|
||||
# cosmic-settings-daemon, que sí lo arrastra por native-tls.
|
||||
# Tampoco hace falta pulseaudio pese al plugin `pulse`: habla con el servidor por su protocolo, no
|
||||
# por libpulse.
|
||||
build = ["libxkbcommon", "pkgconf", "libudev-zero", "libinput"]
|
||||
@@ -49,6 +49,9 @@ else
|
||||
# Los tres que esos botones abren al hacer clic. No matan la sesión si faltan (el botón queda
|
||||
# muerto), pero un escritorio sin lanzador ni biblioteca de apps no se puede usar.
|
||||
recipes/incoming-cosmic/cosmic-launcher.toml
|
||||
# …y su MOTOR, que es otro binario y de otro repo: cosmic-launcher sólo dibuja, `pop-launcher`
|
||||
# busca. Lo lanza como proceso hijo por PATH, así que —otra vez— ningún grafo de deps lo ve.
|
||||
recipes/incoming-cosmic/pop-launcher.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
|
||||
|
||||
Reference in New Issue
Block a user