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

Show minimized windows too (Now: Keep thumbnails of unmapped windows) #25

Open ikem-krueger opened 10 years ago

ikem-krueger commented 10 years ago

I like to see all my windows in an overview.

richardgv commented 10 years ago

It's not possible to display content of minimized windows right now. X does not retain the content of unmapped windows. We may only display an icon, or cache the window content (which would require skippy-xd to run as a daemon and take a certain amount of resources). Regardless of which approach is preferred, I won't have time to work on this before I finish my exam on Oct 20th.

ikem-krueger commented 10 years ago

I like to see the daemon approach.

I think it would be useful to cache only the minimized windows. (When window get minimized, take a snapshot.)

landroni commented 10 years ago

I don't think caching is a good idea. We want Skippy-XD to be as lightweight as possible, and it is for this reason that we recently dropped the daemon approach.

But I agree that displaying the icons of minimized windows would be very useful. I think there is a different report discussing this, but I forget.

richardgv commented 10 years ago

I would definitely try to implement the icon approach firstly, after my exam. Actually most code is ready.

Caching window contents would generate some extra load when it's enabled, but it shouldn't be much a problem for those who disabled it. Might be tricky to implement since unlike a WM we may not be able to know when a window is going to be iconified and take a screenshot on time, however.

@landroni: I suppose the daemon code is still there, but it has a few bugs.

ikem-krueger commented 10 years ago

I found this nice article.

Two sections are pretty interesting:

"Intercepting X events as they're received" "Preventing the backing pixmap from being freed when the window is hidden/destroyed"

richardgv commented 10 years ago

@ikem-krueger:

"Preventing the backing pixmap from being freed when the window is hidden/destroyed"

I can't believe I forgot about XCompositePIxmap()! Yes, that should work. Thanks!

KottV commented 10 years ago

afaik, this is another one, such a #11 and #8 so, there is a hope, that we will see iconified and "out-of-current-desktop" windows? :)

richardgv commented 10 years ago

so, there is a hope, that we will see iconified and "out-of-current-desktop" windows? :)

It's not my top priority now, because unfortunately there are a few more important bugs present, heh...

cosysco commented 10 years ago

Skippy works like a charm!

KottV commented 10 years ago

It's not my top priority now

But you didn't answered no. I'll be waiting!

richardgv commented 10 years ago

Displaying unmapped windows (including those on other desktops) as icons/filled boxes has been implemented. Build from the git repo to test. :-)

There's no schedule for caching window content right now, though.

jasonwert commented 10 years ago

Is there any chance we will be able to click these windows from other desktops and have it switch to that desktop?

richardgv commented 10 years ago

@jasonwert:

Is there any chance we will be able to click these windows from other desktops and have it switch to that desktop?

I suppose the WM should take care of this... Anyway, if your WM doesn't, try the switchDesktopOnActivate switch added with cbc8f4b. It won't work if your WM is not EWMH-compliant, though.

jasonwert commented 10 years ago

I'm using Openbox (Crunchbang specifically). I've downloaded the current daily from the ppa.

I have these enabled:

switchDesktopOnActivate = true showAllDesktops = true

When I run skippy-xd I get this error (Not sure if it means anything):

wert@heinlein:~$ skippy-xd wm_check(): Your WM looks EWMH compliant. running once then quitting... wm_get_stack_sub(): Retrieved window stack from _NET_CLIENT_LIST. [ 0.04 ] error 8 (BadMatch) request 42 minor 0 serial 404 ("BadMatch (invalid parameter attributes)") clientwin_handle(): KeyRelease 36 (Return) ignored. clientwin_handle(): Quitting. wert@heinlein:~$

If i click a window not on my current desktop it still dumps to the current desktop.

Any idea?

Thanks

richardgv commented 10 years ago

@jasonwert:

I tested with fvwm last night. Openbox probably doesn't quite the follow the EWMH standard if I didn't misunderstand it: EWMH didn't state what the window parameter should be in _NET_CURRENT_DESKTOP client message but Openbox works only if I set it to root window ID.

And I've made another big mistake last night: I forgot to re-enable window activation code after I disabled it for debugging... Anyway, they should be fixed now. You could build from the git repo or wait until the PPA updates.

[ 0.04 ] error 8 (BadMatch) request 42 minor 0 serial 404 ("BadMatch (invalid parameter attributes)")

It's mostly harmless. It occurs when you activate an unmapped window. Probably I will try to silence it later.

jasonwert commented 10 years ago

The new update did it. All works correctly on Openbox for me now.

Thank you for your work!

-jason