workspace to the previous workspace, then a left arrow appears in the centre of the screen. Those hints are very similar to what happen on other WMs and personally very useful. With this idea in mind I started to think about requirements: they should be always visible (on top of the stack) such that the user can see them but they should be not-intrusive so that they don't disturb the work of the user. They should be removed automatically after sometime. One last thing, I would like to stick to the XMonad color configuration.
The place-and-remove stuff you can crib from XMonad.Layout.ShowWName. What you would place is a shaped override-redirect window (you may need to find X11 Shape extension bindings; I think these already exist somewhere but may not be in the Haskell X11 package) so that *only* the arrow will be drawn; ideally it would also have an alpha channel so it can be translucent, but that will only work if the user is also running a compositing manager.
2) how to put the window on top of the stack such that it is always visible. For now, for some reason the arrow is
You want an override-redirect window, not a window that goes into the stack. Since you're already using mkUnmanagedWindow, this should already be true; you may also want to explicitly raiseWindow it to put it on top, and possibly something in the logHook to re-raise it as needed.
3) how to ignore the input such that it pass trough the created window
Set a zero event mask and do-not-propagate mask, so the events are passed on.
5) an open question: is there any way to use composite such that the windows can be transparent? I don't think
You must run a separate compositing manager for this. compton is the one that seems to work best for most people. That said, just using a shaped window constrained to the arrow might be good enough.
Note that you won't be able to reproduce Compiz's behavior perfectly, because it relies on OpenGL and there don't seem to be any decent standalone OpenGL compositing managers.
--