Comment 19 for bug 1159430

Revision history for this message
Adam Dingle (adam-yorba) wrote :

I've continued investigating this. For Nautilus to draw a transparent desktop on top of wallpaper drawn by Compiz, we'll need two things besides the Compiz patch I posted above:

1. We need to modify the Ambiance theme, which is causing Nautilus to draw the desktop background non-transparently. Here's the line that's causing that, in themes/Ambiance/gtk-3.0/gtk-widgets.css:

* {
    /* inherit the color from parent by default */
    color: inherit;
    background-color: @bg_color; // <-- this line
}

Removing that line will make Nautilus draw a transparent background (though I'm not sure what consequences it might have in other applications).

2. We need Nautilus's desktop window to appear above the Compiz wallpaper window in the z-order. In my experiments so far it generally comes out the other way around: the wallpaper is on top of Nautilus (and so the Nautilus icons are invisible). Both those windows have type _NET_WM_WINDOW_TYPE_DESKTOP, so we need some other way for Compiz to distinguish them when stacking. I propose modifying the Compiz wallpaper plugin to set _NET_WM_STATE_BELOW on its window (this is like calling gdk_window_set_keep_below), and modifying Compiz so that desktop windows with that state bit set will be kept below others. To do that I think we'll need to modify PrivateWindow::findLowestSiblingBelow() and/or related functions in src/window.cpp in Compiz.