Why choose window placement and dimensions at exec, instead of letting the window manager handle the issue? Just set _NET_WM_WINDOW_TYPE to _NET_WM_WINDOW_TYPE_DIALOG and spend engineering time ranting about WM_TRANSIENT_FOR, modality and modularity instead.
dmenu's override-redirect flag has always annoyed me, as well as grabbing the whole keyboard rendering it temporarily unusable for anything but typing text into dmenu or escaping out of it.