diff --git a/reform2-imx8mq/mkuserland3.sh b/reform2-imx8mq/mkuserland3.sh
index 12f2815ec9aaef3a7ab02cf271b68d68716e4be5..b6ebdd73a9ef7691a148a8764b1ffd74c63000e1 100755
--- a/reform2-imx8mq/mkuserland3.sh
+++ b/reform2-imx8mq/mkuserland3.sh
@@ -20,7 +20,7 @@ export LANG=C
 
 # install applications
 
-apt install -y libreoffice libreoffice-gtk3 inkscape firefox-esr emacs gimp wmaker
+apt install -y libreoffice libreoffice-gtk3 inkscape firefox-esr emacs gimp wmaker x11-utils
 apt install -y chromium evolution freecad ardour sxiv neverball scummvm dosbox wf-recorder wev linphone-desktop
 
 # install patched software from mntre
diff --git a/reform2-imx8mq/template-skel/bin/reform-windowmaker b/reform2-imx8mq/template-skel/bin/reform-windowmaker
index 676968ccd5d202ffe5d5f1a4e1d5996950c9aaae..36957f842f9be63323841989da1b9d7667d607ca 100755
--- a/reform2-imx8mq/template-skel/bin/reform-windowmaker
+++ b/reform2-imx8mq/template-skel/bin/reform-windowmaker
@@ -8,14 +8,26 @@
 # exec xfce4-session
 #
 
-cage -- /usr/local/bin/Xwayland -retro &
-sleep 2
+DNUM=:0
+
+cage -- /usr/local/bin/Xwayland $DNUM -retro -noreset &
+
+export DISPLAY=$DNUM
+
+# idea lifted from https://gist.github.com/tullmann/476cc71169295d5c3fe6
+MAX=10
+CT=0
+while ! xdpyinfo >/dev/null 2>&1; do
+    sleep 0.50s
+    CT=$(( CT + 1 ))
+    if [ "$CT" -ge "$MAX" ]; then
+        LOG "FATAL: $0: Gave up waiting for X server $DISPLAY"
+        exit 11
+    fi
+done
 
 export WAYLAND_DISPLAY=null # Hack, but works
-export DISPLAY=:0
 export GDK_BACKEND=x11
 unset SDL_VIDEODRIVER
 
-xterm &
-
 exec wmaker