fix(vm): Screenshot ohne /root-Rechte + VNC-Tastatur robuster
Screenshot: aria-vm lief als User 'aria', SHOT_DIR war aber /root/... → "mkdir: cannot create directory /root". Jetzt schreibt aria-vm das PNG ins VM-Verzeichnis (aria-schreibbar) und der Brain holt es per SSH (base64, _ssh_host) — unabhaengig von Volume-Rechten. End-to-end validiert (gueltiges PNG). Wird weiter ins Projekt (screenshots/) kopiert. VNC-Tastatur: verstecktes Input-Feld war off-screen (opacity:0, left:-1000px) → Android oeffnete die Tastatur oft nicht / lieferte keine Events. Jetzt on-screen (bottom, 1px, opacity:0, pointer-events:none) + beforeinput als primaerer Handler (Android-robust) mit input-Fallback. Strg+Alt+Entf ging schon. py/bash/tsc clean. aria-vm bereits live. Deploy: brain rebuild + APK. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -147,16 +147,20 @@ cmd_screenshot() {
|
||||
local d; d="$(vm_dir "${name}")"
|
||||
vm_running "${name}" || die "VM '${name}' laeuft nicht"
|
||||
command -v socat >/dev/null || die "socat fehlt (qemu-setup.sh?)"
|
||||
mkdir -p "${SHOT_DIR}"
|
||||
# Standard: ins VM-Verzeichnis schreiben (dem aria-User gehoerend) — NICHT
|
||||
# nach /root/... (da kommt der aria-User nicht hin). Der Brain holt das PNG
|
||||
# danach per SSH (base64). Ueberschreibbar via ARIA_VM_SHOT_DIR.
|
||||
local out_dir="${ARIA_VM_SHOT_DIR:-${d}}"
|
||||
mkdir -p "${out_dir}"
|
||||
local ts; ts="$(date +%s)"
|
||||
local ppm="${d}/shot-${ts}.ppm"
|
||||
printf 'screendump %s\n' "${ppm}" | socat - "unix-connect:${d}/monitor.sock" >/dev/null
|
||||
sleep 0.3
|
||||
local out="${SHOT_DIR}/${name}-${ts}.png"
|
||||
local out="${out_dir}/${name}-${ts}.png"
|
||||
if command -v convert >/dev/null; then
|
||||
convert "${ppm}" "${out}" && rm -f "${ppm}"
|
||||
else
|
||||
out="${SHOT_DIR}/${name}-${ts}.ppm"; mv "${ppm}" "${out}"
|
||||
out="${out_dir}/${name}-${ts}.ppm"; mv "${ppm}" "${out}"
|
||||
fi
|
||||
echo "screenshot=${out}"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user