[PATCH] protocol: Add wl_shell_surface_set_notification
Pekka Paalanen
ppaalanen at gmail.com
Fri Jan 4 05:25:26 PST 2013
On Thu, 27 Dec 2012 11:36:43 -0200
Tiago Vignatti <tiago.vignatti at linux.intel.com> wrote:
> Hi. I'm afraid that notification windows and tooltips are quite similar.
>
> I've built tooltip on toytoolkit using set_transient surface type, using
> the inactive method (for not giving focus on it). So instead creating a
> new surface type for notification windows, I think you can create a
> dummy surface with output's size, create transient surface on it
> (set_transient) and setting as inactive. Then for its configuration
> (corner, order, etc), instead relying on the config file, we'd need to
> create transient methods on the protocol for dealing with it (just like
> the 'inactive') so windows could be configured independently. I guess
> this gives a cleaner solution.
I don't think so, because:
- notifications do not have an obvious parent, semantically
- to position the parent you propose, would need to actually map it,
which makes it subject to floating window management rules, unless
you add yet another shell surface type for it
- you would be adding a lot of protocol for positioning notifications
- all notification clients would need to agree on positioning by their
own means, and they could not really avoid obscuring each other
I really prefer the simple protocol of "set_notification", with which:
- the compositor decides positioning according to user desktop
preferences
- positioning configuration is centralized to the compositor (the
shell)
- it is easy to show, say, the latest 3 notifications still open, to
avoid obscuring the desktop too much, i.e. arranging all open
notifications is simple and not tied to any protocol nor inter-client
communication
- notifications from several notification clients can easily be
arranged well, without fighting
Btw. "a notification client" here means a notification daemon the
foremost, not usually an application issuing a notification (both ways
are possible). From the IRC conversations I got that it would be good
to allow several notification daemons to co-exist, and to me it seems
quite trivial to do.
> On 12/26/2012 03:59 PM, Quentin Glidic wrote:
> > Notification surfaces are special surfaces that the user should
> > always be able to see. The compositor is in charge of displaying
> > them to be visible without disturbing the user workflow.
> > ---
> > protocol/wayland.xml | 12 +++++++++++-
> > 1 file changed, 11 insertions(+), 1 deletion(-)
> >
> > diff --git a/protocol/wayland.xml b/protocol/wayland.xml
> > index 0ce68ef..199f14f 100644
> > --- a/protocol/wayland.xml
> > +++ b/protocol/wayland.xml
> > @@ -527,7 +527,7 @@
> > </request>
> > </interface>
> >
> > - <interface name="wl_shell_surface" version="1">
> > + <interface name="wl_shell_surface" version="2">
> >
> > <description summary="desktop style meta data interface">
> > An interface implemented by a wl_surface. On server side the
> > @@ -729,6 +729,16 @@
> > to the client owning the popup surface.
> > </description>
> > </event>
> > +
> > + <!-- Version 2 additions -->
> > +
> > + <request name="set_notification">
> > + <description summary="make the surface a notification surface">
> > + Notification surfaces are special surfaces that the user should
> > + always be able to see. The compositor is in charge of displaying
> > + them to be visible without disturbing the user workflow.
> > + </description>
> > + </request>
> > </interface>
This is a good start.
There are some further questions, which might affect the needed
protocol, just food for thought for the future:
- is it the compositor or the client who will dismiss the notification
on timeout?
- is it the compositor or the client who will animate the notification
to and from screen?
- do these require further events, like "notification was hidden" due
to timeout or new notifications pushing old ones out?
- what happens to the hide animation, if the notification wl_surface
gets destroyed? (i.e. how does the client need to behave, so that the
animation can complete)
Thanks,
pq
More information about the wayland-devel
mailing list