[comp.sys.dec] DECwindows: creating remote displays

joltes@husc9.harvard.edu (Richard Joltes) (09/27/90)

A question for the DECwindows gurus out there...

I run most of my applications on my trusty(?) VS2000 but have access to some
more powerful (i.e. 8550 running VMS and 5400 running Ultrix) servers.  So I'd
like to start remote sessions on those nodes and pop the displays back to my
workstation.  VMS is easy, but the standard method is to create a DECterm, set
host to the target node, and do

$ set display/create/node=xxxxxx
$ <invoke application>

which seems a pain.  Has anyone worked up an easier way (i.e. local .exe or
comfile that will establish the session and start up the application)? 

Ultrix is trickier.  I access this system using a Multinet TELNET session, and
the only method I've found in TFM uses UCX.  Anyone done this successfully 
using Multinet (or DECnet/Ultrix)?  

Ideally what I'd like is a scheme by which when I log in all the apps I want
(even the remote ones) are in my customize settings to start automatically.
If I have to provide passwords, it's o.k.

Oh, I'm running VMS 5.3-1 and Ultrix 4.0...

Thanks in advance,

Dick Joltes					joltes@husc9.harvard.edu
Mgr. of Hardware & Facilities
Harvard University Science Center

krs0@GTE.COM (Rod Stephens) (09/28/90)

In article <4274@husc6.harvard.edu> joltes@husc9.harvard.edu (Richard Joltes) writes:

>	... the standard method is to create a DECterm, set
>host to the target node, and do
>
>$ set display/create/node=xxxxxx
>$ <invoke application>
>
>which seems a pain.  Has anyone worked up an easier way (i.e. local .exe or
>comfile that will establish the session and start up the application)? 
>
>Ultrix is trickier.  I access this system using a Multinet TELNET session, and
>the only method I've found in TFM uses UCX.  Anyone done this successfully 
>using Multinet (or DECnet/Ultrix)?  

This may not be exactly what you need but maybe it will be useful to
someone.

To go from Ultrix to Ultrix (on TCP/IP) I have the following line in
my .login:

alias rterm "xhost +\!*;rsh \!* 'setenv DISPLAY `hostname`:0.0;dxterm & ' "

If I'm logged on to radagast and I want to start a window on frodo I type:

% rterm frodo

which expands to:

xhost +frodo;rsh frodo 'setenv DISPLAY radagast:0.0;dxterm & '

which does the trick. Of course my .rhosts file on frodo must have a
line that says:

radagast	rod

so the rsh command will work.

Understanding what processes are started is a little tricky. The rsh
command does not return even after the dxterm is started on the remote
machine. I usually just control-C after I see the message indicating
that the dxterm has started. You could also put the rterm command in
the background (% rterm frodo &) and then this command will show up as
stopped when you do a "jobs" command (thought the dxterm is just
fine). Further experiments are left to the reader ;-)

One last trick: you can give dxterm a command to execute when it
starts as in:

% dxterm -e my_application

This should let you start lots of stuff automatically.

+---------------------------------------------------------------+
| Rod Stephens           | "Haven't I told you not to play      |
| GTE Laboratories, Inc  |  with my super-weapons? You might    |
| (617)466-4182          |  devastate yourself!"                |
| krs0@gte.com           |                                      |
+---------------------------------------------------------------+

allebrandi@inland.com (Tom Allebrandi) (10/02/90)

In article <4274@husc6.harvard.edu>, joltes@husc9.harvard.edu (Richard Joltes) writes:
> A question for the DECwindows gurus out there...
> I run most of my applications on my trusty(?) VS2000 but have access to some
> more powerful (i.e. 8550 running VMS and 5400 running Ultrix) servers.  So I'd
> like to start remote sessions on those nodes and pop the displays back to my
> workstation.  VMS is easy, but the standard method is to create a DECterm, set
> host to the target node, and do
> $ set display/create/node=xxxxxx
> $ <invoke application>
> which seems a pain.  Has anyone worked up an easier way (i.e. local .exe or
> comfile that will establish the session and start up the application)? 
>....

Here is what we do. Put this somewhere and define it as a DECnet object
on each node where you wish to execute an application. You will need to
customize this for the applications in use at your site.

--- Tom
Tom Allebrandi             | Vice-char and mail guru, VMSnet WG, DECUS VAX SIG
Inland Steel Research Labs | Internet:  allebrandi@inland.com
East Chicago, IN           | UUCP:      ...!uunet!inland!allebrandi
219 399 6306               | DECUServe: allebrandi     BIX: ta2

$! DW_LAUNCH.COM
$!
$! Launch remote DECwindows/X client applications.
$!
$! If this procedure is invoked in an INTERACTIVE process:
$!	P1 = The name of an application
$!	P2 = The node to execute the application on
$!	P3 = The DECwindows client node (default: current node)
$!
$! eg: "@DW_LAUNCH DECTERM EAGLE" to create a DECterm on EAGLE using
$!     the current workstation display.
$!
$! If this procedure is invoked in a BATCH process:
$!	P1 = The name of an application
$!	P2 = The DECwindows client node
$!
$! eg: "SUBMIT DW_LAUNCH/QUEUE=EAGLE$BATCH/PARAM=(DECTERM,KRAZ) to
$!     create a DECterm on EAGLE using the display on node KRAZ.
$!
$! If this procedure is invoked in a NETWORK process:
$!	There are no parameters. The application name and DECwindows
$!	client node name are sent via DECnet to the process.
$!
$! When used interactively, the interactive side invokes this procedure
$! as a DECnet task. It sends over one message which contains the name
$! of the application and the node for the display.
$!
$ applications = "/DECTERM/NOTES/S2020/"
$
$ if ((f$mode() .eqs. "NETWORK") .or. (f$mode() .eqs. "BATCH")) then -
	goto launchit
$
$ if (p1 .eqs. "") then inquire/nopun p1 "Application? "
$ if (p2 .eqs. "") then inquire/nopun p2 "Node? "
$ if (p3 .eqs. "") then p3 = f$getsyi("NODENAME")
$
$ request = "/" + f$edit(p1,"UPCASE") + "/"
$ if (f$locate(request,applications) .eq. f$length(applications)) then exit
$
$ open/write/error=oops fyle 'p2'::"0=dw_launch"
$ write fyle p1,"|",p3
$ close fyle
$oops:
$ exit
$
$launchit:
$ set verify
$ if (f$mode() .eqs. "NETWORK")
$  then	open/read/error=oops fyle sys$net:
$	read/error=oops fyle string
$	p1 = f$edit(f$element(0,"|",string),"UPCASE")
$	p2 = f$edit(f$element(1,"|",string),"UPCASE")
$	endif
$
$ request = "/" + p1 + "/"
$ if (f$locate(request,applications) .eq. f$length(applications)) then exit
$
$ set display/create/node='p2'
$ goto 'p1'
$
$DECTERM:
$ xyzzy = f$getsyi("NODENAME")
$ create/terminal/detached/nologged/display='f$trnlnm("SYS$REM_NODE")'0 -
        /window_attributes=(title="''xyzzy'",icon_name="''xyzzy'")
$ stop/id=0
$NOTES:
$ notes/interface=decwindows
$ stop/id=0
$S2020:
$ setup 2020
$ s2020
$ stop/id=0
$!end of file