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.