
Really strange! You should post your config somewhere (say, hpaste.org). Are you using an urgency hook? ~d
Aha! -- i tracked it down (always the way once you've decided to post). The problem is in a loghook i set (i'd tried simply removing the entire loghook and the problem continued, but removing the offending function fixes it, it turns out). My config is available here https://github.com/yourealwaysbe/xmonad-config/blob/master/xmonad.hs in particular i have a loghook: myLogHook = floatsAvoidStruts <+> raiseFocused <+> hideFloats where raiseFocused :: X () raiseFocused = do disp <- asks display mw <- gets (W.peek . windowset) whenJust mw (io . (raiseWindow disp)) which is to raise the focussed window above the others, because i have a free-form messy workspace which sometimes has a few tiled windows combined with a few floating ones. So if a tiled window is focussed, all the floats get lowered (so i can see the tiled layer), and if a float is focussed, it's raised above everything else (so i can see it). I know this isn't really in the spirit of xmonad, but hey... I guess ncmpcpp triggers the loghook when the play status updates, so then raiseFocused raises the main GUI app window (with focus) above the drop-down menu window (which i guess doesn't have focus). Sorry for the noise, i'll work on writing a better raiseFocused :) Best, Matt