]> code.delx.au - dotfiles/commitdiff
xmonad-xfce4-session: wait for xprop on root before starting processes instead of...
authorJames Bunton <jamesbunton@delx.net.au>
Thu, 6 Apr 2017 14:13:56 +0000 (00:13 +1000)
committerJames Bunton <jamesbunton@delx.net.au>
Thu, 6 Apr 2017 14:14:35 +0000 (00:14 +1000)
xmonad-xfce4-session.sh

index c450dff1814308dbd8101240d8437b6810ef3826..99dff8118d8314063162e9dc95a7ddfb482f85b8 100755 (executable)
@@ -1,15 +1,30 @@
 #!/bin/bash
 
+function wait_for_xprop_root {
+    local prop="$1"
+
+    echo "Waiting for: ${prop}"
+    for i in $(seq 150); do
+        xprop -root -notype | grep -q "^${prop}\>" && return
+        sleep 0.1
+    done
+
+    echo "Timeout waiting for: ${prop}"
+}
+
 xmonad &
 xfdesktop --disable-wm-check &
 
-sleep 10
-
-nm-applet & # start late so that font settings are available
-xfdesktop --reload # settings are not loaded on startup for some reason
+# settings are not loaded on startup for some reason
+wait_for_xprop_root "XFCE_DESKTOP_WINDOW"
+xfdesktop --reload
 
-sleep 2
+# ensure the window manager is painted over xfdesktop
+wait_for_xprop_root "XFDESKTOP_IMAGE_FILE_0"
+xmonad --restart
 
-xmonad --restart # ensure it's painted over xfdesktop
+# start late so that font settings are available
+wait_for_xprop_root "RESOURCE_MANAGER"
+nm-applet &
 
 disown