IT-Lexikon › Programmierung › WM_TRANSIENT_FOR

WM_TRANSIENT_FOR

Programmierung Svenska → Aktualisiert: 2026-10-07

Die ICCCM-Property, die benennt, zu welchem Hauptfenster ein Dialog gehört, damit der Fenstermanager ihn oben hält und zusammen mit seinem Besitzer ausblendet.

Ein „Datei öffnen“-Fenster ist kein eigenes Programm, sondern Zubehör eines Programms. Das X-Protokoll weiß davon nichts; alle Toplevel-Fenster sind gleich. Ein Programm, das XSetTransientForHint aufruft, setzt WM_TRANSIENT_FOR auf die ID des Hauptfensters, und der Fenstermanager erhält einen Hinweis: Der Dialog soll in der Stapelreihenfolge über seinem Besitzer liegen, darüber zentriert werden, mit ihm minimiert werden, aus Taskleiste und Alt+Tab herausgehalten werden und braucht weder Minimieren- noch Maximieren-Knopf. ICCCM überlässt das meiste dem Ermessen des Fenstermanagers, weshalb sich Dialoge unter twm, Metacity und KWin leicht unterschiedlich verhalten.

EWMH erweiterte das Ganze. Mit _NET_WM_WINDOW_TYPE_DIALOG kann sich ein Fenster auch ohne Besitzer als Dialog ausweisen, und ein WM_TRANSIENT_FOR, das auf das Root-Fenster zeigt, bedeutet „transient für die ganze Fenstergruppe“: ein Splash-Screen oder eine Fehlermeldung, die über allen Fenstern des Programms liegen soll. Setzt man die Property falsch, scheitert es auf klassische Weise: Der Dialog landet hinter seinem eigenen Hauptfenster, und das Programm wirkt eingefroren. Waylands Gegenstück ist xdg_toplevel.set_parent, mit demselben Zweck und weniger Interpretationsspielraum.

← Zurück zum Lexikon