gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1346Shell 97Rust 63Markdown 571650 Definiciones

⎇ main recipes/incoming-cosmic/pop-launcher.toml TOML · 69 líneas · 4.3 KB Historia crudo

licencias: 936 de 1141 (82%) — detección por evidencia, con sus dos imprecisiones declaradas a6a9d59e4 · sergio ·

1# pop-launcher — el MOTOR del lanzador. No es de la suite COSMIC y por eso casi se pasa por alto.
2#
3# ── POR QUÉ APARECE RECIÉN AHORA ────────────────────────────────────────────────────────────────
4# `cosmic-launcher` selló, arranca, se registra en el bus… y `Super` no abre nada. La razón está en
5# una línea del serial que no menciona ninguna tecla:
6#     ERROR pop-launcher failed to start: No such file or directory (os error 2)
7# `cosmic-launcher` es **sólo la interfaz**: dibuja la lista y manda lo que tecleás por stdin a un
8# proceso hijo, `pop-launcher`, que es quien busca. Sin ese binario la ventana no tiene nada que
9# mostrar, así que no se muestra. Mismo modo de falla que el panel sin applets: **el componente que
10# falta es un HIJO, no una librería**, y el log del padre se lee sano.
11#
12# Vive en OTRO repo (`pop-os/launcher`), no versiona por `epoch-N` y no entra en el pin lockstep de
13# la suite: la versión la fija el `Cargo.lock` de cosmic-launcher, que pinea la rev exacta
14# `a332a3a7` de la 1.2.7. Ese lock es la fuente de verdad — no el último tag del repo, que podría
15# hablar otro protocolo con la interfaz que ya tenemos sellada.
16name    = "pop-launcher"
17version = "1.2.7"
18license = "MPL-2.0"
19
20[source]
21# Tarball por COMMIT, no por tag: la rev sale del Cargo.lock de cosmic-launcher y no hay tag que la
22# nombre. GitHub sirve `/archive/<sha>.tar.gz` igual que los de tag, y el sha256 de abajo lo ancla.
23tarball = "https://github.com/pop-os/launcher/archive/a332a3a73316a3595816dd02fe426a1d3543167a.tar.gz"
24sha256  = "adff78338a1680d9efa068741f6a95458b21e8278d96f4903f06004fda8ad7c6"
25
26[build]
27compiler = "zig-cc"
28target   = "x86_64-linux-musl"
29# DINÁMICO, por la misma razón que todo cliente de la suite: el plugin `cosmic_toplevel` entra con
30# `cctk`/`sctk`, que traen `wayland-client` con la feature `dlopen`. Un musl estático no la honra.
31link     = "dynamic"
32# El binario se llama `pop-launcher-bin` (paquete `bin/` del workspace) y se INSTALA como
33# `pop-launcher`. Los tres nombres —paquete, binario compilado, binario instalado— no coinciden, y el
34# que importa para que la interfaz lo encuentre es el último. `-p` además de `--bin` porque el
35# workspace tiene cuatro miembros y `cargo rustc` exige un único target cuando hay flags tras `--`.
36flags    = ["-p", "pop-launcher-bin", "--bin", "pop-launcher-bin"]
37
38[build.phases]
39# El `just install` traducido, con `rootdir=/` (o sea `/usr`, no `~/.local`).
40#
41# ⚠ EL DISEÑO ES UN MULTIPLEXOR POR SYMLINK, igual que cosmic-applets: hay UN binario y cada plugin
42# es un enlace con su nombre dentro de su propio directorio, junto al `plugin.ron` que lo describe.
43# El servicio enumera `plugins/*/` y ejecuta el enlace; si el `.ron` está y el enlace no —o al revés—
44# el plugin simplemente no existe para él, sin error. Por eso van los dos, y por eso el bucle no se
45# puede "simplificar" a copiar los .ron sueltos.
46#
47# El `sed 's/_/-/'` de upstream cambia SÓLO el primer guión bajo, y así queda: `desktop_entries` es
48# el directorio y `desktop-entries` el ejecutable de adentro. No es un descuido: son dos nombres
49# distintos a propósito.
50install = '''
51mkdir -p /out/usr/bin /out/usr/lib/pop-launcher/plugins /out/usr/lib/pop-launcher/scripts
52cp target/release/pop-launcher-bin /out/usr/bin/pop-launcher
53chmod 755 /out/usr/bin/pop-launcher
54for p in calc desktop_entries files find pop_shell pulse recent scripts terminal web cosmic_toplevel; do
55  mkdir -p /out/usr/lib/pop-launcher/plugins/$p
56  cp plugins/src/$p/*.ron /out/usr/lib/pop-launcher/plugins/$p/
57  ln -sf /usr/bin/pop-launcher "/out/usr/lib/pop-launcher/plugins/$p/$(echo $p | sed 's/_/-/')"
58done
59cp -r scripts/. /out/usr/lib/pop-launcher/scripts/ 2>/dev/null || true
60'''
61
62[deps]
63# El juego fijo de todo cliente de la suite. `sctk`/`cctk` (plugin cosmic_toplevel) enlazan
64# xkbcommon; udev/input llegan por la misma cadena. NO hace falta openssl: `reqwest` entra con
65# `default-features = false` y `rustls-tls`, o sea TLS en Rust puro — al revés que
66# cosmic-settings-daemon, que sí lo arrastra por native-tls.
67# Tampoco hace falta pulseaudio pese al plugin `pulse`: habla con el servidor por su protocolo, no
68# por libpulse.
69build = ["libxkbcommon", "pkgconf", "libudev-zero", "libinput"]