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