55 lines
2.0 KiB
Bash
Executable File
55 lines
2.0 KiB
Bash
Executable File
#!/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"
|