Article View: comp.sys.next.software
Article #1709Submission: Shell scripts to launch NeXTstep applications from command line
From: Magnus Nordborg
Date: Mon, 25 Jan 1993 22:39
Date: Mon, 25 Jan 1993 22:39
180 lines
5536 bytes
5536 bytes
Below are two csh scripts that launch NeXTstep applications from the
command line. The first, "nxlaunch", will let you type "nxlaunch Mail" instead
of "/NextApps/Mail.app/Mail &" or "nxlaunch -o Mail" instead of "open
/NextApps/Mail.app". Thus you save typing, and don't have remember the path of
every application.
There is one very useful difference between launching via "open (-o)"
or directly in background -- using "open" is just like clicking on the app,
running it the other way is literally launching it from the command line. For
example, if you have a terminal open, and use "su" to become another user, then
type "nxlaunch Mail", that user's mail will be read, whereas the "nxlaunch -o
Mail" would not.
This is also useful since "nxlaunch" also takes a "-NXHost" argument:
If I sit at localhost (PublicWindowServer) and rlogin to remotehost, then type
"nxlaunch -NXHost localhost Mail", my mail on remotehost will be read, whereas
"nxlaunch -o -NXHost localhost Mail" would read mail on localhost.
To make this last feature more useful, there is a second script,
"nxrsh", that is equivalent to "xrsh". Thus you can type (assuming a .rhosts
file, and the presence of "nxlaunch" on remote host) "nxrsh remotehost Mail".
These script are public domain, and without any guarantees. Please send
me improvement and bug reports.
###################### nxlaunch: cut below this line ######################
#! /bin/csh -f
#
# Finds and launches a NeXTapp from a shell, thus saving you the
# trouble of remembering and typing the full path.
#
# by Magnus Nordborg <magnus@fisher.Stanford.EDU>
# Wed Jan 20 13:31:38 PST 1993
#
set flags
set useopen
switch ( $#argv )
case 1:
if ( $argv[1] =~ -h* ) then
goto usage
else
set app = $argv[1]
endif
breaksw
case 2:
if ( "$argv[1]" == "-o" ) then
set useopen = 1
set app = $argv[2]
else
goto usage
endif
breaksw
case 3:
if ( $argv[1] == "-NXHost" ) then
set app = $argv[3]
set flags = "-NXHost $argv[2]"
else
goto usage
endif
breaksw
case 4:
set useopen = 1
set app = $argv[4]
if ( "$argv[1]" == "-o" && $argv[2] == "-NXHost" ) then
set flags = "-NXHost $argv[3]"
else if ( $argv[1] == "-NXHost" && "$argv[3]" == "-o" ) then
set flags = "-NXHost $argv[2]"
else
goto usage
endif
breaksw
default:
goto usage
breaksw
endsw
# check to see where Apps reside
/usr/bin/dread Workspace ApplicationPaths >& /dev/null # defined?
if ( $status ) then
set vmpath = (~/Apps /LocalApps /NextApps /NextDeveloper/Apps /NextAdmin
/NextDeveloper/Demos)
else
set tmp = `/usr/bin/dread Workspace ApplicationPaths`
set vmpath = (`echo $tmp[3] | /bin/awk -F: '{for(i=1;i<=NF;i++) print $i}'`)
endif
# find the App
foreach d ( $vmpath )
if ( -ed $d ) then
if ( -ed ${d}/${app}.app ) then
if ( $useopen ) then
/usr/bin/open $flags ${d}/${app}.app
else
${d}/${app}.app/${app} $flags &
endif
exit 0
else if ( -ex ${d}/$app ) then # not in app wrapper
if ( $useopen ) then
/usr/bin/open $flags ${d}/$app
else
${d}/$app $flags
endif
exit 0
endif
endif
end
which echo2 >& /dev/null # public domain: echo to stderr
if ( $status ) then # -- use it if it exists
echo "$0 : $app not found"
exit 1
else
echo2 "$0 : $app not found"
exit 1
endif
usage:
which echo2 >& /dev/null # public domain: echo to stderr
if ( $status ) then # -- use it if it exists
echo "Usage: $0 [-o][-NXHost hostname] NeXTapp"
echo '-o: use "open" to launch'
exit 1
else
echo2 "Usage: $0 [-o][-NXHost hostname] NeXTapp"
echo2 '-o: use "open" to launch'
exit 1
endif
###################### nxrsh: cut below this line ######################
#! /bin/csh -f
#
# nxrsh -- an equivalent of xrsh
#
# Usage: nxrsh hostname NeXTapp
#
# by Magnus Nordborg <magnus@fisher.Stanford.EDU>
# Wed Jan 20 13:31:38 PST 1993
#
# Bugs: I have not been able to come up with a clever way of
# finding the correct HOSTNAME -- it has to be set in ".login"
# My other shell script, "nxlaunch", is needed to find the app.
#
# There should be a way for this script to make the
# machine PublicWindowServer temporarily -- let me know
# if you find one...
#
set openflag
if( $#argv ) then
if( "$argv[1]" == "-o" ) then
set openflag = "-o"
shift
endif
endif
if( $#argv != 2 ) then
echo "Usage: nxrsh [-o] hostname NeXTapp"
echo '-o: use "open" to launch'
exit 1
endif
if( ! $?HOSTNAME ) then
echo "Environment variable HOSTNAME not set"
exit 1
endif
# launch it on remote host using "nxlaunch"
/usr/ucb/rsh $argv[1] "nxlaunch $openflag -NXHost $HOSTNAME $argv[2]" &
--
Magnus Nordborg
Department of Biological Sciences
Stanford University
magnus@fisher.stanford.edu (NeXT mail preferred)
Technical Details
Message-ID:
<1993Jan25.223902.13579@leland.Stanford.EDU>Path:
arc1-ca.pugleaf.net!sparky!uunet!stanford.edu!nntp.Stanford.EDU!newsShow Full Headers
Complete Article Headers
Newsgroups: comp.sys.next.software Path: arc1-ca.pugleaf.net!sparky!uunet!stanford.edu!nntp.Stanford.EDU!news From: magnus@Fisher.Stanford.EDU (Magnus Nordborg) Subject: Submission: Shell scripts to launch NeXTstep applications from command line Message-ID: <1993Jan25.223902.13579@leland.Stanford.EDU> Keywords: csh, open, Mail Sender: news@leland.Stanford.EDU (Mr News) Organization: DSO, Stanford University Date: Mon, 25 Jan 93 22:39:02 GMT Lines: 180