minimized and stick windows

Rafael Antognolli antognolli at
Wed Jun 12 16:07:11 PDT 2013

On Wed, Jun 12, 2013 at 7:39 PM, Rafael Antognolli <antognolli at> wrote:
> On Wed, Jun 12, 2013 at 4:39 PM, Bill Spitzak <spitzak at> wrote:
>>>> Shell surface types, exclusive:
>>>> - top-level
>>>> - transient (umm, what was this for, again?)
>>>> - popup (menu?)
>>> Transcient is for dialog (modal?) boxes, isn’t it?
>> It means "this window stays above another one".
>> Transient cannot be a type, but instead a state of a surface. It has to be
>> done by setting a "parent surface" which means that the compositor keeps the
>> surface above the parent. It does not imply anything else, in particular the
>> client decides whether either surface is currently visible.
>> The client has to be able to arbitrarily rearrange the parent pointers. This
>> means it can set them to null (since otherwise it is not possible to get all
>> rearrangements if the compositor rejects any attempts that make a loop).
>> Therefore a "transient surface" can become a "main surface" and thus they
>> must be the same object.
> In this case, it's the "transient" state could be set/unset on
> surfaces that have a parent. However, if the surface has its parent
> set to NULL, the "transient" state must be automatically unset too,
> otherwise we would have an inconsistent state. Is this correct?
>> This is a requirement so that non-trivial clients can be written that are
>> not forced to blink the transient windows to change their parenting.
>> Popups are also transient windows (and thus normal windows) but they have
>> some effects on event delivery when they are first mapped.
> So this would be a different state, that has the "transient" state
> being set as a requirement, or would it be a flag passed to the
> "transient" state when setting it? (I think the latter makes more
> sense to me).
> --
> Rafael Antognolli

I've just updated the proposal, considering my last statement. Take a
look at it and see if it fits your suggestion.

This lets us with 2 surface types (toplevel and fullscreen), and 5
states (maximized, minimized, sticky, always_on_top and transient) and
their respective parameters.

Rafael Antognolli

More information about the wayland-devel mailing list