There are rules that have to be applied only once, e.g. every Remember
and Apply Initially rule, as well rules that need to configure the client,
e.g. size, etc. In the best scenario the compositor would evaluate such
rules when the client is about to be mapped.
This change limits window rules only to xdg-shell clients because right
now only this protocol lets compositors to intervene in the client
initialization process. Also, it makes things a bit easier for us on the
compositor side.
Even though xdg-shellxdg-shell protocol satisfies most of ours requirements to implement window
rules, but not all of them. If the client is about to be mapped for the
window rules, it's still not perfect. For examplesecond time and its size is forced by a rule, if the client is about to bethen compositor may need
mapped for the second timeto configure it. Currently, the compositor needs somehow to configurexdg-shell protocol doesn't have any mechanism
it, otherwithat a client could use the next frame may be not "perfect"o notify the compositor about its intent to map.