Commit Graph
7 Commits
Author SHA1 Message Date
StefanandClaude Opus 5 1caaeedef1 S1: Reste vom Vorlauf selbst aufräumen, ohne sich dabei abzuschießen
Auf Wunsch räumt das Skript jetzt zu Beginn selbst auf — und zwar mehr als nur
kwin_wayland: auch plasmashell und xdg-desktop-portal bleiben hängen, dazu
verwaiste Wayland-Sockets. Bleiben die liegen, startet KWin auf wayland-1 statt
wayland-0, während plasmashell auf wayland-0 sucht.

Bewusst nicht mit 'pkill -f': das durchsucht die gesamte Kommandozeile und trifft
dabei auch den eigenen Aufruf oder eine Eltern-Shell, wenn das Muster darin
vorkommt. Beim Entwickeln dieses Blocks hat sich der Test zweimal selbst
abgeschossen — erst reichte 355477 nicht, dann auch 3136466 nicht, weil der Treffer
weiter oben in der Kette lag.

Jetzt wird die vollständige Ahnenkette über /proc/PID/stat gesammelt und
verschont. Geprüft: zwei Opfer beendet, ein Vorfahre verschont, Skript überlebt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 22:54:05 +02:00
StefanandClaude Opus 5 c2b602dcb4 S1: GPU im Container über virgl statt Zink — die eigentliche Ursache
Der Protokollauszug enthielt die entscheidende Zeile nicht bei der Shell, sondern
zwei Zeilen darunter:

    ! glxinfo lieferte nichts
    ! vulkaninfo lieferte nichts

Im Container gab es überhaupt kein OpenGL. Mein Denkfehler: Turnip liegt in
Termux' Verzeichnis, nicht im Debian-Rootfs. GALLIUM_DRIVER=zink im Container zu
setzen geht deshalb ins Leere — Zink bräuchte dort einen Vulkan-Treiber, und da
ist keiner.

Damit erklärt sich die ganze Kette: kein OpenGL, also kein QtQuick, also kann
plasmashell die MobileShell nicht laden und fällt wortlos auf die Voreinstellung
zurück. Das 'starting invalid corona' war das Symptom, nicht die Krankheit — und
der schwarze Bildschirm sah nach einem Compositor-Problem aus, obwohl KWin lief.

Richtig ist der Weg über virgl: der Server läuft in TERMUX und rendert dort über
Zink auf Turnip, der Container spricht nur virpipe mit ihm. Turnip bleibt also im
Spiel, nur eine Ebene tiefer als gedacht.

Der GPU-Nachweis im Container wertet jetzt aus statt nur zu drucken und sagt
ausdrücklich, dass ohne OpenGL die Shell nicht laden wird — damit dieselbe
Verwechslung nicht noch einmal Stunden kostet.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 22:46:31 +02:00
StefanandClaude Opus 5 985f48177d S1: Plasma-Shell nachsehen statt raten, Beurteilungsfrage gestaffelt
Aus dem Gerätelauf, entscheidende Zeile:

    starting invalid corona "org.kde.plasma.desktop"

Der Paketname der Mobile-Shell hat sich mit Plasma 6 geändert: aus
org.kde.plasma.phoneshell wurde org.kde.plasma.mobileshell. Der falsche Name
fällt nicht auf — plasmashell startet klaglos, meldet nur beiläufig 'invalid
corona' und zeichnet dann nichts. Von außen sieht das aus wie ein Fehlschlag von
KWin, ist aber keiner: der genestete Compositor lief.

Statt einen Namen fest einzutragen, wird jetzt nachgesehen, welche Shells unter
/usr/share/plasma/shells/ tatsächlich liegen, und in der Reihenfolge
mobileshell, phoneshell, nano, desktop gewählt. Die gefundene Liste wird
protokolliert — beim nächsten Umbenennen sieht man sofort, woran es liegt.

Dazu XCURSOR_THEME gesetzt: ohne das meldet KWin 'Failed to load cursor theme'
und zeichnet gar keinen Zeiger.

Die Beurteilungsfrage fragte nach der Bildschirmtastatur in einem Eingabefeld —
in dem Zustand, in dem sie gestellt wird, gibt es aber gar keine Felder. Sie ist
jetzt nach dem gestaffelt, was tatsächlich zu sehen ist, mit dem X-Cursor auf
schwarzem Grund als eigener Zwischenstand: X11 verbunden, aber nichts zeichnet
darauf. Genau dieser Fall lag hier vor und hatte vorher keine passende Antwort.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 22:35:55 +02:00
StefanandClaude Opus 5 bafa2f3dd1 S1: Termux:X11 am Start prüfen statt an der Paketliste
Die eingebaute Prüfung schlug fehl, obwohl die App installiert ist. Ursache:
seit Android 11 sieht eine App nur noch die Pakete, die sie im Manifest anmeldet
oder die ihre UID teilen. 'pm list packages' liefert aus Termux heraus eine
gefilterte Liste — ein Nichtfinden beweist also gar nichts, und ein Abbruch
darauf ist schlicht falsch.

Die Paketprüfung bleibt als Hinweis erhalten, blockiert aber nicht mehr.
Verlässlich ist stattdessen der Startversuch selbst: 'am start' meldet einen
Fehler, wenn es die Aktivität nicht gibt. Das wird jetzt ausgewertet.

Dazu der Hinweis, dass 'not connected' in der App bis zu diesem Zeitpunkt der
normale Zustand ist — die App wartet auf den X-Server. Bleibt es danach stehen,
ist es ein echtes Signal.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 22:12:30 +02:00
StefanandClaude Opus 5 0e301f2455 S1: prüfen, ob die Termux:X11-APP installiert ist
Das Termux-Paket termux-x11-nightly und die Termux:X11-App sind zwei verschiedene
Dinge. Fehlt die App, startet der X-Server anstandslos — nur bleibt der Bildschirm
leer. Das sähe aus wie ein Fehlschlag von Plasma Mobile und wäre keiner, und genau
solche Fehldiagnosen soll der Spike nicht produzieren.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 22:07:02 +02:00
StefanandClaude Opus 5 2d3c2fbc6d Vorabprüfung: proot-distro und Rootfs vor jedem Beweis
Aus dem Gerätelauf: S2 lief bis Stufe 1 durch und scheiterte dann an
'proot-distro: cannot execute: required file not found'. Danach meldete die
Auswertung folgerichtig 'S2 gescheitert' — was den Beweis inhaltlich belastet,
obwohl nur die Grundlage fehlte. Genau diese Verwechslung soll der Spike nicht
produzieren.

Alle Beweise prüfen jetzt vorab, ob proot-distro ausführbar ist und das Rootfs
steht, und brechen sonst mit klarer Ansage ab statt mitten im Test aufzulaufen.

Die Meldung selbst ist irreführend: 'required file not found' heißt nicht, dass
proot-distro fehlt — bash hat es gefunden und nennt den vollen Pfad. Es fehlt der
Interpreter aus dessen Shebang-Zeile. Die Prüfung sagt das ausdrücklich und nennt
Datei und Shebang, statt den Suchenden an der falschen Stelle graben zu lassen.
00-bootstrap versucht in dem Fall selbsttätig eine Neuinstallation.

Dazu die Berechtigungsprüfung entschärft: dumpsys verlangt die DUMP-Berechtigung,
die eine gewöhnliche App nicht hat. Das Fehlschlagen ist erwartbar und kein
Warnsignal; die Meldung nennt jetzt den Weg über adb statt Ratlosigkeit zu säen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 18:27:40 +02:00
StefanandClaude Opus 5 ad2c98443b Phase 0: Repo-Gerüst, Dokumentation und Machbarkeits-Spike
Vier Beweise, die das Projekt tragen, als eigenständig lauffähige Skripte:

  S1  Plasma Mobile in proot über genestetes kwin_wayland im X11-Backend.
      Fällt selbsttätig auf startplasmamobile und dann auf XFCE zurück, damit
      ein Fehlschlag eindeutig Plasma zuzuordnen ist und nicht der Umgebung.
  S2  Mikrofon über PulseAudio mit OpenSL-Quelle. Misst den Pegel statt nur die
      Dateigröße — der typische Fehlschlag ist eine formal korrekte WAV-Datei
      voller Stille.
  S3  Virtuelle PipeWire-Kamera per GStreamer-pipewiresink, ohne Kernel-Modul.
      Setzt die Firefox-Einstellung vorab, damit der Test nicht an einem
      vergessenen Häkchen scheitert.
  S4  Intent-Handoff mit lauffähiger Mini-Bridge: xdg-open-Handler für geo:,
      tel: und sms:, Token-Authentifizierung, feste Liste erlaubter Schemata.

provision/provision.sh setzt die Hintergrundbeschränkungen per ADB und benennt,
was ADB nicht kann und von Hand erledigt werden muss.

Dokumentiert sind auch die sieben verworfenen Wege — Waydroid, AVF, QEMU, SIP,
APK-Daten-Redirect, Fenster-Durchreichung und der Android-Server — mit Belegen,
damit sie nicht erneut durchdacht werden müssen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 17:25:36 +02:00