Version 23 of wish

Updated 2009-09-01 18:10:18 by LES

http://tcl.tk/man/tcl8.5/UserCmd/wish.htm

wish is a simple Tcl/Tk application created during the build process of Tk. It has minimal functionality other than reading files and attempting to execute the Tcl commands inside. It does perform an implicit package require Tk as well as drop the user into an event loop.


Remember that to pass arguments to wish, like display name, etc. the arguments come after the file name to execute AND any arguments before the -- are processed by wish rather than end up in the argv list.


When called with no filename to execute, wish will call the script $(HOME)/.wishrc (under UNIX) if it exists, before dropping into an interactive shell. Under MS Windows, %HOME%/wishrc.tcl is called. Read more about this on The RC File page.


Since Tcl/Tk 8.4 , it is said that wish as an application is no longer necessary; that with tclsh and a

 package require Tk 8.4

one has the complete functionality of this application.

Any comments - any exceptions, caveats, or additional lines you would recommend'to ensure the complete compatibility?


LES 2009-09-01: I am running Tcl/Tk 8.5 on Ubuntu Jaunty. It is the Tcl/Tk available in the official repositories. It is a new machine, it doesn't have my usual favorite ActiveTcl installed yet. The [package require Tk] command does not work for me. Tcl says there is no such package. :-(

dgp Not really a good place for this sort of thing, but lets wrap it up and then trash it when we're done.

Much detail left out of your description above. What precisely did you do, with what?

LES I will be glad to delete this discussion as soon as we're done with it and/or just take it elsewhere. Meanwhile, here is sample output:

 luc$[106]~> tclsh
 % package require xml
 3.1
 % package require tdom
 0.8.3
 % package require Tk
 can't find package Tk

It is breaking all my scripts that call tclsh then [package require Tk] instead of calling wish.


See tclsh vs. wish.

"What are the differences between wish and wish84?"

Questions :

  • Does the .wishrc script get interpreted when when tclsh is started and then a 'package require Tk is invoked?
  • No. Setting the tcl_rcFileName to ~/wishrc is a property of wish, the application, not Tk, the package. By the time any [package require Tk] command got evaluated, the resource file for tclsh would have already been sourced anyway.
  • When starting a script with "package require Tk" using tclsh, a console window opens. How do you get rid of this console ("console hide" does not work) ?

LV Recently I ran across a program which had the following coded:

#! /path/to/wish -f

I don't see any reference to a -f flag in wish.1 from Tk 7 through 8.5. Is this an old flag that used to be available? Or is it something that just isn't documented in the man page?


People writing scripts to be loaded from the wish command line should be aware that \u001a is an end-of-file character in scripts. I thought this was true for Tcl in general?