This is the README file for xtoolplaces. Author: Adam Stein (adam@iset.scan.mc.xerox.com) Copyright: Copyright (c) 1992 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.2 patchlevel 2. 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). 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. 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 -> 2.0 Final -------------------------- See CHANGES file.