gnome: dash-to-panel, appindicator y gnome-tweaks — y la lista de activas sale de las recetas

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
This commit is contained in:
Sergio
2026-09-09 19:41:52 +00:00
co-authored by Claude Opus 5
parent a37b47a004
commit 4e4a2c8d2a
8 changed files with 481 additions and 80 deletions
+186 -61
View File
@@ -1,16 +1,16 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 921,
"nodes": 923,
"sealed": 921,
"recipes": 924,
"nodes": 926,
"sealed": 924,
"ajeno": 2
},
"by_class": {
"ajeno": 2,
"c": 272,
"go": 362,
"gui": 48,
"gui": 51,
"kernel": 6,
"rust": 233
},
@@ -21,7 +21,7 @@
"ajeno": 2
},
"incoming-gnome": {
"sealed": 64
"sealed": 67
}
},
"by_profile": {
@@ -36,9 +36,9 @@
"sealed": 80
},
"escritorio-gnome": {
"raices": 25,
"clausura": 183,
"sealed": 183
"raices": 28,
"clausura": 190,
"sealed": 190
},
"escritorio-mirada": {
"raices": 17,
@@ -46,7 +46,7 @@
"sealed": 41
}
},
"sin_perfil": 661,
"sin_perfil": 660,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -500,7 +500,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 6
"dependientes_total": 7
},
"argo-rollouts": {
"iname": "argo-rollouts",
@@ -1356,6 +1356,7 @@
"unblocks": 0,
"perfiles": [
"cli",
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 4
@@ -1530,7 +1531,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 9
"dependientes_total": 10
},
"caligula": {
"iname": "caligula",
@@ -3102,7 +3103,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 10
"dependientes_total": 11
},
"curlie": {
"iname": "curlie",
@@ -3391,7 +3392,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 0
"dependientes_total": 1
},
"devspace": {
"iname": "devspace",
@@ -4236,7 +4237,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 66
"dependientes_total": 67
},
"expat-shared": {
"iname": "expat-shared",
@@ -4809,7 +4810,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 22
"dependientes_total": 23
},
"foot": {
"iname": "foot",
@@ -4935,7 +4936,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 26
"dependientes_total": 27
},
"freeze": {
"iname": "freeze",
@@ -4979,7 +4980,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 31
"dependientes_total": 32
},
"fselect": {
"iname": "fselect",
@@ -5206,7 +5207,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 8
"dependientes_total": 9
},
"gdk-pixbuf-shared": {
"iname": "gdk-pixbuf-shared",
@@ -5360,7 +5361,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 104
"dependientes_total": 107
},
"gh": {
"iname": "gh",
@@ -5450,7 +5451,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 25
"dependientes_total": 26
},
"gi-foreign-typelibs": {
"iname": "gi-foreign-typelibs",
@@ -5992,7 +5993,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 43
"dependientes_total": 46
},
"glib-introspected": {
"iname": "glib-introspected",
@@ -6021,7 +6022,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 29
"dependientes_total": 30
},
"glib-shared": {
"iname": "glib-shared",
@@ -6245,6 +6246,35 @@
],
"dependientes_total": 0
},
"gnome-shell-extension-appindicator": {
"iname": "gnome-shell-extension-appindicator",
"version": "64",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"gettext-tiny",
"glib",
"jq",
"libffi",
"meson",
"pcre2",
"pkgconf",
"python3",
"samurai",
"zlib"
],
"cls": "gui",
"queue": "incoming-gnome",
"foreign": false,
"hash": "b3:624995cae88d2a8997a3ea601569b83d3c255bf5dabfba34d8662bd1d8769683",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 0
},
"gnome-shell-extension-blur-my-shell": {
"iname": "gnome-shell-extension-blur-my-shell",
"version": "72",
@@ -6260,7 +6290,98 @@
"cls": "gui",
"queue": "incoming-gnome",
"foreign": false,
"hash": "b3:6b39a579c1d58e333c9c1d27875ba015705a340b883638afcde166fd6e6ac9d9",
"hash": "b3:c6fc6933317d86357e01d2cb056873f1713be64a349775d366ca6f5ac90d80ce",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 0
},
"gnome-shell-extension-dash-to-panel": {
"iname": "gnome-shell-extension-dash-to-panel",
"version": "73",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"gettext-tiny",
"glib",
"libffi",
"make",
"pcre2",
"zlib"
],
"cls": "gui",
"queue": "incoming-gnome",
"foreign": false,
"hash": "b3:620ee7a11e13f0da06358aaa0eaf524145f91d0e8c8a9debd74cc923a41a6aff",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 0
},
"gnome-tweaks": {
"iname": "gnome-tweaks",
"version": "46.1",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"appstream",
"cairo-shared",
"curl",
"desktop-file-utils",
"expat",
"fontconfig-shared",
"freetype-shared",
"fribidi",
"gdk-pixbuf",
"gettext-tiny",
"gi-foreign-girs",
"glib",
"glib-introspected",
"gobject-introspection",
"graphene",
"gsettings-desktop-schemas",
"gtk4",
"harfbuzz",
"iso-codes",
"libadwaita",
"libdrm",
"libepoxy",
"libffi",
"libgudev",
"libjpeg-turbo-shared",
"libpng-shared",
"libseccomp",
"libtiff-shared",
"libudev-zero",
"libxml2-shared",
"libxmlb",
"libyaml-shared",
"mesa",
"meson",
"openssl",
"pango",
"pcre2",
"pixman",
"pkgconf",
"py3-gobject",
"python3",
"samurai",
"wayland",
"wayland-protocols",
"xkeyboard-config",
"zlib-shared",
"zstd"
],
"cls": "gui",
"queue": "incoming-gnome",
"foreign": false,
"hash": "b3:ef9a900ea574f6d0129716b5ae3bc4b34b73450297adae3aeb2f21a3adb4e840",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
@@ -6491,7 +6612,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 31
"dependientes_total": 32
},
"gobuster": {
"iname": "gobuster",
@@ -7154,7 +7275,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 6
"dependientes_total": 7
},
"grcov": {
"iname": "grcov",
@@ -7330,7 +7451,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 4
"dependientes_total": 5
},
"gtk3": {
"iname": "gtk3",
@@ -7429,7 +7550,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 5
"dependientes_total": 6
},
"gtk4-hello": {
"iname": "gtk4-hello",
@@ -7710,7 +7831,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 8
"dependientes_total": 9
},
"harfbuzz-shared": {
"iname": "harfbuzz-shared",
@@ -8444,7 +8565,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 5
"dependientes_total": 6
},
"istioctl": {
"iname": "istioctl",
@@ -8614,9 +8735,10 @@
"unblocks": 0,
"perfiles": [
"cli",
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 0
"dependientes_total": 1
},
"jql": {
"iname": "jql",
@@ -9788,7 +9910,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 1
"dependientes_total": 2
},
"libarchive": {
"iname": "libarchive",
@@ -9945,7 +10067,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 149
"dependientes_total": 150
},
"libei": {
"iname": "libei",
@@ -10022,7 +10144,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 21
"dependientes_total": 22
},
"libevdev": {
"iname": "libevdev",
@@ -10089,7 +10211,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 110
"dependientes_total": 113
},
"libffi-shared": {
"iname": "libffi-shared",
@@ -10289,7 +10411,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 5
"dependientes_total": 6
},
"libgusb": {
"iname": "libgusb",
@@ -10467,7 +10589,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 20
"dependientes_total": 21
},
"libksba": {
"iname": "libksba",
@@ -10644,7 +10766,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 33
"dependientes_total": 34
},
"libpsl": {
"iname": "libpsl",
@@ -10747,7 +10869,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 4
"dependientes_total": 5
},
"libsecret": {
"iname": "libsecret",
@@ -10930,7 +11052,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 7
"dependientes_total": 8
},
"libudev-zero": {
"iname": "libudev-zero",
@@ -10957,7 +11079,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 45
"dependientes_total": 46
},
"libunibreak": {
"iname": "libunibreak",
@@ -11190,7 +11312,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 10
"dependientes_total": 11
},
"libxmlb": {
"iname": "libxmlb",
@@ -11218,7 +11340,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 7
"dependientes_total": 8
},
"libyaml": {
"iname": "libyaml",
@@ -11260,7 +11382,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 2
"dependientes_total": 3
},
"linux": {
"iname": "linux",
@@ -11665,7 +11787,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 118
"dependientes_total": 119
},
"mako": {
"iname": "mako",
@@ -11987,7 +12109,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 146
"dependientes_total": 147
},
"mesa-llvmpipe": {
"iname": "mesa-llvmpipe",
@@ -12083,7 +12205,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 123
"dependientes_total": 125
},
"micro": {
"iname": "micro",
@@ -13312,6 +13434,7 @@
"unblocks": 0,
"perfiles": [
"cli",
"escritorio-gnome",
"escritorio-sway"
],
"dependientes_total": 1
@@ -13399,7 +13522,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 28
"dependientes_total": 29
},
"openssl-threads": {
"iname": "openssl-threads",
@@ -13666,7 +13789,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 7
"dependientes_total": 8
},
"pango-shared": {
"iname": "pango-shared",
@@ -13848,7 +13971,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 82
"dependientes_total": 85
},
"pcre2-shared": {
"iname": "pcre2-shared",
@@ -14086,7 +14209,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 45
"dependientes_total": 46
},
"pkgconf": {
"iname": "pkgconf",
@@ -14110,7 +14233,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 395
"dependientes_total": 397
},
"plow": {
"iname": "plow",
@@ -14560,8 +14683,10 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [],
"dependientes_total": 1
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 2
},
"py3-jinja2": {
"iname": "py3-jinja2",
@@ -14654,7 +14779,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 314
"dependientes_total": 316
},
"qrcp": {
"iname": "qrcp",
@@ -15269,7 +15394,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 266
"dependientes_total": 268
},
"sassc": {
"iname": "sassc",
@@ -18043,7 +18168,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 160
"dependientes_total": 161
},
"wayland-protocols": {
"iname": "wayland-protocols",
@@ -18071,7 +18196,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 57
"dependientes_total": 58
},
"websocketd": {
"iname": "websocketd",
@@ -18552,7 +18677,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 6
"dependientes_total": 7
},
"xorriso": {
"iname": "xorriso",
@@ -18991,7 +19116,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 113
"dependientes_total": 115
},
"zlib-ng": {
"iname": "zlib-ng",
@@ -19033,7 +19158,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 85
"dependientes_total": 86
},
"zola": {
"iname": "zola",
@@ -19092,7 +19217,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 32
"dependientes_total": 33
}
}
}