Added something I had in mind for a while now - window shaping.
I'm piggy-backing off of a window's alpha channel, though only upon request at the moment. A window can request to have its alpha channel (with a tolerance of ~0.5) set as its window shape, and update that as it pleases (or disable it). (These screenshots are from a debug mode that renders the window and then renders (at 0.7 opacity) a semi-unique color in the shape of the window shape on top of it. This means, if the window shape doesn't quite cover the whole of the window, some of the window will show through - the actual select-buffer will have the underlying window in those locations.)
This allows the Gears app to accept clicks only where a gear is present:
The reason I made it so a window has to request a these updates is because generating the 1-bit alpha map has a performance hit that I'm still trying to work around, and thus I don't want a window updating its shape constantly. For the gears app, this means updating occasionally for the sake of testing (though really it's not all that necessary to change the shape of the gears window in most cases). This usually leads to the select-buffer being slightly behind from rendering:
This screenshot is from an earlier version of the debug mode, and shows how multiple gears windows can overlap, without actually overlapping:
I was also playing around with some box blurring for eventual use in possible "glass" effects and with server-side dynamic window shadows, but no screenshots of that, it's all still very experimental and slow.