1 The Tk Toolkit, Version 2.3
 
   4 University of California at Berkeley
 
   9 This directory contains the sources and documentation for Tk, which
 
  10 is an X11 toolkit that provides the Motif look and feel and is
 
  11 implemented using the Tcl command language.
 
  13 For an introduction to Tcl and Tk you may wish to read two papers:
 
  14 ``Tcl:  An Embeddable Command Language'', in the Proceedings of the
 
  15 1990 Winter USENIX Conference, and ``An X11 Toolkit Based on the Tcl
 
  16 Language'', in the Proceedings of the 1991 Winter USENIX Conference.
 
  17 A copy of the first paper is present in Postscript form in the file
 
  18 "tcl/usenix.ps";  Postscript for the second paper is in "doc/usenix.ps".
 
  19 Both Tcl and Tk have evolved quite a bit since these papers were
 
  20 written so the papers are no longer complete or correct, but they will
 
  21 give you an introduction to the systems.
 
  23 The following things are present in this directory and its subdirectories:
 
  25     1. Tk, a toolkit for X11 windowing applications.
 
  26     2. Tcl, an embeddable command language on which Tk is based.
 
  27     3. Wish, a simple windowing shell that uses Tk and Tcl.
 
  28     4. A collection of demonstration scripts to illustrate the use
 
  29        of various features of Tk.
 
  31 The enclosed code is known to run on most versions of SunOS and Ultrix
 
  32 in combination with the X11R4 and X11R5 window servers from MIT.  It
 
  33 should also run with few or no changes on H-P and IBM workstations.
 
  35 2. What's New In This Release
 
  36 -----------------------------
 
  38 Tk 2.2 is a major new release with a number of new features relative
 
  39 to the 2.1 release.  Here is a summary of some of the most significant
 
  42 - There is now a text widget.  It will display multiple lines of text
 
  43   and allows the text to be edited (but the set of bindings for
 
  44   editing isn't very rich yet).  It also includes a tagging mechanism
 
  45   that allows you to change the fonts, colors, etc. on a character-
 
  46   by-character basis, and you can associate bindings with tags to
 
  47   implement hypertext-like features.  It handles large texts
 
  50 - Canvases have been improved in many ways, including new item types
 
  51   (arcs, bitmaps, and subwindows), Bezier spline support for lines
 
  52   and polygons, "coords" and "bbox" widget commands, and many other
 
  53   improvements and bug fixes.
 
  55 - There is a new "grab" command that can be used to create modal dialog
 
  58 - There is a new "tkwait" command for waiting for particular events to
 
  59   occur (such as modal dialog box to complete its task).
 
  61 - The menu bindings have been completely reworked to have better Motif
 
  62   compliance, such as keyboard traversal.
 
  64 - Individual menu entries can now have their own colors and fonts.
 
  66 - Most widgets (e.g. buttons, entries, text) now have a "-state" option
 
  67   that can be set to "disabled" to make the widget insensitive.
 
  69 - A new "-disabledForeground" option allows you to request that disabled
 
  70   buttons and menu entries be displayed in a dimmer color rather than with
 
  71   a stippled version of the original color.
 
  73 - Entries and messages can now be tied to a variable so that either is
 
  74   updated if the other changes.
 
  76 A good way to try out the new features is to run the "widget" demo;
 
  77 there are a number of new demonstrations to illustrate the new features.
 
  78 This release also contains many bug fixes.  For a complete description
 
  79 of the changes in this release, see the file "changes".  As far as I
 
  80 know there should not be any compatibility problems with respect to the
 
  86 Manual entries for Tk are in the "doc" subdirectory as a set of files
 
  87 with ".man" extensions.  Man pages whose names start with capital letters
 
  88 are for the procedures in Tk's C library.  All other man pages document Tcl
 
  89 commands provided by Tk.  To print any of the man pages, cd to the "doc"
 
  90 directory and invoke your favorite variant of troff using the normal
 
  91 -man macros, for example
 
  95 where <file> is the name of the man page you'd like to print.  If you'd
 
  96 like a complete set of hardcopy manual entries, send me a message with
 
  99 Manual entries for Tcl are available in the subdirectory "tcl/doc";
 
 100 see the README file in the "tcl" directory for more information.
 
 102 Unfortunately, there doesn't yet exist a tutorial-style introduction
 
 103 to the facilities of Tcl and Tk.  The papers give a general introduction,
 
 104 but it may be difficult to make the transition from the papers to the
 
 105 manual entries.  If you are familiar with the Xt toolkit then the Tk
 
 106 facilities will probably be easy to pick up from the manual entries.
 
 107 If you have no experience with X or Xt, you may wish to wait another
 
 108 6-12 months to use Tk, until a more gentle introduction is available.
 
 113 Before attempting to compile Tk, personalize Makefile by following the
 
 114 directions at the beginning of the file.  You should also configure
 
 115 Tcl by following the directions in the file "tcl/README".  Then type
 
 116 "make" in the top-level directory (the one that contains this file).
 
 117 This will compile the Tk library and generate a simple windowing shell
 
 118 called "wish".  It will also compile the Tcl library, which is in the
 
 121 5. Installing Scripts
 
 122 ---------------------
 
 124 Tk depends on a library of scripts that establish default behaviors
 
 125 for Tk widgets and do many other things.  Tk normally expects the
 
 126 scripts to be in /usr/local/lib/tk.  Create this directory and copy
 
 127 everything in the "library" subdirectory to it, including both files
 
 128 and subdirectories.  Or, if you don't want to create a subdirectory of
 
 129 /usr/local/lib (or if you can't), you can either make a symbolic link
 
 130 from there to the library subdirectory or you can add a "-DTK_LIBRARY"
 
 131 switch to CFLAGS in Makefile;  this will allow you to put the script
 
 132 library anywhere you like.
 
 134 I also recommend installing the wish binary in /usr/local.  The demo
 
 135 scripts all work best when it is installed there.
 
 140 Once wish is compiled you can use it to play around with the Tk
 
 141 facilities.  If you run wish with no arguments, it will open a small
 
 142 window on the screen and read Tcl commands from standard input.
 
 143 Or, you can play with some of the pre-canned scripts in the subdirectory
 
 144 scripts/demos.  See the README file in the directory for a description
 
 145 of what's available.  The file scripts/demos/widget is a script that
 
 146 you can use to invoke many individual demostrations of Tk's facilities. 
 
 148 If you want to start typing Tcl/Tk commands to wish, I'd suggest
 
 149 starting with the "bind" command.  Then learn about a widget-creation
 
 150 command like "button", and also learn about the "pack" and "place"
 
 151 commands for geometry management.  Note:  when you create a widget,
 
 152 it won't appear on the screen until you tell a geometry manager about
 
 153 it.  The only geometry managers at present are the packer and the placer.
 
 154 If you don't already know Tcl, read the Tcl paper and the Tcl.man manual
 
 155 entry in the tcl subdirectory.
 
 157 The easiest way to learn about writing new widgets is probably to look
 
 158 at existing widget implementations.  The demos directory contains an
 
 159 example of a trivial widget, which you might find useful as a starting
 
 160 point for writing new widgets.  You might also take a look at main.c,
 
 161 the main program for wish, to see how to write a main program that uses
 
 162 the facilities of Tk and Tcl.
 
 167 There is a network news group "comp.lang.tcl" intended for the exchange
 
 168 of information about Tcl, Tk, and related applications.  Feel free to use
 
 169 this newsgroup both for general information questions and for bug reports.
 
 170 I read the newsgroup and will attempt to fix bugs and problems reported
 
 176 There are still many imperfections with the system.  Below is a list
 
 177 of some of the more serious omissions and bugs:
 
 179     1. The widgets don't look very good on monochrome displays right now,
 
 180     because I haven't had a chance to figure out how to do the 3-D
 
 181     effects right without color.  The widgets should look pretty good in
 
 182     color.  The widgets aren't fully Motif-compliant yet. In particular,
 
 183     there is no keyboard navigation yet.  The widgets will eventually
 
 184     become fully Motif-compatible (assuming I can figure out how Motif
 
 185     widgets are supposed to look and feel).
 
 187     2. Tk doesn't work very well with virtual-root window managers such
 
 190 The file ToDo contains a list of various smaller bugs and mis-features
 
 191 that haven't been fixed yet.
 
 196 I'm very interested in getting feedback from you both about bugs and about
 
 197 overall design issues.  Send your comments to "ouster@sprite.berkeley.edu".
 
 198 I'll do my best to fix show-stopping bugs quickly, but most other things
 
 199 may not get fast turnaround, since I already have a zillion high-priority
 
 200 things to fix or implement.  Before submitting requests for new features
 
 201 you may wish to check the file ToDo, which has a list of things I already
 
 202 know about and plan to implement soon.
 
 207 Tk is still young.  I expect it to undergo substantial changes as I learn
 
 208 more about its strengths and weaknesses.  Some of the changes will not be
 
 209 backward compatible:  at this point I think it's more important to fix
 
 210 problems and improve Tk's structure than to maintain compatibility.  At
 
 211 some point in the next year or so there will be a new release with major
 
 212 incompatibilities.  My plan is to save up as many as possible of the
 
 213 incompatible changes that are needed and do them all at once.