Thoughts about decoration information in the xdg_shell
Martin Gräßlin
mgraesslin at kde.org
Sun Nov 17 21:37:47 PST 2013
On Saturday 16 November 2013 11:32:50 you wrote:
> On Nov 15, 2013 5:27 AM, "Martin Gräßlin" <mgraesslin at kde.org> wrote:
> > Hi all,
> >
> > this is a reply to the topic of whether to have information about
>
> decorations
>
> > in the xdg_shell at all (see [1]). Sorry that I don't reply to the right
> > message, had not been subscribed to the list.
> >
> > I want to outline why we in the KDE Plasma team would prefer to have the
> > possibility to tell clients whether to draw decorations or not. In Plasma
>
> we
>
> > have multiple shells and will be able to switch at runtime. From the
>
> window
>
> > manager perspective the main difference is currently the handling of
>
> window
>
> > decorations. Our touch oriented shell doesn't have decorated windows, our
> > netbook shell only has decorated windows for dialogs and our desktop
>
> shell has
>
> > a typical window decorated style, but not enforcing SSD (there are valid
>
> use
>
> > cases like yakuake).
> >
> > This gives us quite some flexibility to adjust at runtime (add keyboard to
> > tablet to get a desktop). An application doesn't need to know what the
>
> shell
>
> > currently looks like. The shell takes care of handling all of that.
> >
> > If we don't have information about whether the window should be decorated
>
> or
>
> > not in the xdg_shell we would need to adjust all applications to know
>
> about
>
> > our various shells. Otherwise a consistent user experience would not be
> > possible. Also it removes all possibilities to take this further in the
> > future.
> >
> > Now I don't want to force SSD to anybody nor do I want to be forced to
>
> CSD.
>
> > Therefore I want to have a very simple spec, which allows the compositor
>
> to
>
> > tell the clients whether they are expected to render decos themselves
>
> (enforce
>
> > CSD, e.g. GNOME Shell), whether the compositor doesn't care, but prefer
>
> them
>
> > to not render themselves (e.g. Plasma Desktop case) or whether the
>
> compositor
>
> > wants the client to not render any handles at all (enforce SSD, Plasma
>
> Active
>
> > case).
> >
> > In addition the client should tell the compositor whether it draws
>
> handles or
>
> > not. So that the SSD-supporting compositor doesn't add a decoration
>
> around a
>
> > CSD client.
> >
> > I think this would be a good solution. It would require clients to support
> > CSD, but also to not render them in shells, which prefer to not have them.
> > Also it doesn't force CSD applications to support it. They could just
>
> announce
>
> > that they do CSD no matter what.
> >
> > Opinions? Would that be acceptable for everybody?
> >
> > Cheers
> > Martin Gräßlin
> >
> > [1]
>
> http://lists.freedesktop.org/archives/wayland-devel/2013-November/011980.htm
> l
>
> Hi All,
> I think I know how we can handle all of the use-cases described above and
> still deal with Jasper's concerns about no one decorating at all. My
> suggestion would be to have a pair of flags that get sent with the
> configure event or in their own event that tells the client how to
> decorate. (I would vote for their own event to avoid making configure even
> more monolithic, but that's immaterial.)
>
> The first flag would be the compositor's preference as to whether the
> client should decorate or not. If 1, the server prefers that the client
> draws decorations; if 0, the server prefers to handle decorating itself.
> The second flag would specify whether the first flag is strict or just a
> suggestion. If 1, the client must do as specified in the first flag; if 0,
> it is only a suggestion and the client may do otherwise. For the use-cases
> listed in this thread, this would work out as follows:
>
> 1) GNOME shell would always set 11, CSD-strict. Any client that does not
> draw decorations is considered a bad client and gets what it gets.
>
> 2) Fullscreen surfaces will always recieve 01, SSD-strict.
>
> 3) KWin's desktop shell would set 00, SSD-suggested. It would prefer that
> clients let KWin do the decorating but if a client really wants its own
> decorations, it can.
>
> 4) KWin's tablet shell would set 01, SSD-strict to tell clients that they
> must not decorate. Then it is free to decorate them/tile them at will.
>
> 5) KWin's netbook shell would set 00 for dialogues and 01 for main windows.
>
> Somewhere in here we would also need an event to let the client tell the
> server whether it decided to decorate or not. There's also a race in here
> that we need to solve, but I think we can handle that.
>
> There's my thoughts. Jasper, Martin, and Rafael. Does this look good to
> you? I think it solves all the cases. I've got a few more ideas that
> extend what's given here but, to avoid added bikeshedding, I'm leaving them
> out for now.
That sounds look a good solution to me!
Cheers
Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20131118/a21a6193/attachment.pgp>
More information about the wayland-devel
mailing list