⚙ cosmic: cosmic-settings — el panel de control, y NO arrastra medio sistema
Sellada b3:716dac53. Cola 33/33, escritorio-cosmic 71/71. Abre desde el lanzador con la barra lateral entera (Red, Bluetooth, Accesibilidad, Escritorio, Pantallas, Sonido, Energía, Entrada, Aplicaciones, Fecha y hora, Sistema y cuentas). Tarda ~20s con render por software; no está colgado. La sorpresa buena: nada de NetworkManager, libpulse, udisks ni accountsservice — habla con los daemons por zbus, que es Rust puro. Se verificó ANTES de escribir la receta listando los crates -sys del Cargo.lock, que es donde vive la verdad sobre qué C hace falta: sólo drm-sys, input-sys, libudev-sys, dav1d-sys, wayland-sys (dlopen) y gettext-sys. Regla barata: grep '^name = ".*-sys"' Cargo.lock antes de adivinar deps por lo que el programa hace. Volvió a morder la doble barra de cosmic-protocols// (404 de GitHub, muere en el fetch con tres reintentos). Segunda víctima ⇒ es patrón de la suite, no rareza de un repo. Instala 32 .desktop, uno por página. Y default_schema va con find, no cp plano: es el árbol <Componente>/v1/<clave> de cosmic-config, donde cada clave es un fichero con su nombre. Deuda que deja su propio log: org.freedesktop.locale1 no lo sirve nadie ⇒ la página de idioma no podrá cambiar nada. Mismo tipo que login1, mismo arreglo. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
--- a/Cargo.toml 2026-08-04 15:30:22.590268861 -0400
|
||||
+++ b/Cargo.toml 2026-08-04 15:30:22.606608476 -0400
|
||||
@@ -70,8 +70,8 @@
|
||||
# cosmic-text = { git = "https://github.com/pop-os/cosmic-text//", rev = "b017d7c" }
|
||||
|
||||
[patch.'https://github.com/pop-os/cosmic-protocols']
|
||||
-cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "e95d895" }
|
||||
-cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "e95d895" }
|
||||
+cosmic-protocols = { git = "https://github.com/pop-os//cosmic-protocols", rev = "e95d895" }
|
||||
+cosmic-client-toolkit = { git = "https://github.com/pop-os//cosmic-protocols", rev = "e95d895" }
|
||||
|
||||
# [patch.'https://github.com/pop-os/cosmic-settings-daemon']
|
||||
# cosmic-settings-config = { git = "https://github.com/pop-os/cosmic-settings-daemon//", branch = "input_nobuild" }
|
||||
--- a/Cargo.lock 2026-08-04 15:30:22.590189381 -0400
|
||||
+++ b/Cargo.lock 2026-08-04 15:30:22.609054971 -0400
|
||||
@@ -1368,7 +1368,7 @@
|
||||
[[package]]
|
||||
name = "cosmic-client-toolkit"
|
||||
version = "0.2.0"
|
||||
-source = "git+https://github.com/pop-os/cosmic-protocols//?rev=e95d895#e95d89504513e1407f89a189aca328fbecc9eeef"
|
||||
+source = "git+https://github.com/pop-os//cosmic-protocols?rev=e95d895#e95d89504513e1407f89a189aca328fbecc9eeef"
|
||||
dependencies = [
|
||||
"bitflags 2.13.1",
|
||||
"cosmic-protocols",
|
||||
@@ -1481,7 +1481,7 @@
|
||||
[[package]]
|
||||
name = "cosmic-protocols"
|
||||
version = "0.2.0"
|
||||
-source = "git+https://github.com/pop-os/cosmic-protocols//?rev=e95d895#e95d89504513e1407f89a189aca328fbecc9eeef"
|
||||
+source = "git+https://github.com/pop-os//cosmic-protocols?rev=e95d895#e95d89504513e1407f89a189aca328fbecc9eeef"
|
||||
dependencies = [
|
||||
"bitflags 2.13.1",
|
||||
"wayland-backend",
|
||||
@@ -0,0 +1,70 @@
|
||||
# cosmic-settings — el panel de control. Tercera aplicación con ventana del catálogo.
|
||||
#
|
||||
# ── LO QUE NO ARRASTRA, Y ES LA BUENA NOTICIA ───────────────────────────────────────────────────
|
||||
# Un panel de control suena a la peor dep del mundo: red, audio, discos, usuarios, energía,
|
||||
# bluetooth. En COSMIC no lo es, porque **habla con los daemons por D-Bus vía `zbus`, que es Rust
|
||||
# puro**: no enlaza NetworkManager, ni libpulse, ni udisks, ni accountsservice. Se comprobó ANTES de
|
||||
# escribir la receta, listando los crates `-sys` del `Cargo.lock`, que es donde vive la verdad sobre
|
||||
# qué C hace falta:
|
||||
# drm-sys → libdrm · input-sys → libinput · libudev-sys → libudev-zero · dav1d-sys → dav1d
|
||||
# wayland-sys → dlopen (runtime) · gettext-sys → trae su propio C
|
||||
# O sea: el juego fijo de todo cliente, más `libdrm` (configuración de pantallas) y `dav1d`, que
|
||||
# vuelve a aparecer por la unificación de features de cargo — la misma que lo trajo con cosmic-bg.
|
||||
#
|
||||
# `rust-version = "1.93"` en el workspace; el sandbox tiene 1.96 ⇒ entra sin tocar nada.
|
||||
name = "cosmic-settings"
|
||||
version = "1.5.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/pop-os/cosmic-settings/archive/epoch-1.5.0/cosmic-settings-epoch-1.5.0.tar.gz"
|
||||
sha256 = "06070fae46b77a57f906b0ee670e9d5c8ec10604359653bc6ca7b1eece6237ec"
|
||||
# ⚠ LA MISMA BARRA DE MÁS QUE EN `cosmic-applets`, y falla igual de temprano: el manifiesto apunta a
|
||||
# `https://github.com/pop-os/cosmic-protocols//` (dos barras al final) para que cargo trate esa
|
||||
# fuente como DISTINTA de la normal y el `[patch]` de al lado no se apunte a sí mismo. GitHub
|
||||
# devuelve **404** a esa forma, así que `cargo vendor` no puede clonar y el build muere en el fetch:
|
||||
# failed to load source for dependency `cosmic-client-toolkit` ← con tres reintentos de red
|
||||
# La barra se MUEVE al medio (`pop-os//cosmic-protocols`), que es la forma que usa `cosmic-comp` —y
|
||||
# por eso ése construyó sin parche—. Se tocan `Cargo.toml` **y** `Cargo.lock`: cambiar sólo uno rompe
|
||||
# el `--locked` del build hermético.
|
||||
patches = ["cosmic-settings-protocols-url.patch"]
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
# Dinámico como todo cliente de la suite: `wayland-client` entra con la feature `dlopen` y un musl
|
||||
# estático no la honra.
|
||||
link = "dynamic"
|
||||
# El workspace es VIRTUAL (no tiene paquete raíz) pero declara
|
||||
# `default-members = ["cosmic-settings"]`, así que `-p` deja el target único que `cargo rustc --`
|
||||
# exige. Sin `-p`, cargo intentaría construir los ~30 miembros (`pages/*`, `subscriptions/*`).
|
||||
flags = ["-p", "cosmic-settings", "--bin", "cosmic-settings"]
|
||||
|
||||
[build.phases]
|
||||
# El `just install` traducido, con `rootdir=/`. Son CUATRO clases de fichero y ninguna es opcional:
|
||||
# · el binario;
|
||||
# · `target/xdgen/` → los `.desktop`, que el build GENERA (crate `xdgen`). Acá son VARIOS, uno por
|
||||
# página del panel (pantalla, sonido, red…), así que la biblioteca lista cada sección como
|
||||
# entrada propia. Por eso es un `find`, no un `cp` de un fichero.
|
||||
# · `resources/default_schema/` → la config por defecto de cosmic-config, mismo árbol
|
||||
# `<Componente>/v1/<clave>` que ya mordió en cosmic-comp: **cada clave es UN fichero cuyo nombre
|
||||
# es la clave**, así que hay que preservar la estructura (de ahí el `find`, no un `cp` plano).
|
||||
# · las reglas de polkit: sin ellas el panel abre pero no puede cambiar nada que pida autoridad
|
||||
# (usuarios, hora del sistema). Van con el paquete, no con el shim de arje.
|
||||
install = '''
|
||||
mkdir -p /out/usr/bin /out/usr/share/applications /out/usr/share/metainfo \
|
||||
/out/usr/share/cosmic /out/usr/share/icons/hicolor \
|
||||
/out/usr/share/polkit-1/actions /out/usr/share/polkit-1/rules.d
|
||||
cp target/release/cosmic-settings /out/usr/bin/cosmic-settings
|
||||
chmod 755 /out/usr/bin/cosmic-settings
|
||||
cp resources/com.system76.CosmicSettings.metainfo.xml /out/usr/share/metainfo/
|
||||
cp resources/polkit-1/rules.d/cosmic-settings.rules /out/usr/share/polkit-1/rules.d/
|
||||
cp resources/polkit-1/actions/com.system76.CosmicSettings.Users.policy /out/usr/share/polkit-1/actions/
|
||||
[ -d target/xdgen ] && (cd target/xdgen && find . -type f -exec cp --parents '{}' /out/usr/share/applications/ \;) || true
|
||||
(cd resources/default_schema && find . -type f -exec cp --parents '{}' /out/usr/share/cosmic/ \;)
|
||||
(cd resources/icons && find . -type f -exec cp --parents '{}' /out/usr/share/icons/hicolor/ \;)
|
||||
'''
|
||||
|
||||
[deps]
|
||||
# El juego fijo de todo cliente + `libdrm` (páginas de pantalla) + `dav1d` (unificación de features
|
||||
# de cargo, igual que en cosmic-bg). Nada de NetworkManager/pipewire/udisks: todo eso es zbus.
|
||||
build = ["libxkbcommon", "pkgconf", "libudev-zero", "libinput", "libdrm", "dav1d"]
|
||||
Reference in New Issue
Block a user