This is the README file for xtoolplaces.

Author:

  Adam Stein (adam@iset.scan.mc.xerox.com)

Copyright:

  Copyright (c) 1993 Xerox Corporation.  All Rights Reserved.

  Permission to use,  copy,  modify  and  distribute  without
  charge this software, documentation, images, etc. is grant-
  ed, provided that this copyright and the author's  name  is
  retained.

  A fee may be charged for this program ONLY to recover costs
  for distribution (i.e. media costs).  No profit can be made
  on this program.

  The author assumes no responsibility for disasters (natural
  or otherwise) as a consequence of use of this software.

Description:

  This program will collect state information from any windows
  currently running on an X desktop.  This information can then
  be used to start X to return to the current desktop state.  This
  is the X equivalent of Sunview's toolplaces program.

  Xtoolplaces is currently at v1.3 patchlevel 3.  Don't worry if
  you never saw patchlevel 1, it never made it out.

  This will most likely be the last release unless something major
  is wrong.

Installation:

  This program has only been compiled and tested on BSD or BSD/SYS5
  mixed systems.  I have no idea what would have to be changed for
  a SYS5 only system (probably only index to strchr and that sort of
  stuff).
  
  This program can be compiled with gcc.  Commented out gcc lines have
  been added to Imakefile and Makefile.simple.  To use gcc instead of
  cc, comment/uncomment the appropriate lines in whichever dependency
  file you plan using for compiling.

  To compile using imake use:

		imake

  and to install the program and man page use

		imake install install.man

  To compile using make instead, use:

		make -f Makefile.simple

  and to install the program and man page use

		make -f Makefile.simple install


Methodology:

  This program works by following these steps:

  I.   Change cursor to a watch, grab the pointer so that the
       user can't change anything during execution, and ring
       the bell once to let the user know the program has started.

  II.  Loop through each screen to save from:

       a. Loop through each window in the tree to:

          1. See if it's a window worth saving.  It has to meet
	     four conditions:

	     a. it has WM_NAME set (so we know it's not a pop-up, etc)

	     b. it's a group leader or assume it's ok if group leader
	        isn't set

	     c. it's parent is the root window

	     d. it has a WM_COMMAND property to save, is a console
		window or is on a list specified with the '-m' option

          2. Tell window to update it's current state if it knows
	     about the WM_SAVE_YOURSELF message.
  
          3. See if it either:  has a state to save (WM_COMMAND);
	     is a console window or is on the missing applications
	     list (-m option)

	  4. If window doesn't know how to save itself (doesn't
	     understand WM_SAVE_YOURSELF), extract geometry
	     information manually.

          5. If console checking is enabled (-c), check to see if
	     window is a console and write 'if ... fi' clause to
	     only have it start up if X is starting on /dev/console.

          6. Check to see if window is a remote application and
	     put the appropriate remote command (default 'rsh -n') to
	     start application.

          7. Save current window state.

          8. If add arguments is enabled (-a), check to see if this
	     window applications has any arguments to add to it's
	     command line.

  III. Release pointer (which changes the cursor back to normal) and ring
       the bell twice to let the user know that the program is finished.

Bugs/Additions:

  I would appreciate knowing about any bugs either found or
  fixed and any enhancements made.  I would like to keep a
  centralized version with the upgrades so that there aren't
  50 million versions posted to the net.  I can't make any
  guarantees to when bug fixes would be made (if any are
  found :-{), but I'll do my best.

  I hope this program is of use to you, either in it's capacity or as simple
  example in X programming.

  It is known that xtoolplaces won't work with the Motif window manager (mwm)
  or the virtual version of TWM (tvtwm).  Neither of these window managers
  seem to return the queried information correctly.

Acknowledgements:

  For v1.0
  --------
  I would like to thank my original beta testers, Donn Morrill and
  Bill Fuss for helping to make sure the first version of this  program
  worked and keeping me honest.

  For v1.1 Beta -> present
  --------------------------
  See CHANGES file.
