#!/bin/sh # plasma-start — arranca la sesión Plasma en METAL (se instala como /usr/bin/plasma-start en el rootfs). # # Derivado de scripts/kde/run-plasma-headless.sh (la sesión VALIDADA headless en el worker), con dos # cambios para hardware real: # - kwin_wayland SIN `--virtual`: usa el backend DRM real (/dev/dri/card0, i915 built-in del kernel metal). # - SIN los overrides de software (swrast/LIBGL_ALWAYS_SOFTWARE/QT_QUICK_BACKEND=software): en la # TigerLake el driver es **iris** (mesa hidratado trae /usr/lib/dri/iris_dri.so). # # NO se autoarranca desde el seed card de arje-zero a propósito: en un bringup, si Plasma falla querés el # shell de la console-getty para leer los logs, no una pantalla negra. Se lanza a mano desde ese shell. # # Logs: /tmp/{kwin,kamd,plasmashell}.log Salir: Ctrl-C (mata la sesión) set -u export LD_LIBRARY_PATH=/usr/lib64:/usr/lib/qt6:/usr/lib:/lib export QT_PLUGIN_PATH=/usr/lib64/qt6/plugins:/usr/lib/qt6/plugins export QML2_IMPORT_PATH=/usr/lib64/qt6/qml:/usr/lib/qt6/qml export QML_IMPORT_PATH=$QML2_IMPORT_PATH export XDG_DATA_DIRS=/usr/share export XDG_RUNTIME_DIR=/run/user/0 export XDG_CONFIG_HOME=/root/.config export XDG_CACHE_HOME=/root/.cache export HOME=/root export LIBGL_DRIVERS_PATH=/usr/lib/dri export QT_QPA_PLATFORM=wayland mkdir -p "$XDG_RUNTIME_DIR" "$XDG_CONFIG_HOME" "$XDG_CACHE_HOME" /root chmod 700 "$XDG_RUNTIME_DIR" echo "== hammer :: sesión Plasma (metal) ==" echo "-- GPU: $(ls /dev/dri/ 2>/dev/null | tr '\n' ' ')" [ -e /dev/dri/card0 ] || echo " !! no hay /dev/dri/card0 — ¿i915 no cargó? (dmesg | grep i915)" echo "-- input: $(ls /dev/input/ 2>/dev/null | tr '\n' ' ')" # D-Bus de sesión: kwin/plasmashell lo exigen. if [ -z "${DBUS_SESSION_BUS_ADDRESS:-}" ]; then DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --session --fork --print-address 2>/dev/null) export DBUS_SESSION_BUS_ADDRESS fi echo "-- dbus: ${DBUS_SESSION_BUS_ADDRESS:-NO ARRANCÓ}" # Compositor sobre DRM real. echo "-- lanzando kwin_wayland (DRM)…" /usr/bin/kwin_wayland >/tmp/kwin.log 2>&1 & KWIN=$! i=0 while [ $i -lt 40 ]; do [ -S "$XDG_RUNTIME_DIR/wayland-0" ] && break kill -0 $KWIN 2>/dev/null || { echo " !! kwin murió:"; tail -25 /tmp/kwin.log; exit 1; } i=$((i+1)); sleep 0.5 done if [ -S "$XDG_RUNTIME_DIR/wayland-0" ]; then echo " compositor OK (wayland-0)" else echo " !! kwin no expuso wayland-0:"; tail -25 /tmp/kwin.log; exit 1 fi export WAYLAND_DISPLAY=wayland-0 # kactivitymanagerd: plasmashell ABORTA si no corre (registra su servicio D-Bus). KAMD=$(ls /usr/lib*/libexec/kactivitymanagerd 2>/dev/null | head -1) if [ -n "$KAMD" ]; then "$KAMD" >/tmp/kamd.log 2>&1 & sleep 2; echo "-- kactivitymanagerd lanzado"; fi echo "-- lanzando plasmashell…" /usr/bin/plasmashell >/tmp/plasmashell.log 2>&1 & sleep 8 echo "-- procesos: $(ps axo comm 2>/dev/null | grep -E 'kwin|plasma' | sort -u | tr '\n' ' ')" echo echo "Escritorio arriba. Logs en /tmp/{kwin,kamd,plasmashell}.log" echo "Apps: konsole, dolphin, systemsettings, spectacle, okular… (lanzalas desde otra tty o krunner)" echo "Ctrl-C para terminar la sesión." wait $KWIN