tawasuyu

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 1181Shell 82Rust 62Markdown 521515 Definitions

atuq-nested: `CAPTURA=<png>` — la prueba en el píxel, en una variable

Durante horas dije «mirá tu pantalla» y reporté «el proceso vive» como si fuera lo mismo. No lo es:
la ventana estaba ahí desde el principio y lo que fallaba era el branding DENTRO del zip, que
ningún log iba a contar.

`grim` ya estaba en el corpus (`incoming-wlr`), se hidrata en el mismo rootfs y captura la pantalla
real contra el mismo socket wayland desde dentro de la jaula. Ahora es parte del runner: con
`CAPTURA=/ruta/foto.png` se lanza atuq, se espera a que pinte y se deja el PNG afuera para mirarlo.

De paso, la resolución de raíces prueba el corpus Y `incoming-wlr`, en ese orden — el mismo que usa
la resolución de deps (sibling-first, luego el catálogo padre). Sin eso, `grim` no se encontraba y
el script habría dicho «falta un artefacto» sobre una receta que existe.

52d3bbfeb35aca2e7a87728c2506fc5a87d9997d · by Sergio · (1 month ago) · parent 5c8d5ba95 · browse the tree at this commit

Semantic delta

No definition changed: this change is text, documentation or data.

1 files · +22 −2

diff --git a/scripts/atuq-nested.sh b/scripts/atuq-nested.sh
index 364fb0ea..af4deb8f 100755
--- a/scripts/atuq-nested.sh
+++ b/scripts/atuq-nested.sh
@@ -39,7 +39,12 @@ RAICES="atuq gtk3 atk gdk-pixbuf-shared pango-shared cairo-shared libepoxy glib-
         libffi-shared zlib-shared harfbuzz-shared fribidi freetype-shared fontconfig-shared pixman libpng-shared
         libjpeg-turbo-shared wayland libxkbcommon mesa libdrm dbus pipewire pulseaudio alsa-lib
         libxml2-shared dejavu-fonts
-        xkeyboard-config"
+        xkeyboard-config grim"
+# `grim` no lo necesita atuq: lo necesita QUIEN LO MIRA. Con `CAPTURA=<fichero.png>` este script
+# saca la pantalla real desde dentro de la jaula, contra el mismo socket wayland. Es lo que separó
+# «el proceso vive» de «la ventana muestra lo que queremos»: durante horas dije «mirá tu pantalla»
+# y la ventana estaba ahí desde el principio — lo que fallaba era el branding DENTRO del zip.
+# La receta vive en `recipes/incoming-wlr/grim.toml`; se resuelve más abajo con el resto.
 # `xkeyboard-config` son DATOS, no una librería, y sin ellos el navegador ni pinta:
 #     xkbcommon: ERROR: failed to add default include path /usr/share/X11/xkb
 # Es el mismo modo de fallo silencioso que las fuentes: nada en la clausura lo ve venir.
@@ -52,7 +57,10 @@ RAICES="atuq gtk3 atk gdk-pixbuf-shared pango-shared cairo-shared libepoxy glib-
 VIGENTES=""
 faltan=""
 for r in $RAICES; do
-  h="$("$H" --store "$STORE" hash "recipes/$r.toml" 2>/dev/null | tail -1 | sed 's/^b3://')"
+  # La receta puede vivir en el corpus o en una cola: `grim` es de `incoming-wlr`. Se prueban las
+  # dos, en ese orden, que es el mismo que usa la resolución de deps (sibling-first, luego padre).
+  rec="recipes/$r.toml"; [ -f "$rec" ] || rec="recipes/incoming-wlr/$r.toml"
+  h="$("$H" --store "$STORE" hash "$rec" 2>/dev/null | tail -1 | sed 's/^b3://')"
   if [ -z "$h" ] || [ ! -d "$STORE/$h-$r" ]; then faltan="$faltan $r"; continue; fi
   VIGENTES="$VIGENTES$h-$r
 "
@@ -85,6 +93,7 @@ echo "==> pantalla: $SOCK"
 exec bwrap --overlay-src "$ALPINE" --overlay-src "$RFS" --tmp-overlay / \
   --dev-bind /dev /dev --proc /proc --bind /sys /sys --tmpfs /tmp --tmpfs /run \
   --ro-bind "$SOCK" /run/wayland-0 \
+  --bind "$(dirname "${CAPTURA:-/tmp/atuq-captura.png}")" /salida \
   --uid 0 --gid 0 \
   --setenv PATH /usr/bin:/bin:/usr/sbin:/sbin \
   --setenv LD_LIBRARY_PATH /usr/lib:/lib \
@@ -106,5 +115,16 @@ exec bwrap --overlay-src "$ALPINE" --overlay-src "$RFS" --tmp-overlay / \
     echo "=== ¿vive? ==="
     if kill -0 $PID 2>/dev/null; then echo "  ✓ atuq corriendo (PID $PID) — mirá tu pantalla"; else echo "  ✗ murió"; fi
     echo "=== log ==="; tail -25 /tmp/atuq.log
+    # ── LA PRUEBA EN EL PÍXEL ─────────────────────────────────────────────────────────────────
+    # Un proceso vivo NO es una ventana correcta. Se captura la pantalla entera (grim sin `-o`
+    # compone todas las salidas) y se deja el PNG afuera, para mirarlo de verdad.
+    if [ -n "'"${CAPTURA:-}"'" ]; then
+      sleep 4
+      if grim "/salida/'"$(basename "${CAPTURA:-captura.png}")"'" 2>/dev/null; then
+        echo "captura: $(wc -c < "/salida/'"$(basename "${CAPTURA:-captura.png}")"'") bytes → '"${CAPTURA:-}"'"
+      else
+        echo "captura: grim NO pudo — ¿el compositor expone wlr-screencopy?"
+      fi
+    fi
     wait $PID 2>/dev/null || true
   '