Version 6 of wm transient

Updated 2002-08-25 02:22:20

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. Just setting the transient flag before the window is initially mapped may not have the full desired result.

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).
  6. Transient windows may or may not be resizable. The window manager should provide hooks to resize the window.

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.

Of course, I've probably got this all wrong, and I should read the ICCCM.

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