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 1465Shell 173Rust 96Markdown 943319 Sutichaykuna

⎇ 64005efcbd7f4aa6d6f2ab9d3a6fec8ec1bc30d4 recipes/incoming-gnome/gnome-shell-extension-appindicator.toml TOML · 65 siq'ikuna · 4.0 KB Ñawpa willay ch'uya

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

1# appindicator 64 — los ICONOS DE BANDEJA que GNOME quitó del shell. Es la extensión que hace que
2# aparezcan en el panel las apps que usan `StatusNotifierItem` / `org.kde.StatusNotifierItem` (y las
3# `libappindicator` viejas): clientes de chat, sincronizadores, gestores de portapapeles. Sin ella,
4# esas apps corren y no tienen dónde mostrarse.
5#
6# Tercera extensión del catálogo. El patrón y el porqué de usar el REPO y no el zip de
7# extensions.gnome.org están en la cabecera de `gnome-shell-extension-blur-my-shell`.
8# El tag `v64` es el que EGO sirve para shell 48, preguntado a su API — ⚠ y acá la pregunta SÍ
9# importó: el repo ya tiene `v65`, que es la que se habría tomado por reflejo.
10#
11# ══ ÉSTA SE CONSTRUYE CON MESON, NO CON UN MAKEFILE ════════════════════════════════════════════
12# Las otras dos son un `pack` y un `make install`; ésta trae `meson.build` con los módulos `gnome`
13# e `i18n`, y hace lo mismo que un paquete de distro cuando el prefix NO es local:
14#   · el árbol va a <prefix>/share/gnome-shell/extensions/<uuid>/
15#   · el gschema al directorio GLOBAL <prefix>/share/glib-2.0/schemas
16#   · los .mo a <prefix>/share/locale
17# ⚠ `-Dlocal_install=disabled` explícito: la opción viene en `auto`, y en `auto` decide mirando si
18# el prefix es /usr/local Y si el uid es 0. Nuestro sandbox corre como root con prefix /usr, así que
19# hoy resolvería bien por accidente — pero «funciona por accidente se ve igual que funciona por
20# diseño», y si mañana el lab dejara de ser root la instalación se iría a $HOME/.local y el artefacto
21# sellaría vacío.
22#
23# ⚠ `jq` VA EN [deps] AUNQUE LA EXTENSIÓN SEA JAVASCRIPT PURO: `meson.build:22` saca el uuid del
24# `metadata.json` con `run_command(jq, '-r', '.uuid', …)` — es una herramienta del sandbox, no una
25# librería que se enlace. Sin ella meson corta en el configure.
26name    = "gnome-shell-extension-appindicator"
27version = "64"
28# licencia: el `meson.build` declara `license: 'GPL2'` y las cabeceras de los fuentes (extension.js,
29# appIndicator.js…) dan la concesión completa: «either version 2 of the License, or (at your option)
30# any later version». ⚠ No se dedujo del LICENSE: su apéndice «How to Apply» contiene esa frase
31# siempre, así que buscarla ahí da positivo aunque el proyecto sea -only.
32license = "GPL-2.0-or-later"
33
34[source]
35repo   = "https://github.com/ubuntu/gnome-shell-extension-appindicator"
36commit = "c934adc6c97363b8e6bb161ca8d1ac62d1da3d63"  # tag v64 (ADR 0006: commit fijo, nunca HEAD)
37
38[build]
39compiler = "zig-cc"
40target   = "x86_64-linux-musl"
41link     = "dynamic"
42
43[build.phases]
44configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Dlocal_install=disabled"
45compile   = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
46install = '''
47set -e
48UUID="appindicatorsupport@rgcjonas.gmail.com"
49PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild
50D="/out/usr/share/gnome-shell/extensions/$UUID"
51
52# Guardián: se comprueba el RESULTADO, no la intención. Si `local_install` hubiera resuelto a
53# «local», esto habría instalado en $HOME/.local y el artefacto sellaría igual, vacío (regla 3 de
54# CLAUDE.md — un vacío llega hasta el final diciendo que todo fue bien).
55test -s "$D/metadata.json"
56test -s "$D/extension.js"
57grep -q '"48"' "$D/metadata.json"   # falla ruidoso si un bump deja de soportar shell 48
58# El gschema tiene que haber ido al directorio GLOBAL, que es el que compila el lanzador al arrancar.
59test -s /out/usr/share/glib-2.0/schemas/org.gnome.shell.extensions.appindicator.gschema.xml
60'''
61
62[deps]
63# `jq` es del configure (saca el uuid del metadata.json); `glib` trae glib-compile-schemas para el
64# módulo `gnome` de meson y `gettext-tiny` el msgfmt para el módulo `i18n`.
65build = ["meson", "samurai", "python3", "pkgconf", "jq", "glib", "pcre2", "libffi", "zlib", "gettext-tiny"]