_NET_FRAME_EXTENTS
La propriété EWMH qui indique à un programme l'épaisseur du cadre que le gestionnaire de fenêtres a posé autour de lui, afin qu'il puisse calculer où il se trouve réellement à l'écran.
Sous un gestionnaire à reparenting, la fenêtre de l'application est l'enfant du cadre, et toutes les coordonnées que l'application obtient de XGetGeometry sont relatives à lui. Le programme ne voit ni la barre de titre ni les bordures et ne peut savoir où est son coin supérieur gauche à l'écran sans remonter l'arbre des fenêtres en additionnant. Beaucoup ne s'en donnaient pas la peine, d'où le bogue classique du programme qui sauvegarde sa position, la restaure au lancement suivant et descend ainsi d'une hauteur de barre de titre à chaque démarrage. La réponse de l'ICCCM, le champ de gravité dans WM_NORMAL_HINTS, était comprise par peu de monde. EWMH 1.3 a choisi la voie simple : le gestionnaire pose sur chaque fenêtre cliente _NET_FRAME_EXTENTS, quatre nombres, les pixels occupés par le cadre à gauche, à droite, en haut et en bas.
Avec eux, le programme peut calculer sa taille totale et demander une position pour le cadre entier plutôt que pour lui seul. KWin posait depuis un moment les mêmes nombres sous son propre nom, _KDE_NET_WM_FRAME_STRUT, et continue de le faire. Pour les fenêtres pas encore affichées, _NET_REQUEST_FRAME_EXTENTS demande une estimation avant que le gestionnaire ait pris la fenêtre en charge. Les décorations côté client ont renversé la situation : quand GTK 3 dessine son ombre à l'intérieur de sa propre fenêtre, le gestionnaire doit savoir quelle part n'est que du vide, ce que dit _GTK_FRAME_EXTENTS, les mêmes quatre nombres en sens inverse. xprop montre les deux, et celui qui se demande pourquoi wmctrl -e n'a pas placé la fenêtre là où il l'avait dit y trouve généralement la réponse.