#!/bin/bash # 1. Aktuelle Display-Nummer vom Host ermitteln (z.B. 10) if [ -z "$DISPLAY" ] || [ "$DISPLAY" = "localhost" ]; then echo "❌ Fehler: Kein aktives DISPLAY auf dem Host gefunden!" echo "Stelle sicher, dass du dich per 'ssh -Y' verbunden hast." exit 1 fi # Extrahiere die reine Nummer (z.B. aus 'localhost:10.0' wird '10') DISPLAY_NUM=$(echo $DISPLAY | grep -oP '(?<=:)\d+' | head -n 1) CONTAINER_DISPLAY=":${DISPLAY_NUM}.0" echo "🔄 Erstelle X11-Cookie für Display :${DISPLAY_NUM}..." # 2. Cookie temporär extrahieren COOKIE_FILE="/tmp/docker_x11_cookie_tmp" rm -f "$COOKIE_FILE" xauth extract "$COOKIE_FILE" "$DISPLAY" # Sicherheitsprüfung if [ ! -f "$COOKIE_FILE" ] || [ ! -s "$COOKIE_FILE" ]; then echo "❌ Fehler: X11-Cookie konnte nicht extrahiert werden (ist xauth installiert?)." exit 1 fi echo "🚀 Starte Docker-Container mit GUI-Forwarding..." # 3. Docker starten und Inline-Befehl zur Rechtevergabe im Container ausführen docker run --rm -it \ --net=host \ -e RTI_LICENSE_FILE=/workspace/rti_license.dat \ -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ -v "$COOKIE_FILE":"$COOKIE_FILE":ro \ -v "$MIGRATE_PIPELINE_ROOT":/workspace \ -v "$MIGRATE_PIPELINE_ROOT/external":/workspace/external:ro \ -w /workspace/qt-migration-legatus/qt6-after/qt6-migrated-legatus \ --entrypoint /bin/bash \ legatus-qt6-prebuilt:latest \ -c " export XAUTHORITY=/tmp/.Xauthority rm -f /tmp/.Xauthority xauth add :${DISPLAY_NUM} . \$(xauth -f $COOKIE_FILE list | awk '{print \$3}') 2>/dev/null export DISPLAY=${CONTAINER_DISPLAY} echo -e '\n==================================================' echo -e '✅ GUI-Docker-Umgebung erfolgreich konfiguriert!' echo -e 'DISPLAY ist gesetzt auf: ' \$DISPLAY echo -e 'Teste es jetzt mit: xclock &' echo -e '==================================================\n' bash " # 4. Aufräumen nach dem Beenden des Containers rm -f "$COOKIE_FILE"