#!/usr/bin/env bash # Sacar a JARVIS de la burbuja: que lo que ejecute sea en la maquina de verdad. # # El sintoma era que el asistente contestaba que "esta en un contenedor" y no # podia hacer casi nada. Las 134 acciones del catalogo ya salian al host (todas # llevan host:true), pero los comandos LIBRES —los que se inventa el modelo # cuando lo que pides no esta en el catalogo— corrian dentro del sandbox, donde # no hay ni tu Debian ni tus discos: # # dentro: PRETTY_NAME="GNOME 50 (Flatpak runtime)" sin /media, sin systemctl # fuera: PRETTY_NAME="Debian GNU/Linux 12" /media, systemctl, docker # # Son dos capas distintas y hacen falta las dos: # # 1. `virtualization` (ajuste de Newelle). Decide si los comandos del modelo # llevan delante `flatpak-spawn --host`. Estaba en true = todo dentro. # Es lo que mira _host_prefix() en integrations/default_tools.py. # # 2. Los permisos del flatpak. Aunque los comandos salgan al host, las # herramientas de FICHEROS de la app (leer, editar, indexar) son Python # corriendo dentro: solo ven lo que el sandbox les deje. Estaba en # `filesystems=home`, asi que fuera de tu carpeta personal no veia nada. # # Lo que esto NO quita: el candado de la contraseña al abrir, la confirmacion # de lo destructivo, ni el dialogo de root. Esos siguen. Lo que cambia es que # cuando TU autorizas algo, se ejecuta donde tiene que ejecutarse. set -eu APPID=io.github.qwersyk.Newelle RAMA=${1:-master} echo "1. comandos del modelo -> a la maquina, no a la burbuja" flatpak run --command=gsettings "$APPID//$RAMA" set "$APPID" virtualization false echo "2. permisos de ficheros -> todo el disco" # host = el sistema de ficheros (salvo /usr y /etc, que van aparte) # host-etc = /etc, para leer configuracion del sistema # host-os = /usr, para mirar lo instalado flatpak override --user \ --filesystem=host \ --filesystem=host-etc \ --filesystem=host-os \ "$APPID" echo echo "como queda:" printf ' virtualization = %s\n' \ "$(flatpak run --command=gsettings "$APPID//$RAMA" get "$APPID" virtualization)" flatpak info --show-permissions "$APPID//$RAMA" 2>/dev/null | grep -E "^filesystems=" | sed 's/^/ /'