The jstools Application Suite
The
jstools package is a suite of applications based on a common set of
libraries. The applications share
a set of libraries, so they have a consistent lookandfeel. They are extensively
customisable, both through startup scripts and through
a preferences mechanism. They are written in
wish(1), an graphical shell based on the Tk toolkit and the Tcl scripting
language (all three by John Ousterhout of Sun Microsystems).
This document describes version 4.1/4.4 of the
jstools package.
Compatibility
Version 4.1/4.3 of the
jstools application suite is compatible with Tk 4.1 and Tcl 7.5;
it
may work properly with other versions, but then again, it might
not. I have tested the
jstools applications lightly under Tk 3.6, and they appear to work.
There's a bug in unpatched Tk 3.6 that causes
wish(1) to die with a core dump under certain circumstances; you
should apply the official patch to Tk, which is available with
the Tk sources on the official Tk distribution sites.
There were focusrelated bugs in Tk 4.0b2 (the second beta release)
which caused the
jstools applications (and some others) to crash frequently; later
versions of Tk do not suffer from this problem.
Changes
See
jstools changes since 4.0/4.0 for a change log (including pointers to earlier changes).
The
jstools package currently includes the following chief applications:
jabbrevs - an abbreviation manager (used by
jedit)
jdoc - a documentation viewer, which you are presumably using to
read this
jedit - an multimode, multiwindow text editor
jmore - a file viewer, essentially a graphical analogue to
more(1)
jprefs - a tool to set
preferences shared by the
jstools applications
The
jedit editor can also be
embedded in other Tk applications (and
jmore and
jprefs are really just wrappers around library procedures, so they
can as well). I hope to add this capability to the other applications
in the future.
Shell Utilities
The following little applications are also included. They are
essentially wrappers around particular library routines, intended
to make
jstools panels available from shell scripts, windowmanager configuration
files, etc.
jalert - display an alert panel
jcolname - prompt for a colour name
jcolrgb - prompt for a colour by RGB values
jconfirm - ask user for confirmation
jfs - allow user to select a file
jprompt - ask user to supply a string
Unsupported Applications and Demos
There are also a few toy or demonstration applications distributed
as part of
jstools. Some of these are applications that aren't yet robust or functional
enough to be considered productionquality, but which I intend
to further develop; others are simply proofofconcept or specialpurpose
hacks. These include:
jcalendar - a tool to edit and print calendar data in
xcalendar(1) format
jhotlist - a tool to manage hotlists for an old version of NCSA Mosaic
jlaunchpad - a menu of applications and remote hosts, similar to SGI's
toolchest.
jmsgs - a graphical analogue to the Berkeley
msgs(1) command
jpeople - an addresslist and email alias manager
jperson - a commandline interface to the
jpeople database
jrtgrep - search for a regular expression in a
.jrt or
.jdoc document
Assuming
jstools has been installed normally at your site, you shouldn't need
to do anything special to use the applications, beyond making
sure they're in your
PATH. However, you can set the environment variable
JSTOOLS_LIB to specify the directory that holds
the
jstools libraries. (This is normally
/usr/local/jstools/lib or a location chosen by the person who installed
jstools at your site.) You may want to do this if you have
jstools in your own home directory for personal use, or to test
jstools out before installing it.
For specific information on using or invoking particular applications,
see the documentation for the individual application (referenced
above under
Applications).
Author
Jay Sekora
js@aq.org
http://www.aq.org/~js/
Copyright
The
jstools distribution (applications, libraries, and support files) is
copyright © 1992-1995 by Jay Sekora, but may be freely copied
and modified for any purpose under the conditions spelled out
in the copyright notices at the top of each code file.
Thanks
Most importantly, I'd like to thank John Ousterhout
<ouster@tcl.eng.sun.com>, the author of Tk and Tcl, for providing such a wonderful, robust,
simple language for writing X Windows applications, and the Tcl
community which has helped extend Tk and Tcl without forcing them
to succumb to feature bloat.
In many places in the libraries, I've borrowed code from other
people (with permission); they're mentioned in the documentation
files for the individual libraries and in comments in the code
itself.
The
jstools applications (and other applications written with
the
jstools libraries) share a set of
global preferences. These preferences can be set from within
jstools applications through
the Global Preferences panel, or with the
jprefs application, (which is just a wrapper around the Global Preferences
panel). Most
jstools applications also provide applicationspecific preferences
which can be set with an applicationspecific preferences panel.
Global preferences are saved in the file
~/.tk/defaults, which is in the standard X Windows resource format. (For
more information on this format, see
X(1), particularly the section
RESOURCES, and
option(n), particularly the section on
option readfile.) Most
jstools applications save their applicationspecific preferences in
the same format in the file
~/.tk/application-defaults, where
application is the name of the particular application, but some may save
them someplace else and/or in some other format.
Future Directions
- I intend to move more code from other applications into separate
libraries.
- I intend to make
jdoc (at least, and perhaps other applications as well) embeddable.
I hope to overhaul
the Preferences mechanism. I'd like to have some system similar to that in Brent Welch's
exmh application, where preferences are organised into categories.
I'd like a central preference panel to list the categories,
and for each application to be able to add categories, instead
of having separate global and applicationspecific panels.
Also, I'd like to add an interface for editing all the standard
Tk appearance resources, as described in
options(n), so users don't have to edit defaults files by hand to adjust
fonts, colours, relief options, etc.
- I'd like to add a notecardbrowser application, for typing
and searching through lots of short notes - an electronic card
file.
- I'd like to add a basic sketching program. (It would be
nice if drawings created by it could be included in
jedit documents.)
I'd like to have some of the applications dynamically communicate
among each other. For instance, as soon as you add an abbreviation
with
jabbrevs, it should be available in all your
jedit sessions. Global preferences you change in one application
should be reflected in all your running
jstools applications. And perhaps various applications could communicate
among each other to decide where to put their windows, so windows
overlap as little as possible.