wm(n) Tk Built-In Commands wm(n)_________________________________________________________________NAMEwm - Communicate with window manager
SYNOPSISwm option window ?args?
_________________________________________________________________DESCRIPTION
The wm command is used to interact with window managers in
order to control such things as the title for a window,
its geometry, or the increments in terms of which it may
be resized. The wm command can take any of a number of
different forms, depending on the option argument. All of
the forms expect at least one additional argument, window,
which must be the path name of a top-level window.
The legal forms for the wm command are:
wm aspect window ?minNumer minDenom maxNumer maxDenom?
If minNumer, minDenom, maxNumer, and maxDenom are
all specified, then they will be passed to the win-
dow manager and the window manager should use them
to enforce a range of acceptable aspect ratios for
window. The aspect ratio of window (width/length)
will be constrained to lie between minNumer/minDe-
nom and maxNumer/maxDenom. If minNumer etc. are
all specified as empty strings, then any existing
aspect ratio restrictions are removed. If minNumer
etc. are specified, then the command returns an
empty string. Otherwise, it returns a Tcl list
containing four elements, which are the current
values of minNumer, minDenom, maxNumer, and maxDe-
nom (if no aspect restrictions are in effect, then
an empty string is returned).
wm client window ?name?
If name is specified, this command stores name
(which should be the name of the host on which the
application is executing) in window's
WM_CLIENT_MACHINE property for use by the window
manager or session manager. The command returns an
empty string in this case. If name isn't speci-
fied, the command returns the last name set in a wm
client command for window. If name is specified as
an empty string, the command deletes the
WM_CLIENT_MACHINE property from window.
wm colormapwindows window ?windowList?
This command is used to manipulate the WM_COL-
ORMAP_WINDOWS property, which provides information
to the window managers about windows that have
Tk 4.0 1
wm(n) Tk Built-In Commands wm(n)
private colormaps. If windowList isn't specified,
the command returns a list whose elements are the
names of the windows in the WM_COLORMAP_WINDOWS
property. If windowList is specified, it consists
of a list of window path names; the command over-
writes the WM_COLORMAP_WINDOWS property with the
given windows and returns an empty string. The
WM_COLORMAP_WINDOWS property should normally con-
tain a list of the internal windows within window
whose colormaps differ from their parents. The
order of the windows in the property indicates a
priority order: the window manager will attempt to
install as many colormaps as possible from the head
of this list when window gets the colormap focus.
If window is not included among the windows in win-
dowList, Tk implicitly adds it at the end of the
WM_COLORMAP_WINDOWS property, so that its colormap
is lowest in priority. If wm colormapwindows is
not invoked, Tk will automatically set the property
for each top-level window to all the internal win-
dows whose colormaps differ from their parents,
followed by the top-level itself; the order of the
internal windows is undefined. See the ICCCM docu-
mentation for more information on the WM_COL-
ORMAP_WINDOWS property.
wm command window ?value?
If value is specified, this command stores value in
window's WM_COMMAND property for use by the window
manager or session manager and returns an empty
string. Value must have proper list structure;
the elements should contain the words of the com-
mand used to invoke the application. If value
isn't specified then the command returns the last
value set in a wm command command for window. If
value is specified as an empty string, the command
deletes the WM_COMMAND property from window.
wm deiconify window
Arrange for window to be displayed in normal (non-
iconified) form. This is done by mapping the win-
dow. If the window has never been mapped then this
command will not map the window, but it will ensure
that when the window is first mapped it will be
displayed in de-iconified form. Returns an empty
string.
wm focusmodel window ?active|passive?
If active or passive is supplied as an optional
argument to the command, then it specifies the
focus model for window. In this case the command
returns an empty string. If no additional argument
is supplied, then the command returns the current
focus model for window. An active focus model
Tk 4.0 2
wm(n) Tk Built-In Commands wm(n)
means that window will claim the input focus for
itself or its descendants, even at times when the
focus is currently in some other application. Pas-
sive means that window will never claim the focus
for itself: the window manager should give the
focus to window at appropriate times. However,
once the focus has been given to window or one of
its descendants, the application may re-assign the
focus among window's descendants. The focus model
defaults to passive, and Tk's focus command assumes
a passive model of focusing.
wm frame window
If window has been reparented by the window manager
into a decorative frame, the command returns the X
window identifier for the outermost frame that con-
tains window (the window whose parent is the root
or virtual root). If window hasn't been reparented
by the window manager then the command returns the
X window identifier for window.
wm geometry window ?newGeometry?
If newGeometry is specified, then the geometry of
window is changed and an empty string is returned.
Otherwise the current geometry for window is
returned (this is the most recent geometry speci-
fied either by manual resizing or in a wm geometry
command). NewGeometry has the form =widthx-
height+-x+-y, where any of =, widthxheight, or
+-x+-y may be omitted. Width and height are posi-
tive integers specifying the desired dimensions of
window. If window is gridded (see GRIDDED GEOMETRY
MANAGEMENT below) then the dimensions are specified
in grid units; otherwise they are specified in
pixel units. X and y specify the desired location
of window on the screen, in pixels. If x is pre-
ceded by +, it specifies the number of pixels
between the left edge of the screen and the left
edge of window's border; if preceded by - then x
specifies the number of pixels between the right
edge of the screen and the right edge of window's
border. If y is preceded by + then it specifies
the number of pixels between the top of the screen
and the top of window's border; if y is preceded
by - then it specifies the number of pixels between
the bottom of window's border and the bottom of the
screen. If newGeometry is specified as an empty
string then any existing user-specified geometry
for window is cancelled, and the window will revert
to the size requested internally by its widgets.
wm grid window ?baseWidth baseHeight widthInc heightInc?
This command indicates that window is to be managed
as a gridded window. It also specifies the
Tk 4.0 3
wm(n) Tk Built-In Commands wm(n)
relationship between grid units and pixel units.
BaseWidth and baseHeight specify the number of grid
units corresponding to the pixel dimensions
requested internally by window using Tk_GeometryRe-
quest. WidthInc and heightInc specify the number
of pixels in each horizontal and vertical grid
unit. These four values determine a range of
acceptable sizes for window, corresponding to grid-
based widths and heights that are non-negative
integers. Tk will pass this information to the
window manager; during manual resizing, the window
manager will restrict the window's size to one of
these acceptable sizes. Furthermore, during manual
resizing the window manager will display the win-
dow's current size in terms of grid units rather
than pixels. If baseWidth etc. are all specified
as empty strings, then window will no longer be
managed as a gridded window. If baseWidth etc. are
specified then the return value is an empty string.
Otherwise the return value is a Tcl list containing
four elements corresponding to the current
baseWidth, baseHeight, widthInc, and heightInc; if
window is not currently gridded, then an empty
string is returned. Note: this command should not
be needed very often, since the Tk_SetGrid library
procedure and the setGrid option provide easier
access to the same functionality.
wm group window ?pathName?
If pathName is specified, it gives the path name
for the leader of a group of related windows. The
window manager may use this information, for exam-
ple, to unmap all of the windows in a group when
the group's leader is iconified. PathName may be
specified as an empty string to remove window from
any group association. If pathName is specified
then the command returns an empty string; other-
wise it returns the path name of window's current
group leader, or an empty string if window isn't
part of any group.
wm iconbitmap window ?bitmap?
If bitmap is specified, then it names a bitmap in
the standard forms accepted by Tk (see the Tk_Get-
Bitmap manual entry for details). This bitmap is
passed to the window manager to be displayed in
window's icon, and the command returns an empty
string. If an empty string is specified for
bitmap, then any current icon bitmap is cancelled
for window. If bitmap is specified then the com-
mand returns an empty string. Otherwise it returns
the name of the current icon bitmap associated with
window, or an empty string if window has no icon
bitmap.
Tk 4.0 4
wm(n) Tk Built-In Commands wm(n)wm iconify window
Arrange for window to be iconified. It window
hasn't yet been mapped for the first time, this
command will arrange for it to appear in the iconi-
fied state when it is eventually mapped.
wm iconmask window ?bitmap?
If bitmap is specified, then it names a bitmap in
the standard forms accepted by Tk (see the Tk_Get-
Bitmap manual entry for details). This bitmap is
passed to the window manager to be used as a mask
in conjunction with the iconbitmap option: where
the mask has zeroes no icon will be displayed;
where it has ones, the bits from the icon bitmap
will be displayed. If an empty string is specified
for bitmap then any current icon mask is cancelled
for window (this is equivalent to specifying a
bitmap of all ones). If bitmap is specified then
the command returns an empty string. Otherwise it
returns the name of the current icon mask associ-
ated with window, or an empty string if no mask is
in effect.
wm iconname window ?newName?
If newName is specified, then it is passed to the
window manager; the window manager should display
newName inside the icon associated with window. In
this case an empty string is returned as result.
If newName isn't specified then the command returns
the current icon name for window, or an empty
string if no icon name has been specified (in this
case the window manager will normally display the
window's title, as specified with the wm title com-
mand).
wm iconposition window ?x y?
If x and y are specified, they are passed to the
window manager as a hint about where to position
the icon for window. In this case an empty string
is returned. If x and y are specified as empty
strings then any existing icon position hint is
cancelled. If neither x nor y is specified, then
the command returns a Tcl list containing two val-
ues, which are the current icon position hints (if
no hints are in effect then an empty string is
returned).
wm iconwindow window ?pathName?
If pathName is specified, it is the path name for a
window to use as icon for window: when window is
iconified then pathName will be mapped to serve as
icon, and when window is de-iconified then pathName
will be unmapped again. If pathName is specified
as an empty string then any existing icon window
Tk 4.0 5
wm(n) Tk Built-In Commands wm(n)
association for window will be cancelled. If the
pathName argument is specified then an empty string
is returned. Otherwise the command returns the
path name of the current icon window for window, or
an empty string if there is no icon window cur-
rently specified for window. Button press events
are disabled for window as long as it is an icon
window; this is needed in order to allow window
managers to ``own'' those events. Note: not all
window managers support the notion of an icon win-
dow.
wm maxsize window ?width height?
If width and height are specified, they give the
maximum permissible dimensions for window. For
gridded windows the dimensions are specified in
grid units; otherwise they are specified in pixel
units. The window manager will restrict the win-
dow's dimensions to be less than or equal to width
and height. If width and height are specified,
then the command returns an empty string. Other-
wise it returns a Tcl list with two elements, which
are the maximum width and height currently in
effect. The maximum size defaults to the size of
the screen. If resizing has been disabled with the
wm resizable command, then this command has no
effect. See the sections on geometry management
below for more information.
wm minsize window ?width height?
If width and height are specified, they give the
minimum permissible dimensions for window. For
gridded windows the dimensions are specified in
grid units; otherwise they are specified in pixel
units. The window manager will restrict the win-
dow's dimensions to be greater than or equal to
width and height. If width and height are speci-
fied, then the command returns an empty string.
Otherwise it returns a Tcl list with two elements,
which are the minimum width and height currently in
effect. The minimum size defaults to one pixel in
each dimension. If resizing has been disabled with
the wm resizable command, then this command has no
effect. See the sections on geometry management
below for more information.
wm overrideredirect window ?boolean?
If boolean is specified, it must have a proper
boolean form and the override-redirect flag for
window is set to that value. If boolean is not
specified then 1 or 0 is returned to indicate
whether or not the override-redirect flag is cur-
rently set for window. Setting the override-redi-
rect flag for a window causes it to be ignored by
Tk 4.0 6
wm(n) Tk Built-In Commands wm(n)
the window manager; among other things, this means
that the window will not be reparented from the
root window into a decorative frame and the user
will not be able to manipulate the window using the
normal window manager mechanisms.
wm positionfrom window ?who?
If who is specified, it must be either program or
user, or an abbreviation of one of these two. It
indicates whether window's current position was
requested by the program or by the user. Many win-
dow managers ignore program-requested initial posi-
tions and ask the user to manually position the
window; if user is specified then the window man-
ager should position the window at the given place
without asking the user for assistance. If who is
specified as an empty string, then the current
position source is cancelled. If who is specified,
then the command returns an empty string. Other-
wise it returns user or window to indicate the
source of the window's current position, or an
empty string if no source has been specified yet.
Most window managers interpret ``no source'' as
equivalent to program. Tk will automatically set
the position source to user when a wm geometry com-
mand is invoked, unless the source has been set
explicitly to program.
wm protocol window ?name? ?command?
This command is used to manage window manager pro-
tocols such as WM_DELETE_WINDOW. Name is the name
of an atom corresponding to a window manager proto-
col, such as WM_DELETE_WINDOW or WM_SAVE_YOURSELF
or WM_TAKE_FOCUS. If both name and command are
specified, then command is associated with the pro-
tocol specified by name. Name will be added to
window's WM_PROTOCOLS property to tell the window
manager that the application has a protocol handler
for name, and command will be invoked in the future
whenever the window manager sends a message to the
client for that protocol. In this case the command
returns an empty string. If name is specified but
command isn't, then the current command for name is
returned, or an empty string if there is no handler
defined for name. If command is specified as an
empty string then the current handler for name is
deleted and it is removed from the WM_PROTOCOLS
property on window; an empty string is returned.
Lastly, if neither name nor command is specified,
the command returns a list of all the protocols for
which handlers are currently defined for window.
Tk always defines a protocol handler for
WM_DELETE_WINDOW, even if you haven't asked for one
Tk 4.0 7
wm(n) Tk Built-In Commands wm(n)
with wm protocol. If a WM_DELETE_WINDOW message
arrives when you haven't defined a handler, then Tk
handles the message by destroying the window for
which it was received.
wm resizable window ?width height?
This command controls whether or not the user may
interactively resize a top-level window. If width
and height are specified, they are boolean values
that determine whether the width and height of win-
dow may be modified by the user. In this case the
command returns an empty string. If width and
height are omitted then the command returns a list
with two 0/1 elements that indicate whether the
width and height of window are currently resizable.
By default, windows are resizable in both dimen-
sions. If resizing is disabled, then the window's
size will be the size from the most recent interac-
tive resize or wm geometry command. If there has
been no such operation then the window's natural
size will be used.
wm sizefrom window ?who?
If who is specified, it must be either program or
user, or an abbreviation of one of these two. It
indicates whether window's current size was
requested by the program or by the user. Some win-
dow managers ignore program-requested sizes and ask
the user to manually size the window; if user is
specified then the window manager should give the
window its specified size without asking the user
for assistance. If who is specified as an empty
string, then the current size source is cancelled.
If who is specified, then the command returns an
empty string. Otherwise it returns user or window
to indicate the source of the window's current
size, or an empty string if no source has been
specified yet. Most window managers interpret ``no
source'' as equivalent to program.
wm state window
Returns the current state of window: either nor-
mal, iconic, withdrawn, or icon. The difference
between iconic and icon is that iconic refers to a
window that has been iconified (e.g., with the wm
iconify command) while icon refers to a window
whose only purpose is to serve as the icon for some
other window (via the wm iconwindow command).
wm title window ?string?
If string is specified, then it will be passed to
the window manager for use as the title for window
(the window manager should display this string in
window's title bar). In this case the command
Tk 4.0 8
wm(n) Tk Built-In Commands wm(n)
returns an empty string. If string isn't specified
then the command returns the current title for the
window. The title for a window defaults to its
name.
wm transient window ?master?
If master is specified, then the window manager is
informed that window is a transient window (e.g.
pull-down menu) working on behalf of master (where
master is the path name for a top-level window).
Some window managers will use this information to
manage window specially. If master is specified as
an empty string then window is marked as not being
a transient window any more. If master is speci-
fied, then the command returns an empty string.
Otherwise the command returns the path name of win-
dow's current master, or an empty string if window
isn't currently a transient window.
wm withdraw window
Arranges for window to be withdrawn from the
screen. This causes the window to be unmapped and
forgotten about by the window manager. If the win-
dow has never been mapped, then this command causes
the window to be mapped in the withdrawn state.
Not all window managers appear to know how to han-
dle windows that are mapped in the withdrawn state.
Note: it sometimes seems to be necessary to with-
draw a window and then re-map it (e.g. with wm
deiconify) to get some window managers to pay
attention to changes in window attributes such as
group.
GEOMETRY MANAGEMENT
By default a top-level window appears on the screen in its
natural size, which is the one determined internally by
its widgets and geometry managers. If the natural size of
a top-level window changes, then the window's size changes
to match. A top-level window can be given a size other
than its natural size in two ways. First, the user can
resize the window manually using the facilities of the
window manager, such as resize handles. Second, the
application can request a particular size for a top-level
window using the wm geometry command. These two cases are
handled identically by Tk; in either case, the requested
size overrides the natural size. You can return the win-
dow to its natural by invoking wm geometry with an empty
geometry string.
Normally a top-level window can have any size from one
pixel in each dimension up to the size of its screen.
However, you can use the wm minsize and wm maxsize com-
mands to limit the range of allowable sizes. The range
Tk 4.0 9
wm(n) Tk Built-In Commands wm(n)
set by wm minsize and wm maxsize applies to all forms of
resizing, including the window's natural size as well as
manual resizes and the wm geometry command. You can also
use the command wm resizable to completely disable inter-
active resizing in one or both dimensions.
GRIDDED GEOMETRY MANAGEMENT
Gridded geometry management occurs when one of the widgets
of an application supports a range of useful sizes. This
occurs, for example, in a text editor where the scroll-
bars, menus, and other adornments are fixed in size but
the edit widget can support any number of lines of text or
characters per line. In this case, it is usually desir-
able to let the user specify the number of lines or char-
acters-per-line, either with the wm geometry command or by
interactively resizing the window. In the case of text,
and in other interesting cases also, only discrete sizes
of the window make sense, such as integral numbers of
lines and characters-per-line; arbitrary pixel sizes are
not useful.
Gridded geometry management provides support for this kind
of application. Tk (and the window manager) assume that
there is a grid of some sort within the application and
that the application should be resized in terms of grid
units rather than pixels. Gridded geometry management is
typically invoked by turning on the setGrid option for a
widget; it can also be invoked with the wm grid command
or by calling Tk_SetGrid. In each of these approaches the
particular widget (or sometimes code in the application as
a whole) specifies the relationship between integral grid
sizes for the window and pixel sizes. To return to non-
gridded geometry management, invoke wm grid with empty
argument strings.
When gridded geometry management is enabled then all the
dimensions specified in wm minsize, wm maxsize, and wm
geometry commands are treated as grid units rather than
pixel units. Interactive resizing is also carried out in
even numbers of grid units rather than pixels.
BUGS
Most existing window managers appear to have bugs that
affect the operation of the wm command. For example, some
changes won't take effect if the window is already active:
the window will have to be withdrawn and de-iconified in
order to make the change happen.
KEYWORDS
aspect ratio, deiconify, focus model, geometry, grid,
group, icon, iconify, increments, position, size, title,
Tk 4.0 10
wm(n) Tk Built-In Commands wm(n)
top-level window, units, window manager
Tk 4.0 11