: '''[wm] geometry''' ''window'' ?''newGeometry''? ***Get current geometry*** If ''newGeometry'' is not specified, the current geometry for ''window'' is returned. This is the most recent geometry specified either by manual resizing or in a '''wm geometry''' command. The format is: ''width'''''x'''''height'''''''+'''''x'''''+'''''y'', where width and height are positive integers, x and y may be positive and negative integers. Thus, the following may happen: ====== % wm geometry . 200x200+-1024+0 ====== ****Negative x positions**** On Windows, the x (and probably also y) positions may be negative. This is the case, if there are two screens on an extended desktop and the second screen is placed left to the main screen. The second screen has negative y coordinates. If the main screen is located on the left upper corner of the secondary screen with 1024 pixels width, the return of "wm geometry ." will be: "200x200+-1024+0". ***Set new geometry*** If ''newGeometry'' is specified, then the geometry of ''window'' is changed and an empty string is returned. ''NewGeometry'' has the form ''=width'''''x'''''height'' ''rootflagx'' ''x'' ''rootflagy'' ''y'', where any of ''='', ''width'''''x'''''height'', or '''''+'''''x'''''+'''''y'' may be omitted. ''Width'' and ''height'' are positive integers specifying the desired dimensions of ''window''. If ''window'' is gridded (see [http://www.tcl.tk/man/tcl8.6/TkCmd/wm.htm#M53%|%GRIDDED GEOMETRY MANAGEMENT]) then the dimensions are specified in grid units; otherwise they are specified in pixel units. ''rootflagx'' and ''rootflagy'' may be equal to '''+''' or '''-'''. If ''rootflagx'' is '''+''', then ''x'' specifies the number of pixels between the left edge of the screen physical and the left edge of ''window'' 's border. If ''rootflagx'' is '''-''' then ''x'' specifies the number of pixels between the right edge of the screen physical and the right edge of ''window'' 's border. If ''rootflagy'' is '''+''', then ''y'' specifies the number of pixels between the top of the screen and the top of ''window'' 's border. If ''rootflagy'' is '''-''', then ''y'' specifies the number of pixels between the bottom of ''window'' 's border and the bottom of the screen. ''x'' and ''y'' is a position distance as specified by the corresponding rootflag value. ''x'' and ''y'' may be positive or negative and may have an optional '''+''' prefixed. This may lead to two "signs" with the rootflag as follows: ======tcl # Position window at the right of the physical screen with border 10 pixels (both solutions possible): wm geometry . "-+10++10" wm geometry . "-10+10" # Position at the left edge of the secondary screen: wm geometry . "+-1024+0" # the leading + may not be omitted to be distinguished to the upper example ====== ****Let the application choose the size**** 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. One use case is to first set the geometry and then let the user the control and cancel the fix size: ====== wm geometry . "200x200+100+10" wm geometry . "" ====== ---- **Windows manager and set geometry** [LV] 2008 Mar 26 Note that, at least with the X Window system, an application can only suggest/request a change in window size or location - the window manager implements policy, and can decide where to actually put the window, how big it can be, etc. ---- **When to set the geometry when main window is shown** [HaO] 2015-12-04: On the clt thread [https://groups.google.com/forum/#!topic/comp.lang.tcl/2CpuNSt_ZQI%|%"tkwait visibility" on windows stalls%|%] started 2015-12-02, there was a discussion how to restore geometry on program startup. In case of complex widgets, the geometry may only be set after the window is fully drawn once. To avoid flickering, tombert came up with the following proposition: ======tcl wm withdraw . wm attributes . -alpha 0 # draw all things wm deiconify . update idletasks # do other things, if not "update idletasks" it not necessary after idle {show_windows_proc} } proc show_windows_proc {} { # load geometry from preferences to $geometry wm geometry . $geometry # now slowly increase alpha using a timer } ====== ---- **See also** * [wm] * [winfo geometry] * [Total Window Geometry] * [documenting 'wm geometry'] * [check geometry on Aqua] <> Tk syntax help | Command | Tk