richardgv / skippy-xd

A full-screen Exposé-style standalone task switcher for X11.
GNU General Public License v2.0
340 stars 76 forks source link

Use the window-pixmaps provided by the compositor of Xwm4 #53

Open ochosi opened 9 years ago

ochosi commented 9 years ago

Xfwm4's compositor recently gained an API to retrieve the window pixmap (as can be seen here: http://git.xfce.org/xfce/xfwm4/commit/?id=f6d5236b887c062117ee504358e54e63a98e3a54)

I would imagine this could simplify skippy's code quite a bit, care to take a peek at that?

landroni commented 9 years ago

Hmm, I'm not sure how this would work, since Skippy-XD is foremost desktop independent. And even if xfwm4 provided such functionality, I'm not sure that other WMs would. Which would imply adding xfwm4-specific code to Skippy-XD...

ochosi commented 9 years ago

Right, I guess I presumed it was tied more to Xfce, but I guess you're right. You could make the code a compile-time option, but yeah, I get if you don't wanna do that.

landroni commented 9 years ago

Yeah, a compile-time option would make sense...

acidtonic commented 6 years ago

There is also a subtle change if this is done that may fix other behavioral issues. Specifically when changing workspaces the windows are unmapped leading to only the Icon preview and not the windows contents.

From a quick look at the feature, they are saving the pixmaps for the unmapped windows that exist in other workspaces. Thus if skippy-xd implemented this API to fetch pixmaps, it would also contain backing images for all windows across all workspaces.

I was recently looking to hack xfwm4 to do exactly that, since I am working on trying to create a slide visual effect when changing workspaces and thought perhaps I could cheat and hack skippy-xd to provide a workspace change animation. First I'd need to get backing images of the windows off-screen and thought xfwm4 would have to be modified before that was possible, what a nice discovery!

I would be up for trying to implement this API for xfwm4 if no one else is.