minimized and stick windows

Rafael Antognolli antognolli at
Wed Jun 12 15:39:36 PDT 2013

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

More information about the wayland-devel mailing list