GNOME deja de ser la cáscara: tres extensiones y la app que el proyecto no instala y todo el mundo
termina instalando. El perfil queda 190/190 con 28 raíces, deuda 0.
dash-to-panel v73 junta dash, ventanas y bandeja en una sola barra (lo que más cambia el uso)
appindicator v64 devuelve los ICONOS DE BANDEJA que GNOME quitó; sin ella las apps que usan
StatusNotifierItem corren y no tienen dónde mostrarse
blur-my-shell v72 (ya estaba; se le saca el override, ver abajo)
gnome-tweaks 46.1 tema, iconos, cursor, tipografías, los botones de minimizar/maximizar que
GNOME esconde, y el interruptor de las extensiones
⚠ LA LISTA DE ACTIVAS SE MUEVE A UN SOLO SITIO, y esto era una bomba de relojería. `enabled-extensions`
es un ARRAY: un override de GSettings lo escribe ENTERO. Con la primera extensión el override vivía
en su receta y funcionaba; con la segunda NO se habrían sumado — ganaría la que compile última
(orden alfabético) y las otras quedarían instaladas y MUERTAS, sin un solo error. Ahora la arma
`scripts/gnome/gnome-start-qemu.sh`, que ya compilaba los esquemas al arrancar, enumerando los uuid
presentes en /usr/share/gnome-shell/extensions. La política es «lo que la imagen instala, se
activa»; el dconf del usuario gana sobre el default.
Una receta NO puede ser ese sitio: hammer exige `[source]` en toda receta («missing field `source`»),
así que no hay forma de escribir una receta de pura política. Se probó el bloque contra un árbol de
juguete: lista las dos extensiones, salta un directorio sin metadata.json, el override compila con
stderr vacío y `gsettings get` devuelve las dos. Y si la lista cambia borra `gschemas.compiled` para
forzar recompilación — sin eso, una imagen ya arrancada ignoraría la extensión nueva en silencio.
⚠ EL HALLAZGO CARO: `msgfmt` de gettext-tiny REVIENTA con las formas plurales del árabe. SIGILL,
exit 132, «index 6 out of bounds for type 'size_t[6]'», y deja un .mo de 0 bytes. Reproducido FUERA
de la receta con el binario sellado. No es el idioma sino el mensaje: blur-my-shell compila su
ar.po sin problema porque no tiene NINGÚN plural (msgstr[5] = 0); el de tweaks tiene exactamente
uno. Acá se saca `ar` del LINGUAS y se pierde la traducción de UNA app, con el diagnóstico escrito
en la receta. ARREGLARLO ES OTRA UNIDAD DE TRABAJO: gettext-tiny la usan 108 recetas.
Cada receta usa el mecanismo de SU upstream, que no es el mismo en las tres:
blur-my-shell `make build` llama a `gnome-extensions pack` —el CLI que nuestro shell apaga— así
que se copia el árbol a mano, con el layout LEÍDO del zip de EGO y comparado
contra él (idéntico, sin sobras ni faltantes)
dash-to-panel su Makefile tiene un `install` que honra DESTDIR y hace lo de un paquete de
distro: gschema y locale a los directorios GLOBALES. ⚠ `VERSION=73` se pasa a
mano porque sin ella el Makefile hace `git describe` y el árbol viene por
`git archive`, sin `.git` ⇒ metadata quedaría con el marcador "version": 9999
appindicator meson. ⚠ `-Dlocal_install=disabled` explícito: en `auto` decide mirando si el uid
es 0, o sea que hoy acierta POR ACCIDENTE — y si el lab dejara de correr como
root instalaría en $HOME/.local y el artefacto sellaría vacío. Y `jq` va en deps
aunque sea JavaScript puro: su meson saca el uuid del metadata.json con jq
⚠ gnome-tweaks NO costó ninguna receta nueva, y eso hubo que medirlo: su meson declara siete deps
mínimas de runtime y las siete ya estaban selladas. La que parecía traer una cadena de Python
entera —`pygobject-3.0`— la provee `py3-gobject`, que YA ESTABA en el corpus con otro nombre y
publica `pygobject-3.0.pc`. El nombre no es el hecho, otra vez.
Sí costó dos deps que el configure reclamó y que son el patrón `.pc Requires` → `[deps].build`:
`appstream` (la pide `libadwaita-1.pc` y el error culpa a libadwaita, que está bien instalada) y
`desktop-file-utils` (meson la busca como PROGRAMA para `update-desktop-database`).
Sus deps de RUNTIME —python3 y py3-gobject— van declaradas: es una app de Python, si no están en la
imagen se instala y no arranca, y ningún build lo delata.
Las cuatro licencias, verificadas en la fuente pineada y NINGUNA leída del COPYING —cuyo apéndice
«How to Apply» trae siempre la frase «or any later version»—: blur-my-shell del README del commit,
dash-to-panel y appindicator de la cabecera de sus fuentes, gnome-tweaks de su etiqueta SPDX.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LCt3ettR4Z7b6wPCBmbvEV
71 lines
1.4 KiB
JSON
71 lines
1.4 KiB
JSON
{
|
|
"schema": "hammer-drenaje/1",
|
|
"nota": "DERIVADO del grafo de estado por scripts/drenar.py — no editar a mano.",
|
|
"perfiles": {
|
|
"base": {
|
|
"grafo": "docs/state/build-state.json",
|
|
"nodos": 58,
|
|
"en_deuda": 0,
|
|
"ondas": 0,
|
|
"profundidad": 0,
|
|
"construibles_ya": [],
|
|
"olas": []
|
|
},
|
|
"cli": {
|
|
"grafo": "docs/state/build-state.json",
|
|
"nodos": 81,
|
|
"en_deuda": 0,
|
|
"ondas": 0,
|
|
"profundidad": 0,
|
|
"construibles_ya": [],
|
|
"olas": []
|
|
},
|
|
"escritorio-cosmic": {
|
|
"grafo": "docs/state/build-state-cosmic.json",
|
|
"nodos": 160,
|
|
"en_deuda": 0,
|
|
"ondas": 0,
|
|
"profundidad": 0,
|
|
"construibles_ya": [],
|
|
"olas": []
|
|
},
|
|
"escritorio-gnome": {
|
|
"grafo": "docs/state/build-state-gnome.json",
|
|
"nodos": 190,
|
|
"en_deuda": 0,
|
|
"ondas": 0,
|
|
"profundidad": 0,
|
|
"construibles_ya": [],
|
|
"olas": []
|
|
},
|
|
"escritorio-kde": {
|
|
"grafo": "docs/state/build-state-kde.json",
|
|
"nodos": 299,
|
|
"en_deuda": 0,
|
|
"ondas": 0,
|
|
"profundidad": 0,
|
|
"construibles_ya": [],
|
|
"olas": []
|
|
},
|
|
"escritorio-mirada": {
|
|
"grafo": "docs/state/build-state.json",
|
|
"nodos": 41,
|
|
"en_deuda": 0,
|
|
"ondas": 0,
|
|
"profundidad": 0,
|
|
"construibles_ya": [],
|
|
"olas": []
|
|
},
|
|
"escritorio-sway": {
|
|
"grafo": "docs/state/build-state-wlr.json",
|
|
"nodos": 205,
|
|
"en_deuda": 0,
|
|
"ondas": 0,
|
|
"profundidad": 0,
|
|
"construibles_ya": [],
|
|
"olas": []
|
|
}
|
|
},
|
|
"sin_medir": []
|
|
}
|