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