[MG] In Tk 8.5, there's a new -fullscreen option for [wm attributes] which does this. ====== toplevel .foo wm attributes .foo -fullscreen 1 ====== [SPB] - 26 Apr 2012 - Moved [MG]'s comment to the top, as it is now the most relevant. ---- [alove] 18 Oct 2004 - This page illustrates a couple ways to create full-screen toplevel windows. I wrote these for Windows XP, but the bottom one is confirmed to work for Linux too. If someone can tell me how to zoom a window in other OS versions, please let me know. ====== package require Tcl 8.4 wm title . "Full-screen with decorations" set a [expr {int([winfo screenwidth .] * 0.5)}] set b [expr {int([winfo screenheight .] * 0.5)}] wm geometry . 400x300+[expr $a - 200]+[expr $b - 150] ;# window is centered update idletasks wm attributes . -topmost no wm state . zoomed ;# This command for Windows only frame .x -highlightthickness 0 -bg #c8efff place .x -x 0 -y 0 -relwidth 1 -relheight 1 bind . "wm iconify ." ====== [alove] 11 Oct 2004 - This one has no decorations. ====== package require Tcl 8.4 wm title . "Full-screen with NO decorations" wm overrideredirect . yes ;# removes window decorations wm geometry . [winfo screenwidth .]x[winfo screenheight .]+0+0 update idletasks ;# updates the full-screen wm attributes . -topmost yes ;# stays on top - needed for Linux ;# on Win9x, if =no, alt-tab will malfunction frame .x -highlightthickness 0 -bg #c8efff place .x -x 0 -y 0 -relwidth 1 -relheight 1 button .x.min -text "Minimize" -bg #ffdbff -font "arial 10 bold" \ -command x_iconify place .x.min -x [expr [winfo screenwidth .] - 140] -y 10 button .x.end -text "Close" -bg #ffdbff -font "arial 10 bold" \ -command "destroy ." place .x.end -x [expr [winfo screenwidth .] - 60] -y 10 bind . "wm overrideredirect . yes; focus -force ." bind . x_iconify proc x_iconify {} { wm overrideredirect . no wm iconify . } ====== This one works on WindowsXP, probably Win9x, and according to [rdt], now also on Linux. Just click on the "minimize" button or the key. The trick is to use to detect that the window is being deiconified. The "focus force ." is necessary for Windows, otherwise the doesn't work until you click on the window first. Adam Love ---- [rdt] says on Linux, this works if the 'wm overrideredirect ...' comes before the 'wm geometry ...' if the 'wm attributes ...' is commented out it gives an error. [alove] Thanks, I've corrected the code above. NOTE: If you set topmost=no, you will have problems with alt-tab on Windows - the icon will disappear and you can only close the program via the task manager (end task). (by Andy M) '''window::or''' http://wiki.tcl.tk/4186 - This is a package that takes care of some nuances of going fullscreen ---- [SC] Tried this on my two-screen xinerama linux setup and of course the window spans 'both' screens. A little bit of digging reveals the culprit as the X11 WidthOfScreen macro and a little more reveals that finding the true width of the screen isn't that hard. Here's a little bit of C code as memo of how it might be done: ======c /* screen-info.c * * Compile with: * cc -o screen-info screen-info.c -I/usr/X11R6/include -L/usr/X11R6/lib -lXinerama -lX11 -lXext * */ #include #include #include #include #include int main(int argc, char *argv[]) { Display *display; Screen *screen; int i; display = XOpenDisplay(NULL); if(!display) { printf("Couldn't open display %s\n",display); } if ( XineramaIsActive( display ) ) { int nscreens; XineramaScreenInfo * info = XineramaQueryScreens( display, &nscreens ); printf("Xinerama is active\n"); for( i = 0; i< nscreens; i++ ) { printf( "Screen %d: (%d) %d+%d+%dx%d\n", i, info[i].screen_number, info[i].x_org, info[i].y_org, info[i].width, info[i].height ); } } else { printf("Xinerama is not active\n"); } screen = DefaultScreenOfDisplay(display); printf( "DefaultScreenOfDisplay, %d x %d\n", WidthOfScreen(screen), HeightOfScreen(screen) ); return(0); } ====== <> Example | GUI