richardgv / skippy-xd

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

window icons shown instead of previews #34

Open alonswartz opened 10 years ago

alonswartz commented 10 years ago

Occasionally, window previews are replaced with icons (see screenshot), but will be displayed correctly on a second invocation of --activate-window-picker.

skippy-xd-fail

Unfortunately I have not been able to reproduce this on demand, so I can't provide information on when and why this happens. I am running metacity in standalone mode on Debian Wheezy.

I'll gladly provide any information or help I can in tracking down the cause of this issue.

landroni commented 10 years ago

Assuming that you're using latest GIT, the icon-previews are probably those of iconified windows (i.e. minimized). See issue #8, which seems relevant.

alonswartz commented 10 years ago

The windows are not iconified. As I mentioned above, when this happens I just hit ESC and then re-invoke the --activate-window-picker via keybinding and the window previews are displayed correctly. Sorry for not being clearer in my original post.

And yes, I'm using the latest version from git (#281a7d57).

landroni commented 10 years ago

Hmm, is it possible that the unminized windows are located on a different virtual desktop than the one where skippy-xd is activated? (It seems that I notice this issue here.)

alonswartz commented 10 years ago

I've set showAllDesktops = false, so it only displays windows on the active virtual desktop.

richardgv commented 10 years ago

Sorry for the late reply, alonawrtz.

I'm not able to reproduce the issue, so the debugging is probably going to be a bit painful for you.

Could you please apply this patch on 281a7d57, compile it, run it, reproduce the problem, and send us everything skippy-xd prints out?

diff --git a/src/clientwin.c b/src/clientwin.c
index 9f1aed0..bea966b 100644
--- a/src/clientwin.c
+++ b/src/clientwin.c
@@ -172,6 +172,8 @@ clientwin_update(ClientWin *cw) {
                    CompositeRedirectAutomatic);
            cw->redirected = true;
            cw->cpixmap = XCompositeNameWindowPixmap(ps->dpy, cw->src.window);
+           printfdf("(%#010lx): cpixmap = %#010lx",
+                   cw->wid_client, cw->cpixmap);
        }

        // Create window picture
diff --git a/src/clientwin.h b/src/clientwin.h
index 23897e1..371532a 100644
--- a/src/clientwin.h
+++ b/src/clientwin.h
@@ -75,6 +75,8 @@ clientwin_get_disp_mode(session_t *ps, ClientWin *cw) {
    for (client_disp_mode_t *p = ps->o.clientDisplayModes; *p; p++) {
        switch (*p) {
            case CLIDISP_THUMBNAIL:
+               printfdf("(%#010lx): map_state = %d, origin = %#010lx",
+                       cw->wid_client, wattr.map_state, cw->origin);
                if (IsViewable == wattr.map_state && cw->origin) return *p;
                break;
            case CLIDISP_ICON:

Does it only occur with daemon mode?

Does using no configuration (--config /dev/null) help? Could you please post your configuration file here?