<div dir="ltr"><div>If you have a panel/any UI elements, then you most probably have a protocol to communicate that the UI element surface is a special surface. You could then just extend this protocol so that you specify Z-ordering of these surfaces, and then the compositor should respect that.</div><div><br></div><div>If it might help here is the wlr-layer-shell protocol: <a href="https://github.com/swaywm/wlr-protocols/blob/master/unstable/wlr-layer-shell-unstable-v1.xml">https://github.com/swaywm/wlr-protocols/blob/master/unstable/wlr-layer-shell-unstable-v1.xml</a></div><div><br></div><div>With it, you basically have several layers where you can put the UI elements that you have drawn outside of the compositor, and then you can use the `namespace` to adjust ordering within the specific layer.</div><div><br></div><div>However, if you implement the window switcher in-compositor, I see no problem in just making the compositor dim the background (or the whole desktop) internally.</div><div><br></div><div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, May 22, 2019 at 8:46 PM adlo <<a href="mailto:adloconwy@gmail.com">adloconwy@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> On 24 May 2017, at 19:41, Quentin Glidic <<a href="mailto:sardemff7%2Bwayland@sardemff7.net" target="_blank">sardemff7+wayland@sardemff7.net</a>> wrote:<br>
> <br>
> On 5/24/17 8:37 PM, adlo wrote:<br>
>> What I would like to do is get the desktop window so that I can display a fake live image of the empty desktop as a background to my full-screen window switcher, so that I can imply that the windows have flown up and rearranged themselves on the window switcher, similar to GNOME Shell, but without the 3D effects or GL stuff.<br>
>> At the moment I have something like this:<br>
>> WnckWindow * lightdash_compositor_get_root_window (LightdashCompositor *compositor)<br>
>> {<br>
>>    GList *li;<br>
>>    <br>
>>    for (li = wnck_screen_get_windows (compositor->screen); li != NULL; li = li->next)<br>
>>    {<br>
>>        WnckWindow *win = WNCK_WINDOW (li->data);<br>
>>        if (wnck_window_get_window_type (win) == WNCK_WINDOW_DESKTOP)<br>
>>        {<br>
>>            return win;<br>
>>        }<br>
>>    }<br>
>>    return NULL;<br>
>> }<br>
>> How could I do this?<br>
> <br>
> You don’t, the compositor does. If you need that, you ask the compositor to do it, because only the compositor knows the content of other clients’ surfaces.<br>
> That would require additions to the protocol. If you are interested, please file an issue on GitHub so we can discuss the details.<br>
<br>
I would like my window switcher client to draw a semitransparent background over my fake desktop image, so that it basically looks like GNOME Shell's Activities Overview. It will then draw the UI elements on top of the background. Basically like this:<br>
<br>
UI elements (top)<br>
Semitransparent UI background<br>
Fake full-screen live desktop image (bottom)<br>
<br>
If some elements are rendered by my client and some are rendered by the compositor, how do I ensure they are always rendered in the right order, i.e. that the fake desktop image does not obscure the UI chrome?<br>
<br>
Regards<br>
<br>
adlo<br>
_______________________________________________<br>
wayland-devel mailing list<br>
<a href="mailto:wayland-devel@lists.freedesktop.org" target="_blank">wayland-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/wayland-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/wayland-devel</a></blockquote></div></div>