Provided by: tk8.5-doc_8.5.19-3_all bug

NAME

       wm - Communicate with window manager

SYNOPSIS

       wm 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
              window  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/minDenom  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 maxDenom (if  no  aspect  restrictions
              are in effect, then an empty string is returned).

       wm attributes window

       wm attributes window ?option?

       wm attributes window ?option value option value...?
              This  subcommand  returns or sets platform specific attributes associated with a window. The first
              form returns a list of the platform specific flags and their values. The second form  returns  the
              value  for  the  specific option. The third form sets one or more of the values. The values are as
              follows:

              All platforms support the following attributes (though X11 users should see the notes below):

              -fullscreen
                     Places the window in a mode that takes up the entire screen, has no borders, and covers the
                     general use area (i.e. Start menu and taskbar on Windows, dock and menubar on OSX,  general
                     window decorations on X11).

              -topmost
                     Specifies whether this is a topmost window (displays above all other windows).

              On Windows, the following attributes may be set.

              -alpha Specifies the alpha transparency level of the toplevel.  It accepts a value from 0.0 (fully 2
                     transparent)  to  1.0  (opaque).   Values  outside that range will be constrained.  This is 2
                     supported on Windows 2000/XP+.  Where not supported, the -alpha value remains at 1.0.

              -disabled
                     Specifies whether the window is in a disabled state.

              -toolwindow
                     Specifies a toolwindow style window (as defined in the MSDN).

              -transparentcolor
                     Specifies the transparent color index of the toplevel.  It takes any color  value  accepted 2
                     by  Tk_GetColor.  If the empty string is specified (default), no transparent color is used. 2
                     This is supported on Windows 2000/XP+.  Where not supported,  the  -transparentcolor  value 2
                     remains at {}.

              On Mac OS X, the following attributes may be set.

              -alpha Specifies  the  alpha transparency level of the window.  It accepts a value from 0.0 (fully
                     transparent) to 1.0 (opaque), values outside that range will be constrained.

              -modified
                     Specifies the modification state of the window (determines whether the window close  widget
                     contains the modification indicator and whether the proxy icon is draggable).

              -notify
                     Specifies process notification state (bouncing of the application dock icon).

              -titlepath
                     Specifies  the  path  of the file referenced as the window proxy icon (which can be dragged
                     and dropped in lieu of the file's finder icon).

              -transparent
                     Makes the window content area  transparent  and  turns  off  the  window  shadow.  For  the
                     transparency  to  be effecive, the toplevel background needs to be set to a color with some
                     alpha, e.g.  “systemTransparent”.

              On X11, the following attributes may be set.  These are not supported by all window managers,  and
              will have no effect under older WMs.

              -zoomed
                     Requests  that  the  window  should  be  maximized.  This is the same as wm state zoomed on
                     Windows and Mac OS X.

              On X11, changes to window attributes are performed  asynchronously.   Querying  the  value  of  an
              attribute  returns the current state, which will not be the same as the value most recently set if
              the window manager has not yet processed the request or if it does not support the attribute.

       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 is not specified, 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_COLORMAP_WINDOWS property, which provides information to
              the window managers about windows that have private colormaps.

              If  windowList  is  not  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 overwrites the WM_COLORMAP_WINDOWS property with the given windows
              and returns an empty string.  The WM_COLORMAP_WINDOWS property should normally contain 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 windowList, 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 windows whose colormaps differ from their parents, followed by the top-level
              itself;  the order of the internal windows is undefined.  See the  ICCCM  documentation  for  more
              information on the WM_COLORMAP_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 command used to invoke the application.
              If value is not 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
              window.   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.   On
              Windows, a deiconified window will also be raised and be given the focus (made the active window).
              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 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.  Passive  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 forget window
              The window will be unmapped from the screen and will no longer be managed by wm.  Windows  created
              with  the  toplevel  command will be treated like frame windows once they are no longer managed by
              wm, however, the -menu configuration will be remembered and the menus will return once the  widget
              is managed again.

       wm frame window
              If  window  has been reparented by the window manager into a decorative frame, the command returns
              the platform specific window identifier for the outermost frame that contains window  (the  window
              whose  parent  is  the  root  or  virtual  root).  If window has not been reparented by the window
              manager then the command returns the platform specific 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
              specified  either  by  manual  resizing  or  in  a wm geometry command).  NewGeometry has the form
              =widthxheight±x±y, where any of =, widthxheight, or ±x±y may be omitted.   Width  and  height  are
              positive  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 preceded 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.

              Note  that  this is related to winfo geometry, but not the same. That can only query the geometry,
              and always reflects Tk's current understanding of the actual size and location of window,  whereas
              wm geometry allows both setting and querying of the window manager's understanding of the size and
              location  of  the  window.  This  can  vary  significantly, for example to reflect the addition of
              decorative elements to window such as  title  bars,  and  window  managers  are  not  required  to
              precisely follow the requests made through this command.

       wm grid window ?baseWidth baseHeight widthInc heightInc?
              This  command  indicates  that window is to be managed as a gridded window.  It also specifies the
              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_GeometryRequest.  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 window'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 example, 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;  otherwise it returns the path name of window's current group leader, or an  empty  string
              if window is not 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_GetBitmap 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 command 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.   On  the
              Windows operating system, an additional flag is supported:

              wm iconbitmap window ?-default? ?image?
                     If  the  -default  flag is given, the icon is applied to all toplevel windows (existing and
                     future) to which no other specific icon has yet been applied.  In addition to bitmap  image
                     types,  a  full  path specification to any file which contains a valid Windows icon is also
                     accepted (usually .ico or .icr files), or any file for which  the  shell  has  assigned  an
                     icon.   Tcl  will first test if the file contains an icon, then if it has an assigned icon,
                     and finally, if that fails, test for a bitmap.

       wm iconify window
              Arrange for window to be iconified.  It window has not yet been mapped for the  first  time,  this
              command will arrange for it to appear in the iconified 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_GetBitmap 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 associated  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 is not 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 command).                      2

       wm iconphoto window ?-default? image1 ?image2 ...?                                                        2
              Sets the titlebar icon for window based on the named photo images.  If -default is specified, this 2
              is applied to all future created toplevels as well.  The data in the images is taken as a snapshot 2
              at the time of invocation.  If the images are later changed, this is not reflected to the titlebar 2
              icons.  Multiple images are accepted to allow different images sizes (e.g., 16x16 and 32x32) to be 2
              provided. The window manager may scale provided icons to an appropriate size.                      2

              On Windows, the images are packed into a Windows  icon  structure.   This  will  override  an  ico 2
              specified to wm iconbitmap, and vice versa.                                                        2

              On  X, the images are arranged into the _NET_WM_ICON X property, which most modern window managers 2
              support.  A wm iconbitmap may exist simultaneously.  It is recommended to  use  not  more  than  2 2
              icons, placing the larger icon first.                                                              2

              On Macintosh, this currently does nothing.

       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 values, 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 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 currently 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 window.

       wm manage widget
              The widget specified will become a stand alone top-level window.  The  window  will  be  decorated
              with  the  window managers title bar, etc. Only frame, labelframe and toplevel widgets can be used
              with this command. Attempting to pass any other widget type will raise  an  error.  Attempting  to
              manage a toplevel widget is benign and achieves nothing. See also GEOMETRY MANAGEMENT.

       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 window'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.
              Otherwise  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.  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 window's dimensions to be greater than  or  equal  to
              width  and  height.   If width and height are specified, 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.  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 currently set  for  window.   Setting  the  override-
              redirect  flag  for  a  window causes it to be ignored by 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
              window managers ignore program-requested initial positions and ask the user to  manually  position
              the  window;  if user is specified then the window manager 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.  Otherwise it returns user or program 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 command is invoked, unless the source has been set explicitly to program.

       wm protocol window ?name? ?command?
              This  command  is  used  to manage window manager protocols such as WM_DELETE_WINDOW.  Name is the
              name of an  atom  corresponding  to  a  window  manager  protocol,  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 protocol 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 is not, 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 have not asked for one with
              wm protocol.  If a WM_DELETE_WINDOW message arrives when you have not 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  window 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 dimensions.  If resizing is disabled, then the window's size will  be  the  size
              from  the  most  recent  interactive  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
              window 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 stackorder window ?isabove|isbelow window?
              The  stackorder  command  returns  a  list  of  toplevel windows in stacking order, from lowest to
              highest. When a single toplevel window is passed, the returned list recursively  includes  all  of
              the  window's  children  that are toplevels. Only those toplevels that are currently mapped to the
              screen are returned.  The stackorder command can also be used to  determine  if  one  toplevel  is
              positioned  above  or  below  a  second  toplevel.   When two window arguments separated by either
              isabove or isbelow are passed, a boolean result indicates whether  or  not  the  first  window  is
              currently above or below the second window in the stacking order.

       wm state window ?newstate?
              If  newstate  is  specified,  the  window  will  be set to the new state, otherwise it returns the
              current state of window: either normal, iconic, withdrawn, icon, or (Windows and Mac  OS  X  only)
              zoomed.   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).  The icon state cannot
              be set.

       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  returns an empty string.  If string is not 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).  If master is specified as an empty string then window is marked as not being a transient
              window any more.  Otherwise the command returns the path name of window's current  master,  or  an
              empty  string if window is not currently a transient window.  A transient window will mirror state
              changes in the master and inherit the state of the master when initially mapped. It is an error to
              attempt to make a window a transient of itself.

       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 window 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 handle windows that are mapped in  the  withdrawn  state.   Note:  it  sometimes  seems  to  be
              necessary  to  withdraw  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 window 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 commands to limit the range of allowable
       sizes.  The range 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 interactive resizing in one or both dimensions.

       The wm manage and wm forget commands may be used to perform undocking and docking of  windows.   After  a
       widget  is  managed  by  wm  manage  command, all other wm subcommands may be used with the widget.  Only
       widgets created using the toplevel command may have an attached menu via the -menu configure  option.   A
       toplevel  widget  may  be used as a frame and managed with any of the other geometry managers after using
       the wm forget command.  Any menu associated with a toplevel widget will be hidden when managed by another
       geometry managers.  The menus will reappear once the window is managed by wm.  All  custom  bindtags  for
       widgets  in a subtree that have their top-level widget changed via a wm manage or wm forget command, must
       be redone to adjust any top-level widget path in the bindtags. Bindtags that have not been customized  do
       not have to be redone.

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 scrollbars, 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 desirable to let the user specify the number of  lines  or  characters-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 will not 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.

EXAMPLES

       A fixed-size window that says that it is fixed-size too:
              toplevel .fixed
              wm title     .fixed "Fixed-size Window"
              wm resizable .fixed 0 0

       A simple dialog-like window, centred on the screen:
              # Create and arrange the dialog contents.
              toplevel .msg
              label  .msg.l  -text "This is a very simple dialog demo."
              button .msg.ok -text OK -default active -command {destroy .msg}
              pack .msg.ok -side bottom -fill x
              pack .msg.l  -expand 1    -fill both

              # Now set the widget up as a centred dialog.

              # But first, we need the geometry managers to finish setting
              # up the interior of the dialog, for which we need to run the
              # event loop with the widget hidden completely...
              wm withdraw .msg
              update
              set x [expr {([winfo screenwidth .]-[winfo width .msg])/2}]
              set y [expr {([winfo screenheight .]-[winfo height .msg])/2}]
              wm geometry  .msg +$x+$y
              wm transient .msg .
              wm title     .msg "Dialog demo"
              wm deiconify .msg

SEE ALSO

       toplevel(3tk), winfo(3tk)

KEYWORDS

       aspect  ratio,  deiconify, focus model, geometry, grid, group, icon, iconify, increments, position, size,
       title, top-level window, units, window manager

Tk                                                     8.5                                               wm(3tk)