{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;\f1\fmodern Courier;} \paperw13040 \paperh10800 \margl120 \margr120 {\f0\b\fs48\fi0\li0\ql\gray0 Introduction} {\f0\fs28\fi0\li0\ql\gray0 \ \ } {\f0\fs36\fi0\li0\ql\gray0 What is SystemWorks?} {\f0\fs28\fi0\li0\ql\gray0 \ \ \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 SystemWorks assists your UNIX tasks.\ } {\f0\fs28\fi0\li0\ql\gray0 SystemWorks is the first NextStep-based visual oriented shell (as far as I know). You can process files with `scripts' simply by dragging an Icon from Workspace Manager to one of `script windows'.\ SystemWorks can perform conventional UNIX operation (such as tar-compress or uudecode) within Icon-oriented framework, and it doesn't require wide knowledge of UNIX, since such complications are hidden behind the Icon metaphor.\ \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 SystemWorks is intended to be a visual counterpart for Terminal.\ } {\f0\fs28\fi0\li0\ql\gray0 SystemWorks can display its current status by realtime animation. For example, when you dragged TeX files into a ``TeXprocessor'' script, it shows flow of data (tex -> dvi, dvi -> ps, ps -> preview for example) with at-a-glance animation (of course, you can suppress the animation if you asked to do so). Input data and output data are also represented as Input/Output Icon, to make it easier to grasp what's being done.\ \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 SystemWorks can encapsulate complications of UNIX commands.} {\f0\fs28\fi0\li0\ql\gray0 \ With well-designed scripts, you can use UNIX commands without examining hairy details on manual pages. Each script represents `what the script does' in a few words, as opposed to ordinary UNIX command-line interface, where you must describe `how to do it'.\ Of course, you could do that if some friendly gurus provide friendly shell scripts; but it's far easier to drag an Icon than typing VERY LONG file name CORRECTLY. What if you must type "/NextLibrary/Documentation/NeXT/SysRefMan/22_ClassSpecs/AppKit/Application.wn" at your Terminal? Now you have alternative way.\ \ } {\f0\b\fs48\fi0\li0\ql\gray0 Installation} {\f0\fs28\fi0\li0\ql\gray0 \ \ In this section, I assume you have already unpacked the distribution package.\ \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 Creating directory\ } {\f0\fs28\fi0\li0\ql\gray0 SystemWorks requires three directories: Filter directory, Script directory, and Icon directory. Though they are initially set to different directories ("~/lib/filt", "~/lib/works", "~/lib/icon", respectively), they can be identical.\ Once you have decided where to put those files in, create these directories at your Terminal. If you decided to follow default setting, just type these lines:\ \ } {\f1\fs28\fi0\li0\ql\gray0 cd\ mkdirs ~/lib/filt\ mkdirs ~/lib/works\ mkdirs ~/lib/icons\ } {\f0\fs28\fi0\li0\ql\gray0 \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 Setting defaults} {\f0\fs28\fi0\li0\ql\gray0 \ If you made different directories, you must tell them in the Preference panel of SystemWorks. After you made it reflect differences, click OK button. SystemWorks will automatically memorize defaults for later use.\ \ } {\f0\b\fs48\fi0\li0\ql\gray0 Usage} {\f0\fs28\fi0\li0\ql\gray0 \ \ } {\f0\fs36\fi0\li0\ql\gray0 How can I use it? (Novice Users' section)} {\f0\fs28\fi0\li0\ql\gray0 \ \ If you are new to both UNIX and SystemWorks, and if you are enough deliberate, you had better to check `Novice user mode' in Preference panel. It will disable some menu items, to avoid bothering you on obscure features.\ \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 Obtain scripts from somewhere; e.g. friendly gurus, FTP sites...\ } {\f0\fs28\fi0\li0\ql\gray0 If you are new to UNIX at all, you must ask friendly UNIX users for assistance. Tell him what you want to do, and ask him whether it's possible to do the job with this software.\ \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 Select `Script', then `Open'. Choose the script file in Open Panel.\ } {\f0\fs28\fi0\li0\ql\gray0 Once you've got preprogrammed scripts, all you need to do is to open the script. It can be performed in standard manner. Double click in the Workspace Manager also work as it should. Keeping a miniaturized browser for the script directory might be a good idea.\ \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 Drag the file you want to process, into the newly created window.\ } {\f0\fs28\fi0\li0\ql\gray0 The title of each script window will tell you what the script does. If you want to perform certain task on certain file, bring up the script window (double-click when miniaturized, select `Activate` menu when hidden under other windows), then drag the Icon into that window.\ \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 For further information...} {\f0\fs28\fi0\li0\ql\gray0 \ Some scripts are included in official distribution of this software. Detailed document is also included in the distribution package. Ask your system administrator if you can't find it yourself.\ \ } {\f0\fs36\fi0\li0\ql\gray0 How can I program it? (UNIX Users' section)} {\f0\fs28\fi0\li0\ql\gray0 \ \ In this section, I documented differences with conventional UNIX shell. For further details on each menu/panel/window, consult the document "SystemWorks.wn", which should be enclosed in the distribution package.\ \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 Basically, sequential execution and piped execution are identical.\ } {\f0\fs28\fi0\li0\ql\gray0 Every UNIX command takes some sort of data as input; output goes to somewhere visible. In that sense, piped commands and sequential commands are identical. Therefore, in SystemWorks, no distinction is made between these two, to simplify the visual representation and to encapsulate details of UNIX.\ SystemWorks automatically controls the sequence of execution; namely, if two processes are connected via pipes, they will be executed concurrently. If two processes are connected via intermediate files, they will be executed consecutively.\ \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 You don't have to care about temporary files and redirections.\ } {\f0\fs28\fi0\li0\ql\gray0 If said filter takes input from a file, and if its previous filter writes output to standard output, automatic redirection takes place; i.e. output of the previous filter goes to temporary file, then the temporary file will be fed to the filter.\ This feature improves modularity of each filter. Such modularity enables you to perform complex tasks just by putting elemental functions each other.\ However, misuse of such automaticity will lead to unwanted result. Careless scripts may fill /tmp filesystem with full of junks. If you told that "cat -" would read input from file, it will block immediately.\ \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 Variables are similar to that of shell script.\ } {\f0\fs28\fi0\li0\ql\gray0 Currently, the following shell variables are available:\ } {\f0\b\fs28\fi0\li0\ql\gray0 $s} {\f0\fs28\fi0\li0\ql\gray0 Source directory; where incoming file resides.\ } {\f0\b\fs28\fi0\li0\ql\gray0 $i} {\f0\fs28\fi0\li0\ql\gray0 Input file; basename of input file.\ } {\f0\b\fs28\fi0\li0\ql\gray0 $r} {\f0\fs28\fi0\li0\ql\gray0 Root name; name of input file, with last extention stripped.\ } {\f0\b\fs28\fi0\li0\ql\gray0 $m} {\f0\fs28\fi0\li0\ql\gray0 Selected menu item in its PopUp List.\ However, you can't define your own. This restriction is necessary to maintain modularity on each filter, because the ability to define your own shell variable in each filter implies ability to maintain context over filters. What if some novice users incorporated your context-sensitive filter into other scripts?\ \ } {\f0\b\i\fs28\fi0\li0\ql\gray0 Designing scripts...\ } {\f0\fs28\fi0\li0\ql\gray0 There are some points to care, when you design your own version of script.\ Output Icon should represent output file / device.\ Don't expect versatile function from PopUp List.\ \ } {\f0\b\fs48\fi0\li0\ql\gray0 Acknowledgments} {\f0\fs28\fi0\li0\ql\gray0 \ \ First of all, I would like to thank Ms. Erica J. Liebman. This project was triggered by her article, "What's Up Dock?", NeXT Users' Journal Issue 6. \ I would also like to thank Mr. Kris Jensen. MoveMatrix code was derived from the column "Stone Age" of NeXT Users' Journal Issue7, which was written by him.\ I learned much about Speaker/Listener from the NextAnswers. Icon dragging and Icon image cloning code was derived from this.\ NextAnswers, /NextDeveloper/Examples and NeXT Users' Journal have been my invaluable source of information. I would like to say thanks to all those who concerned with these projects. This program couldn't exist without these great work.\ Thanks also goes to Dr. Suguru Yamaguti and Dr. Shinji Shimojo at this Laboratory, for comments, criticisms and suggestions on the design of this software.\ \ Youki Kadobayashi <youki@ics.osaka-u.ac.jp>\ Information Network Architecture Laboratory\ Department of Information and Computer Sciences\ Faculty of Engineering Science\ Osaka University, Japan\ } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.