From d9ed139c4fb7e4443c0fc1d226021a2671e28da8 Mon Sep 17 00:00:00 2001
From: "Lukas F. Hartmann" <lukas@mntre.com>
Date: Sun, 14 Mar 2021 16:59:02 +0100
Subject: [PATCH] reform-windowmaker: wait for x startup

---
 reform2-imx8mq/mkuserland3.sh                 |  2 +-
 .../template-skel/bin/reform-windowmaker      | 22 ++++++++++++++-----
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/reform2-imx8mq/mkuserland3.sh b/reform2-imx8mq/mkuserland3.sh
index 12f2815..b6ebdd7 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 676968c..36957f8 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
-- 
GitLab