WM_TRANSIENT_FOR
De ICCCM-eigenschap die aangeeft bij welk hoofdvenster een dialoogvenster hoort, zodat de windowmanager het bovenop kan houden en samen met de eigenaar kan verbergen.
Een venster "Bestand openen" is geen programma, maar een bijzaak van een programma. Het X-protocol weet daar niets van; alle toplevel-vensters zijn gelijk. Een programma dat XSetTransientForHint aanroept, zet WM_TRANSIENT_FOR op de ID van het hoofdvenster, en de windowmanager krijgt een hint: het dialoogvenster hoort boven zijn eigenaar in de stapelvolgorde, gecentreerd erover, geminimaliseerd wanneer de eigenaar dat wordt, buiten de taakbalk en Alt+Tab, en heeft geen minimaliseer- of maximaliseerknop nodig. ICCCM laat het meeste hiervan aan het oordeel van de windowmanager over, zodat dialoogvensters onder twm, Metacity en KWin net iets anders reageren.
EWMH breidde dit uit. Met _NET_WM_WINDOW_TYPE_DIALOG kan een venster zich als dialoog bekendmaken zonder eigenaar, en een WM_TRANSIENT_FOR die naar het rootvenster wijst betekent "transient voor de hele venstergroep": een splashscreen of foutmelding die boven alle vensters van het programma hoort. Zet je de eigenschap verkeerd, dan gaat het op de klassieke manier mis: het dialoogvenster verdwijnt achter zijn eigen hoofdvenster en het programma lijkt vastgelopen. De tegenhanger in Wayland is xdg_toplevel.set_parent, met hetzelfde doel en minder ruimte voor interpretatie.