#!/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