Using Mosaic by remote control

marca@ncsa.uiuc.edu (Marc Andreessen)
Date: Fri, 11 Jun 93 01:29:02 -0500
From: marca@ncsa.uiuc.edu (Marc Andreessen)
Message-id: <9306110629.AA08775@wintermute.ncsa.uiuc.edu>
To: www-talk@nxoc01.cern.ch
Subject: Using Mosaic by remote control
X-Md4-Signature: 0c5fd1296b5942283dc9f1dc02726057
Documentation on Mosaic 1.1's remote control functionality is
available now in...

http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/remote-control.html

...the text is below.

I'm interested to see how people use this and to get feedback on how
it can be improved.

Thanks,
Marc


Using Mosaic by Remote Control
******************************

NCSA Mosaic (version 1.1 or later) can be operated by remote
control.  This means that an application -- any application --
can directly operate Mosaic, by specifying documents on the
network to view, directing it to open new windows, etc.  

How It Works
============

Mosaic has a signal handler for the "extra", normally unused
signal called SIGUSR1.  When that signal is received by a running
Mosaic process, the signal handler determines its process ID or 
pid (via the getpid() call) and derives a config filename: 

        /tmp/xmosaic.pid

So, for example, if the running Mosaic's pid is 1343, the config
filename is: 

        /tmp/xmosaic.1343

This config file is assumed to contain two lines of text: 

 o The first line is a directive, either goto (which means jump
   right to a document) or newwin (which means open a new
   window and use that window to display a document).  
 o The second line is the URL of the document to download
   and view.  

So, an example config file that tells Mosaic to view document 
file://ftp.ncsa.uiuc.edu/ in an already-open window is: 

goto
file://ftp.ncsa.uiuc.edu/

(Note that a goto command will cause the document to be viewed in the
most-recently-used document view window, if a Mosaic session has
multiple open windows.)

How To Use It
=============

One way to use this capability is to take advantage of Mosaic's
interaction and display functionality to provide cheap and
low-overhead online, possibly context-sensitive help for other
applications.  The first time help is requested in your application,
fork off a new Mosaic process with a command-line argument
corresponding to the appropriate help document, which can of
course be pulled over the network in real time or retrieved from
the local disk.  Subsequent help requests can use the running
Mosaic process by writing a config file (the Mosaic process ID is
returned from the initial fork() call) and using the kill() call
to send a SIGUSR1.  

Another use is Mosaic as a general hypermedia display engine for
mail readers, news readers, HTML editors, and similar
applications.  For example, we're currently building capabilities
into the Emacs html-mode.el package developed by one of the
Mosaic authors (marca@ncsa.uiuc.edu) to provide transparent
HTML previewing via a single keystroke.  Other people are
putting hooks into existing mail and news handlers.  More
information will be available when it's available.  

Future Possibilities
====================

Have any ideas for future possibilities along these lines?  We're
thinking both in terms of what can be done with this method as
well as more advanced capabilities involving two-way network
communication for the future.  Drop us a line if you have any
interesting thoughts.  

Acknowledgements
================

Thanks much to Ken Evans (evans@phebos.aps.anl.gov) who
suggested the concept and contributed initial code.  

mosaic-x@ncsa.uiuc.edu