Ok, I am pretty sure this should not be too complicated to do, but
I've been trying many ways to hide the xmobar under the windows and so
You're using the "ewmh" combinator, so you're getting avoidStruts from that; your avoidStrutsOn is therefore redundant and useless. You'll need to remove it and use the components directly, omitting avoidStruts. This means
ewmhDesktopsStartup added to the startupHook
ewmhDesktopsLogHook added to the logHook
ewmhDesktopsEventHook and fullscreenEventHook added to the handleEventHook
You also will need the lowerOnStart = True in your xmobar config.
--