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 1572Shell 203Rust 109Markdown 993728 Sutichaykuna

kde: lanzador anidado (nested-app.sh) — apps KDE hidratadas como ventana en mirada

Corre una app KDE del rootfs hidratado como cliente wayland ANIDADO en el compositor
mirada vivo (WAYLAND_DISPLAY=/run/mirada-wayland), vía bwrap overlay (alpine+kde-rootfs
como /). Cliente, no master: renderiza por renderD128/iris, cero riesgo al display.
Resuelve dbus de sesión (root-en-userns + machine-id + /run/dbus). konsole y dolphin
verificados corriendo en vivo. Fix portabilidad: run-plasma-headless.sh += --setenv PATH.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

b2d80e6f6988e05760e5cdd7b6d2aa5c8d080615 · ruwaq sergio · (3 killa ñawpaq) · tayta 4ce086edc · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

2 qillqakuna · +37 −0

diff --git a/scripts/kde/nested-app.sh b/scripts/kde/nested-app.sh
new file mode 100755
index 00000000..1f95c464
--- /dev/null
+++ b/scripts/kde/nested-app.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+# nested-app.sh — corre una app KDE hidratada como VENTANA ANIDADA en el compositor mirada actual
+# (WAYLAND_DISPLAY=/run/mirada-wayland), vía bwrap overlay (alpine+kde-rootfs como /). NO toca la GPU
+# como master (es cliente wayland; renderiza por renderD128/iris). Seguro sobre una sesión viva.
+#   APP=konsole SECS=20 scripts/kde/nested-app.sh
+set -u
+ROOT="$(cd "$(dirname "$0")/../.." && pwd)"; cd "$ROOT"
+R="${RFS:-$ROOT/work/kde-rootfs}"; A="$ROOT/.dev-fs/alpine"
+APP="${APP:-konsole}"; SECS="${SECS:-20}"
+HOST_WL="${HOST_WL:-/run/mirada-wayland}"
+exec bwrap --overlay-src "$A" --overlay-src "$R" --tmp-overlay / \
+  --dev-bind /dev /dev --proc /proc --bind /sys /sys --tmpfs /tmp --tmpfs /run \
+  --bind "$HOST_WL" "$HOST_WL" \
+  --uid 0 --gid 0 \
+  --setenv PATH /usr/bin:/bin:/usr/sbin:/sbin \
+  --setenv LD_LIBRARY_PATH /usr/lib64:/usr/lib/qt6:/usr/lib:/lib \
+  --setenv QT_PLUGIN_PATH /usr/lib64/qt6/plugins:/usr/lib/qt6/plugins \
+  --setenv QML2_IMPORT_PATH /usr/lib64/qt6/qml:/usr/lib/qt6/qml \
+  --setenv QML_IMPORT_PATH /usr/lib64/qt6/qml:/usr/lib/qt6/qml \
+  --setenv XDG_DATA_DIRS /usr/share --setenv XDG_RUNTIME_DIR /run/user/0 \
+  --setenv XDG_CONFIG_HOME /run/cfg --setenv XDG_CACHE_HOME /run/cache --setenv HOME /root \
+  --setenv LIBGL_DRIVERS_PATH /usr/lib/dri --setenv LIBGL_DRIVERS_PATH /usr/lib/dri \
+  --setenv QT_QPA_PLATFORM wayland --setenv WAYLAND_DISPLAY "$HOST_WL" \
+  --setenv QT_LOGGING_RULES 'qt.qpa.wayland=false' \
+  sh -c '
+    mkdir -p /run/user/0 /run/dbus /run/cfg /run/cache /root/.config /etc; chmod 700 /run/user/0
+    [ -s /etc/machine-id ] || cat /proc/sys/kernel/random/uuid | tr -d - > /etc/machine-id
+    export DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --session --fork --print-address 2>/dev/null)
+    echo "dbus=${DBUS_SESSION_BUS_ADDRESS:-VACIO}  wl='"$HOST_WL"'  app='"$APP"'"
+    timeout '"$SECS"' /usr/bin/'"$APP"' >/tmp/nested-'"$APP"'.log 2>&1 &
+    PID=$!
+    sleep 6
+    echo "=== proceso vivo? ==="; kill -0 $PID 2>/dev/null && echo "  ✓ '"$APP"' corriendo (PID $PID) — mirá tu pantalla" || echo "  ✗ murió"
+    echo "=== log (tail) ==="; tail -15 /tmp/nested-'"$APP"'.log
+    wait $PID 2>/dev/null
+  '
diff --git a/scripts/kde/run-plasma-headless.sh b/scripts/kde/run-plasma-headless.sh
index fe7f3333..2a5f11a8 100644
--- a/scripts/kde/run-plasma-headless.sh
+++ b/scripts/kde/run-plasma-headless.sh
@@ -15,6 +15,7 @@ SECS="${SECS:-30}"; CLIENT="${CLIENT:-plasmashell}"   # CLIENT=/usr/bin/foo para
 
 exec bwrap --overlay-src "$A" --overlay-src "$R" --tmp-overlay / \
   --dev-bind /dev /dev --proc /proc --bind /sys /sys --tmpfs /tmp --tmpfs /run \
+  --setenv PATH /usr/bin:/bin:/usr/sbin:/sbin \
   --setenv LD_LIBRARY_PATH /usr/lib64:/usr/lib/qt6:/usr/lib:/lib \
   --setenv QT_PLUGIN_PATH /usr/lib64/qt6/plugins:/usr/lib/qt6/plugins \
   --setenv QML2_IMPORT_PATH /usr/lib64/qt6/qml:/usr/lib/qt6/qml \