<div dir="ltr"><div dir="ltr">Hi Matt,<div><br></div><div>Mi use case is exactly the same as you describe: embedded systems where the output is generated from separate apps. In my case there is:</div><div><br></div><div>- The main app with its UI (bottom layer)</div><div>- Video output from gstreamer should be rendered on top (I don't want to embed gstreamer in the main app for reliability reasons -- I prefer to keep them as separate processes)</div><div>- An OSD may sometimes be needed above the video layer (again this is a separate process; not using gstreamer's OSD facilities for several reasons)</div><div><br></div><div>I'm currently using the desktop shell for this but with a number of hacks and patches.</div><div><br></div><div>So your proposal sounds really great.</div><div><br></div><div>I had originally dismissed kiosk-shell because I thought it only supported a single top-level surface, same as the fullscreen shell. Now I see that I was wrong.</div><div><br></div><div>So in summary I think your proposal looks great and adding this functionality into kiosk-shell makes a lot of sense to me.</div><div><br></div><div>Guillermo</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El vie, 1 oct 2021 a las 21:32, Hoosier, Matt (<<a href="mailto:Matt.Hoosier@garmin.com">Matt.Hoosier@garmin.com</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US" style="overflow-wrap: break-word;">
<div class="gmail-m_-3464842311356743755WordSection1">
<p class="MsoNormal">I've been very happy to see kiosk-shell get introduced in the past year or so. It seems to tick nearly every box that I frequently find myself wanting when trying to do embedded deployment of pre-existing Wayland apps which expect to use
 the customary desktop-centric shells:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<ul style="margin-top:0in" type="disc">
<li class="gmail-m_-3464842311356743755MsoListParagraph" style="margin-left:0in">declarative control over which output gets which surface<u></u><u></u></li><li class="gmail-m_-3464842311356743755MsoListParagraph" style="margin-left:0in">force the apps full-screen by default<u></u><u></u></li><li class="gmail-m_-3464842311356743755MsoListParagraph" style="margin-left:0in">no new protocols needed<u></u><u></u></li></ul>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">So this is really nice. Much lower barrier to entry than IVI Shell, and certainly a better re-use story for off-the-rack applications.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">But there's a niche that doesn't have any obvious answer yet: controlling the stacking order of different toplevel apps. It's fairly common to construct an embedded system using distributed rendering from separate programs. This means you
 need a way to control which things go above or below each other to achieve the overall effect.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Would there be any interest in a contribution to enhance kiosk-shell to support configurable stacking orders? This might take the form of either relative specifications ("desktop surface XYZ always goes above desktop surface UWV") or absolute
 z-order specifications ("desktop surface XYZ's surfaces go into weston_layer #17").<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I haven't thought deeply yet about how the syntax for setting the stacking-order configuration in weston.ini would look. Maybe some kind of subscript annotation following the surface ID?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">    [output]<u></u><u></u></p>
<p class="MsoNormal">    name=LVDS1<u></u><u></u></p>
<p class="MsoNormal">    # app1 goes in weston_layer 0. app2 goes in weston_layer 1<u></u><u></u></p>
<p class="MsoNormal">    app-ids=org.domain.app1[0],com.domain.app2[1]<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Or maybe allow more than one "app-ids" line, keyed by a subscript?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">    [output]<u></u><u></u></p>
<p class="MsoNormal">    name=LVDS1<u></u><u></u></p>
<p class="MsoNormal">    app-ids[layer0]=org.domain.app1,...<u></u><u></u></p>
<p class="MsoNormal">    app-ids[layer1]=org.domain.app3,...<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">-Matt<u></u><u></u></p>
</div>
</div>

</blockquote></div></div>