diff --git a/scripts/kde/plasma-start-qemu.sh b/scripts/kde/plasma-start-qemu.sh index 7bec0a00..d989bf75 100644 --- a/scripts/kde/plasma-start-qemu.sh +++ b/scripts/kde/plasma-start-qemu.sh @@ -129,6 +129,22 @@ if [ "${DIAG:-1}" = 1 ]; then say "core dumps ON (pattern=$(cat /proc/sys/kernel/core_pattern 2>/dev/null), ulimit -c=$(ulimit -c))" fi +# SÓLO el card de virtio-gpu: el efifb/simpledrm sobrevive como 2º DRM ("Unknown-1", read-only) y kwin +# intenta manejar ambos outputs ⇒ conflicto de presentación ⇒ pinta y vuelve a NEGRO. Detectamos el card +# cuyo driver es virtio_gpu (robusto al numerado card0/card1 que cambia entre boots) y se lo pasamos a kwin. +VIRTIO_CARD= +for c in /dev/dri/card*; do + n=$(basename "$c") + drv=$(readlink -f "/sys/class/drm/$n/device/driver" 2>/dev/null) + case "$drv" in *virtio*) VIRTIO_CARD="$c"; break;; esac +done +if [ -n "$VIRTIO_CARD" ]; then + export KWIN_DRM_DEVICES="$VIRTIO_CARD" + say "KWIN_DRM_DEVICES=$VIRTIO_CARD (ignorando efifb/simpledrm)" +else + say "!! no hallé card virtio_gpu; kwin verá todos los DRM (posible doble output)" +fi + # Compositor sobre el DRM de virtio (software EGL/GBM vía kms_swrast). SIN --virtual: presenta al display. say "lanzando kwin_wayland (DRM virtio, software GL)..." /usr/bin/kwin_wayland --drm >/tmp/kwin.log 2>&1 & @@ -159,6 +175,11 @@ sleep 8 say "procesos: $(ps axo comm 2>/dev/null | grep -E 'kwin|plasma' | sort -u | tr '\n' ' ')" say "escritorio arriba (o mira /tmp/plasmashell.log). Ctrl-C mata la sesion." dump /tmp/plasmashell.log +# monitor de estado: cada 15s dice si kwin/plasmashell siguen vivos ⇒ si vuelve a negro, sabremos si +# fue plasmashell que murió (containment) o kwin/output. (busybox pgrep -c cuenta procesos.) +( while sleep 15; do + say "STATUS: kwin=$(pgrep -c kwin_wayland 2>/dev/null) plasmashell=$(pgrep -c plasmashell 2>/dev/null) outputs_ok" + done ) & wait $KWIN RC=$? # kwin salió ⇒ volcá su log para saber por qué (backend QPainter, DRM, modeset…)