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…
atuq: `sct` v1 — el navegador avisa cuando un sitio ya estable ejecuta código que nadie vio nunca
1#!/bin/sh
2# El lanzador del host nativo. Existe por UNA razón medida, no por gusto:
3#
4# ── EL MANIFIESTO DE NATIVE MESSAGING NO PUEDE LLEVAR ARGUMENTOS ──────────────────────────────
5# Comprobado dentro de nuestro propio artefacto (`omni.ja`, `modules/NativeMessaging.sys.mjs`):
6#
7# let command = hostInfo.manifest.path;
8# ...
9# arguments: [hostInfo.path, context.extension.id],
10#
11# O sea que Gecko ejecuta EXACTAMENTE el `path` del manifiesto y los únicos argumentos que le pasa
12# son la ruta del manifiesto y el id de la extensión. No hay campo para los nuestros.
13#
14# Y `puriy-costura` sin `--state` corre TODO EN MEMORIA: cada arranque del navegador volvería a la
15# fase «aprendiendo» y ningún cambio de script sería nunca un evento. O sea que sin este lanzador la
16# función existe, no falla, y no protege de nada — la peor de las tres.
17#
18# ── POR QUÉ LA RUTA LA DECIDE LA DISTRO Y NO EL CRATE ─────────────────────────────────────────
19# Dónde vive el estado de un usuario es layout del sistema de ficheros, que es asunto de takana;
20# `puriy-costura` no tiene por qué tener una opinión sobre el FHS de nadie. Se respeta
21# `XDG_STATE_HOME` porque es el estándar para estado que no es caché ni configuración.
22set -e
23DIR="${XDG_STATE_HOME:-$HOME/.local/state}/puriy-costura"
24mkdir -p "$DIR" 2>/dev/null || true
25# `exec` y no una llamada: el navegador le habla al proceso por stdin/stdout, así que el host TIENE
26# que heredar esos descriptores y ser el proceso que Gecko vigila. Con un `sh` de por medio, cerrar
27# el puerto mataría al shell y dejaría al host huérfano hablando a una tubería rota.
28exec /usr/bin/puriy-costura --state "$DIR"