cosmic: sctk ENLAZA libxkbcommon — «habla Wayland en Rust» no quiere decir «no toca C»
cosmic-bg se escribió sin [deps] con ese argumento y reventó en el build.rs de smithay-client-toolkit pidiendo xkbcommon.pc. El que dlopea xkbcommon es winit, que es otra capa. Hablar el protocolo en Rust dice cómo viaja el byte, no con qué se interpreta un teclado. El link=static sigue siendo verdad: el artefacto de libxkbcommon trae .a además de .so. Corolario anotado en el runbook: todo cliente de la suite va a necesitar al menos libxkbcommon + pkgconf. Entran además cosmic-idle (cliente Wayland puro, SIN deps a propósito: no usa sctk y no necesita interpretar teclas) y cosmic-osd, que es el primer cliente de iced/libcosmic y por eso vale como sonda: panel, launcher, app-library, workspaces y notifications comparten su mismo sustrato exacto. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -95,6 +95,12 @@ separa la capa de UI del transporte; sin él, las dos preguntas llegan juntas.
|
||||
6. **Las features de smithay que asustan no cuestan deps de build**: `backend_vulkan` (crate `ash`),
|
||||
`backend_x11` (`x11rb` con `dl-libxcb`) y `xwayland` cargan todo por **dlopen**. Son deuda de
|
||||
RUNTIME —libxcb y vulkan-loader viven hoy sólo en la cola KDE—, no un muro de compilación.
|
||||
7. **«Habla Wayland en Rust» ≠ «no toca C».** cosmic-bg se escribió sin `[deps]` con ese argumento y
|
||||
reventó en el `build.rs` de `smithay-client-toolkit` pidiendo `xkbcommon.pc`: **sctk ENLAZA
|
||||
libxkbcommon**; el que la dlopea es `winit`, que es otra capa. Hablar el protocolo en Rust dice
|
||||
cómo viaja el byte, no con qué se interpreta un teclado. `libxkbcommon` + `pkgconf` en `[deps]`, y
|
||||
el `link = "static"` sigue siendo verdad porque su artefacto trae `.a` además de `.so`.
|
||||
**Corolario para el resto de la cola: todo cliente de la suite va a necesitar al menos esos dos.**
|
||||
|
||||
## Cómo se construye
|
||||
|
||||
|
||||
@@ -7,7 +7,13 @@
|
||||
# imágenes con crates puros (image, jxl-oxide, fast_image_resize). **No toca libcosmic ni iced.**
|
||||
# Así que si el fondo pinta y el panel no, el problema es de la capa de UI, no del transporte.
|
||||
#
|
||||
# De ahí que vaya `link = "static"`, a diferencia del compositor: acá no hay una sola dep en C.
|
||||
# ── PERO NO ES RUST PURO, Y ESO SE MIDIÓ, NO SE SUPUSO ──────────────────────────────────────────
|
||||
# El primer intento salió sin `[deps]` con el argumento «un cliente Wayland en Rust no toca C», y
|
||||
# reventó en el `build.rs` de smithay-client-toolkit pidiendo `xkbcommon.pc`. **sctk ENLAZA
|
||||
# libxkbcommon; no la dlopea** — el que la dlopea es winit, que es otra capa. La regla que sale:
|
||||
# «habla el protocolo en Rust» dice cómo viaja el byte, no con qué se interpreta un teclado.
|
||||
# Como el artefacto de libxkbcommon trae `.a` además de `.so`, el `link = "static"` sigue siendo
|
||||
# verdad y no una etiqueta.
|
||||
#
|
||||
# El árbol es un workspace con `config/` como miembro (cosmic-bg-config), que es lo que leen los
|
||||
# demás componentes para saber qué fondo hay puesto. Los defaults van a `/usr/share/cosmic/<APPID>/`
|
||||
@@ -34,3 +40,6 @@ cp target/release/cosmic-bg /out/usr/bin/cosmic-bg
|
||||
chmod 755 /out/usr/bin/cosmic-bg
|
||||
cd data && find v1 -type f -exec install -Dm0644 {} /out/usr/share/cosmic/com.system76.CosmicBackground/{} \;
|
||||
'''
|
||||
|
||||
[deps]
|
||||
build = ["libxkbcommon", "pkgconf"]
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
# cosmic-idle — el que apaga la pantalla y dispara el bloqueo por inactividad. Cliente Wayland puro:
|
||||
# `wayland-client` + los protocolos `staging`/`wlr` de idle-notify, `calloop` para el bucle, y zbus
|
||||
# contra UPower para saber si hay batería.
|
||||
#
|
||||
# Sin `[deps]` a propósito y no por descuido: a diferencia de cosmic-bg NO usa smithay-client-toolkit
|
||||
# —que es quien enlaza libxkbcommon (ver el gotcha 7 del runbook)—, y no necesita interpretar teclas:
|
||||
# le alcanza con que el compositor le avise que nadie tocó nada. Si el build pide un `.pc`, el que lo
|
||||
# pide se ve en el `build.rs` que panickea, y eso es un dato, no una conjetura.
|
||||
name = "cosmic-idle"
|
||||
version = "1.5.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/pop-os/cosmic-idle/archive/epoch-1.5.0/cosmic-idle-epoch-1.5.0.tar.gz"
|
||||
sha256 = "f6eab0ed81bba6bd3a6dfb3ec78471a152852c59e6887a74206f4b59865df7c1"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = ["--bin", "cosmic-idle"]
|
||||
|
||||
[build.phases]
|
||||
install = '''
|
||||
mkdir -p /out/usr/bin
|
||||
cp target/release/cosmic-idle /out/usr/bin/cosmic-idle
|
||||
chmod 755 /out/usr/bin/cosmic-idle
|
||||
'''
|
||||
@@ -0,0 +1,35 @@
|
||||
# cosmic-osd — los avisos flotantes de volumen, brillo y bloqueo de mayúsculas. **Es el primer cliente
|
||||
# de iced/libcosmic de la cola, y por eso importa más de lo que su función sugiere.**
|
||||
#
|
||||
# Panel, launcher, app-library, workspaces y notifications comparten exactamente el mismo sustrato
|
||||
# (`libcosmic` con `winit` + `wayland` + `multi-window`), así que lo que cueste acá lo cuestan todos y
|
||||
# lo que salga gratis acá sale gratis cinco veces. Se elige el OSD como sonda por ser el más chico de
|
||||
# los seis: mismo muro, menos superficie propia donde perderse si falla.
|
||||
#
|
||||
# `default-features = false` en su declaración de libcosmic no es un detalle: deja afuera el renderer
|
||||
# `wgpu`, así que la pintura es por CPU (tiny-skia) y NO hace falta Vulkan en build. Es la misma
|
||||
# postura que ya obligó QEMU en las campañas KDE y GNOME, pero acá viene elegida por upstream.
|
||||
#
|
||||
# `libxkbcommon` + `pkgconf` por el gotcha 7 del runbook: winit/sctk ENLAZAN xkbcommon.
|
||||
name = "cosmic-osd"
|
||||
version = "1.5.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/pop-os/cosmic-osd/archive/epoch-1.5.0/cosmic-osd-epoch-1.5.0.tar.gz"
|
||||
sha256 = "de1a409c95305059f0c79f1dff0089f7cf6aaf9b2b7201e982da9895d58ad4a3"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = ["--bin", "cosmic-osd"]
|
||||
|
||||
[build.phases]
|
||||
install = '''
|
||||
mkdir -p /out/usr/bin
|
||||
cp target/release/cosmic-osd /out/usr/bin/cosmic-osd
|
||||
chmod 755 /out/usr/bin/cosmic-osd
|
||||
'''
|
||||
|
||||
[deps]
|
||||
build = ["libxkbcommon", "pkgconf"]
|
||||
Reference in New Issue
Block a user