Version 5 of wm transient

Updated 2002-08-25 02:18:33

MGS notes that if you are creating a transient window, the full 'transient effect' may not kick in properly until the window has been in a fully unmapped state. It's possible that you may not even notice that it's not fully transient.

From my understanding:

  1. The transient window should always remain on-top, or in front, of the parent window.
  2. Minimizing the parent window should also minimize/withdraw the transient window.
  3. The geometry of the transient window should not change when moving/resizing/minimizing/maximizing the parent window.
  4. The transient window should never have an application (taskbar) icon.
  5. The window manager should not draw minimize/maximize buttons for the transient window (only a close button).

Some of these (probably just 5) may be dependent on the window manager. If your window is not fully transient (as mentioned above) 1, 3 and/or 5 may not happen.

If you're writing code to create a transient window, you should either:

  • wait until your toplevel is mapped, then make it transient, then withdraw and deiconify, OR
  • create your toplevel, withdraw it, update idletasks, mark as transient, and then deiconify.

I favor the second approach, as follows:

 toplevel .t
 wm withdraw  .t
 update idletasks
 wm transient .t .
 wm deiconify .t