Ordem de empilhamento
A ordem em que janelas irmãs ficam umas sobre as outras, para que o servidor saiba qual aparece onde duas se sobrepõem — no X11, uma propriedade separada do foco e, em última instância, decisão do gerenciador de janelas.
Toda janela no X11 tem uma lista de filhas, e as filhas ficam numa ordem definida, de baixo para cima. Onde duas irmãs se sobrepõem, a de cima é desenhada; as partes cobertas da de baixo recebem um evento Expose quando são descobertas de novo. O protocolo core dá ao cliente algumas ferramentas: XRaiseWindow e XLowerWindow, XCirculateSubwindows, que gira as filhas, e ConfigureWindow com o campo stack_mode, que pode ser Above, Below, TopIf, BottomIf ou Opposite em relação a uma irmã opcional. XQueryTree devolve as filhas exatamente nessa ordem, de baixo para cima, e é assim que o xwininfo -tree e ferramentas parecidas sabem o que está por cima.
Para as janelas de nível superior, as filhas da janela raiz, valem na prática outras regras. Um gerenciador de janelas que selecionou SubstructureRedirect recebe as tentativas dos programas de elevar e rebaixar janelas como eventos ConfigureRequest e faz o que bem entender, e a EWMH acrescentou camadas por cima: a janela da área de trabalho embaixo, as janelas comuns no meio, docks e janelas marcadas com _NET_WM_STATE_ABOVE acima delas, e uma janela em tela cheia com foco no topo. A propriedade _NET_CLIENT_LIST_STACKING na raiz publica o resultado para paginadores e barras de tarefas. O Windows chama a mesma coisa de ordem Z, com uma faixa separada para "topmost", e o macOS fala em níveis de janela. Nos três, o fato de elevar e focar serem duas operações separadas é fonte constante de bugs, que é o que o auto-raise existe para remendar.