From c286dafcf726d96d7030ec0e2fb28ac13e9765a1 Mon Sep 17 00:00:00 2001 From: Michael Katsoulis Date: Mon, 12 Jan 2026 10:53:32 +0100 Subject: [PATCH] Fix gui start, change docker container, add shell to start gui --- README.md | 7 ++++--- exwayz_test.dockerfile | 25 +++++++++++++++++++------ src/start_docker_wsl_GUI.sh | 17 +++++++++++++++++ 3 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 src/start_docker_wsl_GUI.sh diff --git a/README.md b/README.md index 8898d43..d0c8a11 100644 --- a/README.md +++ b/README.md @@ -26,13 +26,14 @@ docker build -f exwayz_test.dockerfile -t exwayz_test:latest . Run the container (example; adjust mounts and environment for your platform): ```powershell -# Example (PowerShell+WSL on systems with X11 forwarding available) +# Example (WSL on systems with X11 forwarding available) docker run -it --rm \ - --env="DISPLAY=$env:DISPLAY" \ + --env="DISPLAY=$DISPLAY" \ --env="QT_X11_NO_MITSHM=1" \ --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ -v "${PWD}:/app" \ - exwayz_test:latest + exwayz_test:latest \ + /bin/bash ``` On POSIX shells use `$DISPLAY` and `$(pwd)` as usual. diff --git a/exwayz_test.dockerfile b/exwayz_test.dockerfile index 187b098..a3d679e 100644 --- a/exwayz_test.dockerfile +++ b/exwayz_test.dockerfile @@ -4,14 +4,23 @@ FROM ros:jazzy-ros-core # Build argument provided by buildx/BuildKit: `TARGETARCH` (amd64, arm64, etc.). # Default to amd64 when not provided. ARG TARGETARCH=amd64 +ARG GRAPICAL_ENV=TRUE # Copy both architecture-specific packages into the image and choose the right one at build time COPY pkgs/exwayz_3d_mapping-1.2.2-linux-u24.04-amd64.deb /tmp/exwayz_amd64.deb COPY pkgs/exwayz_3d_mapping-1.2.2-linux-u24.04-aarch64.deb /tmp/exwayz_aarch64.deb +# Install dependencies and setup for GUI applications +ENV DISPLAY=:0 +ENV WAYLAND_DISPLAY=wayland-0 +ENV XDG_SESSION_TYPE=x11 +ENV XDG_RUNTIME_DIR=/mnt/wslg/runtime-dir #If debug, install the following: -RUN apt update && apt install -y libgl1-mesa-dev libosmesa6-dev libglew-dev libgles2-mesa-dev libglfw3-dev libstdc++6 mesa-utils -#TODO we're installing unneccessary things like the humanity-icons package, clean this up later. +RUN if [ "$GRAPHICAL_ENV" = "TRUE" ]; then \ + apt update && apt install -y libgl1-mesa-dev libosmesa6-dev libglew-dev libgles2-mesa-dev libglfw3-dev libstdc++6 mesa-utils; \ + fi + #TODO we're installing unneccessary things like the humanity-icons package, clean this up later. + # RUN --mount=type=secret,id=exwayz_license set -eux; \ # if [ "${TARGETARCH}" = "aarch64" ]; then \ @@ -27,18 +36,22 @@ RUN apt update && apt install -y libgl1-mesa-dev libosmesa6-dev libglew-dev libg # rm -f /tmp/exwayz_amd64.deb /tmp/exwayz_aarch64.deb; \ # rm -rf /var/lib/apt/lists/* -RUN --mount=type=secret,id=exwayz_license set -eux; \ +COPY licenses/exwayz_liscence.lic /tmp/exwayz_license +RUN set -eux; \ apt-get update; \ apt-get install -fy /tmp/exwayz_amd64.deb; \ - if [ -s /run/secrets/exwayz_license ]; then \ - exwayz_license --query "$(cat /run/secrets/exwayz_license)" || true; \ + if [ -f /tmp/exwayz_license ]; then \ + exwayz_license --query "$(cat /tmp/exwayz_license)" || true; \ else \ echo "No license file provided"; \ exit 1; \ fi; \ rm -f /tmp/exwayz_amd64.deb /tmp/exwayz_aarch64.deb; \ + rm -f /tmp/exwayz_license; \ rm -rf /var/lib/apt/lists/* -# TODO verify license was applied successfully + +# # Change the working directory to /app +# WORKDIR /app # Set entrypoint ENTRYPOINT ["/ros_entrypoint.sh"] diff --git a/src/start_docker_wsl_GUI.sh b/src/start_docker_wsl_GUI.sh new file mode 100644 index 0000000..551fc0f --- /dev/null +++ b/src/start_docker_wsl_GUI.sh @@ -0,0 +1,17 @@ +# Setup WSLg environment variables for GUI applications +echo "🚀 Setting up WSLg environment variables for GUI support..." +export DISPLAY=:0 +export WAYLAND_DISPLAY=wayland-0 +export XDG_RUNTIME_DIR=/mnt/wslg/runtime-dir + +echo "✅ DISPLAY is set to $DISPLAY" + + +echo "🐳 Starting Docker container with GUI support..." +docker run -it --rm \ + --env="DISPLAY=$DISPLAY" \ + --env="QT_X11_NO_MITSHM=1" \ + --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ + -v "${PWD}:/app" \ + exwayz_test:latest \ + /bin/bash \ No newline at end of file