This article is from the FAQ, by with numerous contributions by others.
Widgets that create separate windows which can be individually moved,
resized, and so on, by the window manager are specializations of the Shell
pattern. Normally you would use a TopLevelShell (the pattern used for the
TopLevel widget created by default by XtEnv).
To make the following Athena Label appear in a separate window
goodbye: @Label(# init:: (# do 'Goodbye World'->label #)
byewindow: @TopLevelShell
(# goodbye: @Label
(# init:: (# do 'Goodbye World'->label #) #);
init:: (# do goodbye.init #);
#);
byewindow.init; byewindow.popup;
 
Continue to: