From ab847cc46f9c08c2f0d26f521e5d31b29318e799 Mon Sep 17 00:00:00 2001 From: Stefan Date: Mon, 10 Aug 2026 23:02:20 +0200 Subject: [PATCH] S1: vorhandene Shells der Reihe nach durchprobieren MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit KWIN_COMPOSE=Q hat gegriffen — die Meldung 'Configured compositor not supported by Platform' ist verschwunden, KWin compositet jetzt sauber in Software. Die Grafik ist als Ursache damit ausgeschieden. Bleibt, dass plasmashell die Shell verwirft. Statt weiter einen Namen zu raten, werden die tatsächlich vorhandenen Shells nacheinander gestartet, bis eine ohne 'invalid corona' durchläuft. Das ist das brauchbare Abbruchkriterium: es sagt, dass nichts gezeichnet wird, ohne dass man hinschauen muss. Dabei die lange Optionsform --shell-plugin statt -p. Kurze Formen ändern sich zwischen Plasma-Fassungen leichter, und eine unbekannte Kurzoption wird still ignoriert statt bemängelt — genau der Verdacht. Trägt keine Shell, wird das Ergebnis als Teilerfolg benannt statt als Fehlschlag: der Compositor ist der schwierige Teil und bewiesen, die Shell der austauschbare. Der doppelte Auswertungsblock nach der Schleife ist raus. Co-Authored-By: Claude Opus 5 (1M context) --- spike/inner/s1-plasma.sh | 111 ++++++++++++++++++++++++--------------- 1 file changed, 70 insertions(+), 41 deletions(-) diff --git a/spike/inner/s1-plasma.sh b/spike/inner/s1-plasma.sh index d4aba43..89dd4ed 100755 --- a/spike/inner/s1-plasma.sh +++ b/spike/inner/s1-plasma.sh @@ -192,51 +192,80 @@ echo "── Versuch A: kwin_wayland --x11-display ──" echo " Umgebung: GL_WEG=$GL_WEG KWIN_COMPOSE=${KWIN_COMPOSE:-(nicht gesetzt)}" echo " QT_QUICK_BACKEND=${QT_QUICK_BACKEND:-(nicht gesetzt)}" LOGA=/tmp/hpos-s1-versuchA.log -dbus-run-session -- kwin_wayland \ - --x11-display "$DISPLAY" \ - --width "$BREITE" --height "$HOEHE" \ - --xwayland \ - -- plasmashell ${SHELL_PAKET:+-p "$SHELL_PAKET"} \ - >"$LOGA" 2>&1 & -PID_A=$! -echo " gestartet (PID $PID_A), warte 25 s auf die Oberfläche …" -sleep 25 -if kill -0 "$PID_A" 2>/dev/null; then - echo " ✓ Versuch A läuft noch — jetzt in die Termux:X11-App wechseln und schauen." +# Die lange Optionsform statt '-p': kurze Formen ändern sich zwischen den +# Plasma-Fassungen leichter als lange, und eine unbekannte Kurzoption wird still +# ignoriert statt bemängelt. Genau das ist der Verdacht. +# +# Und statt einen Namen zu raten, werden die vorhandenen Shells der Reihe nach +# ausprobiert. 'invalid corona' im Protokoll ist das Abbruchkriterium — es sagt, +# dass plasmashell nichts zeichnen wird, ohne dass man hinschauen muss. +beenden_versuch() { + [ -n "${PID_A:-}" ] && kill "$PID_A" 2>/dev/null + pkill -x kwin_wayland 2>/dev/null + pkill -x plasmashell 2>/dev/null + sleep 3 +} - # 'invalid corona' heißt: plasmashell hat kein brauchbares Shell-Paket geladen - # und zeichnet folglich nichts. Steht dort die Voreinstellung - # org.kde.plasma.desktop, obwohl wir etwas anderes übergeben haben, ist das - # kein Tippfehler, sondern ein Rückfall — die gewünschte Shell ließ sich nicht - # laden. Der Unterschied entscheidet, wo man weitersucht. - if grep -q 'invalid corona' "$LOGA" 2>/dev/null; then - echo "" - echo " ✗ ACHTUNG: plasmashell meldet 'invalid corona' — es zeichnet nichts." - grep 'invalid corona' "$LOGA" | tail -2 | sed 's/^/ /' - if [ -n "$SHELL_PAKET" ]; then - echo " Übergeben wurde: -p $SHELL_PAKET" - case "$(grep -o 'invalid corona \"[^\"]*\"' "$LOGA" | tail -1)" in - *"$SHELL_PAKET"*) - echo " → Diese Shell selbst lässt sich nicht laden." - echo " Meist fehlen QML-Module. Nachsehen mit:" - echo " plasmashell -p $SHELL_PAKET (Fehler stehen auf stderr)" - ;; - *) - echo " → plasmashell ist auf die Voreinstellung zurückgefallen," - echo " die übergebene Shell kam also nicht an oder wurde verworfen." - ;; - esac - else - echo " Es wurde gar keine Shell übergeben (keine gefunden)." - fi - echo " Ein schwarzes Bild ist damit erklärt — KWin läuft trotzdem." - fi +starte_mit_shell() { + local shell="$1" + : >"$LOGA" + dbus-run-session -- kwin_wayland \ + --x11-display "$DISPLAY" \ + --width "$BREITE" --height "$HOEHE" \ + --xwayland \ + -- plasmashell ${shell:+--shell-plugin "$shell"} \ + >"$LOGA" 2>&1 & + PID_A=$! + sleep 25 + kill -0 "$PID_A" 2>/dev/null || return 1 + grep -q 'invalid corona' "$LOGA" && return 2 + return 0 +} +KANDIDATEN="$SHELL_PAKET" +for w in org.kde.plasma.mobileshell org.kde.plasma.nano; do + case " $KANDIDATEN " in *" $w "*) ;; *) KANDIDATEN="$KANDIDATEN $w" ;; esac +done + +ERFOLG=0 +for shell in $KANDIDATEN; do + [ -d "/usr/share/plasma/shells/$shell" ] || continue echo "" - echo " Beenden mit: pkill -f kwin_wayland" - echo " Protokoll: $LOGA" - tail -n 25 "$LOGA" 2>/dev/null | sed 's/^/ /' + echo " → Versuche Shell: $shell" + starte_mit_shell "$shell" + case $? in + 0) echo " ✓ läuft, und plasmashell meldet keine ungültige Shell." + ERFOLG=1; break ;; + 2) echo " ✗ 'invalid corona' — diese Shell trägt nicht." + grep 'invalid corona' "$LOGA" | tail -1 | sed 's/^/ /' + beenden_versuch ;; + *) echo " ✗ Prozess sofort beendet." + tail -n 15 "$LOGA" | sed 's/^/ /' ;; + esac +done + +if [ "$ERFOLG" = 1 ] && kill -0 "$PID_A" 2>/dev/null; then + echo "" + echo " ✓ Versuch A läuft — jetzt in die Termux:X11-App wechseln und schauen." + echo " Verwendete Shell: $shell" + echo " Beenden mit: pkill -x kwin_wayland" + echo " Protokoll: $LOGA" + tail -n 20 "$LOGA" 2>/dev/null | sed 's/^/ /' + exit 0 +fi + +if kill -0 "${PID_A:-0}" 2>/dev/null; then + # Läuft noch, aber keine Shell hat getragen: KWin steht, plasmashell zeichnet + # nichts. Das ist ein Teilerfolg und soll auch so benannt werden — der + # Compositor ist der schwierige Teil, die Shell der austauschbare. + echo "" + echo " ! KWin läuft, aber keine der vorhandenen Shells ließ sich laden." + echo " Der Compositor ist damit bewiesen, die Shell nicht." + echo " Nächster Schritt von Hand, zeigt die eigentliche Ursache:" + echo " plasmashell --shell-plugin org.kde.plasma.mobileshell" + echo " Protokoll: $LOGA" + tail -n 20 "$LOGA" 2>/dev/null | sed 's/^/ /' exit 0 fi