[RFC PATCH wayland-protocols] presentation: New protocol for presenting surfaces to the user

Pekka Paalanen ppaalanen at gmail.com
Fri Oct 18 07:42:24 UTC 2019


On Fri, 18 Oct 2019 00:56:38 +0200
Carlos Garnacho <carlosg at gnome.org> wrote:

> Hi Dorota!
> 
> On Wed, Oct 16, 2019 at 11:16 AM Dorota Czaplejewicz <
> dorota.czaplejewicz at puri.sm> wrote:  
> 
> > On Wed, 16 Oct 2019 10:43:00 +0200
> > Carlos Garnacho <carlosg at gnome.org> wrote:
> >  
> > > This protocol takes over 3 different, but interrelated aspects of
> > > DE/client interaction:
> > > - Startup notification: presenting feedback about applications
> > >   being launched, either through the compositor or another client
> > > - Focus stealing prevention: letting the compositor figure out
> > >   whether immediately switching focus to a surface makes sense.
> > > - Window raising/activation: allowing existing clients to request
> > >   focus in a controlled manner.
> > >
> > > Signed-off-by: Carlos Garnacho <carlosg at gnome.org>
> > > ---
> > >  Makefile.am                                   |   1 +
> > >  unstable/presentation/README                  |   5 +
> > >  .../presentation/presentation-unstable-v1.xml | 175 ++++++++++++++++++
> > >  3 files changed, 181 insertions(+)
> > >  create mode 100644 unstable/presentation/README
> > >  create mode 100644 unstable/presentation/presentation-unstable-v1.xml
> > >
> > > diff --git a/Makefile.am b/Makefile.am
> > > index d2c89a8..bd0e52d 100644
> > > --- a/Makefile.am
> > > +++ b/Makefile.am
> > > @@ -24,6 +24,7 @@ unstable_protocols =  
> >                               \  
> > >       unstable/xdg-decoration/xdg-decoration-unstable-v1.xml  \
> > >  
> >  unstable/linux-explicit-synchronization/linux-explicit-synchronization-unstable-v1.xml
> > \  
> > >       unstable/primary-selection/primary-selection-unstable-v1.xml  
> >       \  
> > > +     unstable/presentation/presentation-unstable-v1.xml  
> >       \  
> > >       $(NULL)
> > >
> > >  stable_protocols =  
> >      \  
> > > diff --git a/unstable/presentation/README b/unstable/presentation/README
> > > new file mode 100644
> > > index 0000000..5a77e97
> > > --- /dev/null
> > > +++ b/unstable/presentation/README
> > > @@ -0,0 +1,5 @@
> > > +Presentation protocol
> > > +
> > > +Maintainers:
> > > +Carlos Garnacho <carlosg at gnome.org>
> > > +
> > > diff --git a/unstable/presentation/presentation-unstable-v1.xml  
> > b/unstable/presentation/presentation-unstable-v1.xml  
> > > new file mode 100644
> > > index 0000000..84bf961
> > > --- /dev/null
> > > +++ b/unstable/presentation/presentation-unstable-v1.xml
> > > @@ -0,0 +1,175 @@
> > > +<?xml version="1.0" encoding="UTF-8"?>
> > > +<protocol name="presentation_v1">
> > > +  <copyright>
> > > +    Copyright 2018-2019 © Red Hat, Inc.
> > > +
> > > +    Permission is hereby granted, free of charge, to any person
> > > +    obtaining a copy of this software and associated documentation files
> > > +    (the "Software"), to deal in the Software without restriction,
> > > +    including without limitation the rights to use, copy, modify, merge,
> > > +    publish, distribute, sublicense, and/or sell copies of the Software,
> > > +    and to permit persons to whom the Software is furnished to do so,
> > > +    subject to the following conditions:
> > > +
> > > +    The above copyright notice and this permission notice (including the
> > > +    next paragraph) shall be included in all copies or substantial
> > > +    portions of the Software.
> > > +
> > > +    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> > > +    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> > > +    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> > > +    NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
> > > +    BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
> > > +    ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
> > > +    CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> > > +    SOFTWARE.
> > > +  </copyright>
> > > +
> > > +  <description summary="Presentation request protocol">
> > > +    This description provides a high-level overview of the interplay  
> > between  
> > > +    the interfaces defined this protocol. For details, see the protocol
> > > +    specification.
> > > +
> > > +    The finality of the protocol is defining a compositor context for
> > > +    surfaces requesting to be presented. Presentation requests are  
> > usually  
> > > +    initiated by an existing surface, and acknowledged by a surface  
> > being  
> > > +    mapped. By having both ends talk with the compositor through this  
> > protocol,  
> > > +    the compositor has the information to implement different  
> > commonplace  
> > > +    policies:  
> >
> > Why does a presentation request have to come from a surface? I would
> > expect that, similarly to creating a surface, presenting it would not
> > require anything but a client (and maybe even no specific client) at least
> > in the case of startup notification.
> >  
> 
> Wrt the startup notification aspect of this protocol, the reasoning was
> that the spawning of UI-less processes (wayland clients or not) is rarely
> worth UI feedback. I think my reasoning makes sense, but perhaps there's
> some usecase I missed?
> 
> However, the other aspects (activation, focus stealing prevention) do
> require a surface, so if the consensus is that we shouldn't do that for
> startup notification, should probably be split somehow.

Hi,

I wonder if the question was about...

> > > +  <interface name="zwp_presentation_manager" version="1">
> > > +    <request name="create_presenter" since="1">
> > > +      <description summary="create a new presenter">
> > > +     Creates a new presenter.
> > > +
> > > +     The surface argument is the toplevel that initiated the  
> > presentation  
> > > +     request through user input. Compositors may want to place the  
> > presented  
> > > +     surface relative to the presenter.
> > > +
> > > +     Compositors that desire to implement focus stealing prevention
> > > +     may use this request to find out the request time.
> > > +      </description>
> > > +      <arg name="id" type="new_id" interface="zwp_presenter"/>
> > > +      <arg name="surface" type="object" interface="wl_surface"/>
> > > +      <arg name="serial" type="uint" summary="the serial from the input
> > event"/>

...this request?

Why is a wl_surface needed here? Is tying this to an input event via
the serial not enough?

It is hard to get any kind of input if the client does not have a
visible wl_surface to receive input on, but I don't immediately see why
the window needs to be mentioned here explicitly.

> > > +    </request>
> > > +
> > > +    <request name="acknowledge" since="1">
> > > +      <description summary="acknowledges a presentation token">
> > > +     Acknowledges that the calling client handled the presentation  
> > token.  
> > > +
> > > +     Applications will typically receive this through the  
> > DESKTOP_STARTUP_ID  
> > > +     environment variable as set by its launcher, and should unset the
> > > +     environment variable right after this request, in order to avoid
> > > +     propagating it to child processes.
> > > +
> > > +     Compositors will ignore unknown presentation tokens.
> > > +
> > > +     Presentation tokens may be transferred across clients through  
> > means not  
> > > +     described in this protocol.
> > > +      </description>
> > > +      <arg name="token" type="string"/>
> > > +      <arg name="surface" type="object" interface="wl_surface"/>

I can buy the argument for having a wl_surface here for launch
feedback, and for activation it is necessary.

OTOH, the surface argument could be nullable if it is not always
mandatory.

> > > +    </request>
> > > +


Thanks,
pq
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20191018/bc3d1fb8/attachment.sig>


More information about the wayland-devel mailing list