13e12c5d1SDavid du Colombier#!/bin/rc 2*43aadf5eSDavid du Colombier# window [many options] cmd [arg...] - create new window and run cmd in it 3*43aadf5eSDavid du Colombierrfork e 47dd7cddfSDavid du Colombierfn checkwsys{ 57dd7cddfSDavid du Colombier if(~ $wsys ''){ 67dd7cddfSDavid du Colombier echo 'window: $wsys not defined' 77dd7cddfSDavid du Colombier exit bad 87dd7cddfSDavid du Colombier } 97dd7cddfSDavid du Colombier} 107dd7cddfSDavid du Colombier 117dd7cddfSDavid du Colombier# original version used mount to do the work 127dd7cddfSDavid du Colombierfn oldway{ 133e12c5d1SDavid du Colombier switch($#*){ 143e12c5d1SDavid du Colombier case 0 1 153e12c5d1SDavid du Colombier echo usage: window '''minx miny maxx maxy''' cmd args ... 163e12c5d1SDavid du Colombier exit usage 173e12c5d1SDavid du Colombier } 183e12c5d1SDavid du Colombier 197dd7cddfSDavid du Colombier checkwsys 207dd7cddfSDavid du Colombier 217dd7cddfSDavid du Colombier dir = /mnt/wsys 227dd7cddfSDavid du Colombier srv = $wsys 237dd7cddfSDavid du Colombier 24219b2ee8SDavid du Colombier rfork ne 257dd7cddfSDavid du Colombier { 267dd7cddfSDavid du Colombier if(x=`{cat /dev/ppid}; mount $srv $dir N`{{echo $x $1 }| sed 's/^ //g;s/ +/,/g'}){ 273e12c5d1SDavid du Colombier shift 287dd7cddfSDavid du Colombier bind -b $dir /dev 293e12c5d1SDavid du Colombier echo -n `{basename $1} > /dev/label >[2] /dev/null 30219b2ee8SDavid du Colombier exec $* < /dev/cons > /dev/cons >[2] /dev/cons 313e12c5d1SDavid du Colombier } 32219b2ee8SDavid du Colombier }& 337dd7cddfSDavid du Colombier} 347dd7cddfSDavid du Colombier 357dd7cddfSDavid du Colombier# if argument is of form '100 100 200 200' or '100,100,200,200' use old way 367dd7cddfSDavid du Colombierif(~ $1 *[0-9][' ,'][0-9]*){ 377dd7cddfSDavid du Colombier oldway $* 387dd7cddfSDavid du Colombier exit 397dd7cddfSDavid du Colombier} 407dd7cddfSDavid du Colombier 417dd7cddfSDavid du Colombier# geometry parameters are: 427dd7cddfSDavid du Colombier# -r 0 0 100 100 437dd7cddfSDavid du Colombier# -dx n 447dd7cddfSDavid du Colombier# -dy n 457dd7cddfSDavid du Colombier# -minx n 467dd7cddfSDavid du Colombier# -miny n 477dd7cddfSDavid du Colombier# -maxx n 487dd7cddfSDavid du Colombier# -maxy n 497dd7cddfSDavid du Colombier# where n can be a number, to set the value, or +number or -number to change it 507dd7cddfSDavid du Colombier 517dd7cddfSDavid du Colombier# find wctl file 527dd7cddfSDavid du Colombierfn getwctl{ 537dd7cddfSDavid du Colombier if(~ $wctl ''){ 547dd7cddfSDavid du Colombier if(test -f /dev/wctl) echo /dev/wctl 557dd7cddfSDavid du Colombier if not if(test -f /mnt/term/dev/wctl) echo /mnt/term/dev/wctl 567dd7cddfSDavid du Colombier if not if(~ $service cpu) echo /mnt/term/srv/riowctl.*.* 577dd7cddfSDavid du Colombier if not { 587dd7cddfSDavid du Colombier echo window: '$wctl' not defined >[1=2] 597dd7cddfSDavid du Colombier exit usage 607dd7cddfSDavid du Colombier } 617dd7cddfSDavid du Colombier } 627dd7cddfSDavid du Colombier if not echo $wctl 637dd7cddfSDavid du Colombier} 647dd7cddfSDavid du Colombier 657dd7cddfSDavid du Colombier# use mount to make local window 667dd7cddfSDavid du Colombierif(~ $1 -m){ 677dd7cddfSDavid du Colombier shift 687dd7cddfSDavid du Colombier 697dd7cddfSDavid du Colombier checkwsys 707dd7cddfSDavid du Colombier 717dd7cddfSDavid du Colombier dir = /mnt/wsys 727dd7cddfSDavid du Colombier srv = $wsys 737dd7cddfSDavid du Colombier rfork ne 747dd7cddfSDavid du Colombier { 75503d3e0aSDavid du Colombier unmount /mnt/acme /dev >[2]/dev/null 767dd7cddfSDavid du Colombier if(mount $srv $dir 'new -pid '^`{cat /dev/ppid}^' '$"*){ 777dd7cddfSDavid du Colombier bind -b $dir /dev 787dd7cddfSDavid du Colombier # toss geometry parameters to find command 797dd7cddfSDavid du Colombier while(~ $1 -*) 807dd7cddfSDavid du Colombier switch($1){ 817dd7cddfSDavid du Colombier case -dx -dy -minx -miny -maxx -maxy 827dd7cddfSDavid du Colombier shift 2 837dd7cddfSDavid du Colombier case -r 847dd7cddfSDavid du Colombier shift 5 855e91980fSDavid du Colombier case -scroll 865e91980fSDavid du Colombier shift 875e91980fSDavid du Colombier case -noscroll 885e91980fSDavid du Colombier shift 896b6b9ac8SDavid du Colombier case -hide 906b6b9ac8SDavid du Colombier shift 917dd7cddfSDavid du Colombier } 927dd7cddfSDavid du Colombier if(~ $#* 0) cmd = rc 937dd7cddfSDavid du Colombier if not cmd = $* 946b6b9ac8SDavid du Colombier echo -n `{basename $cmd(1)} > /dev/label >[2] /dev/null 957dd7cddfSDavid du Colombier exec $cmd < /dev/cons > /dev/cons >[2] /dev/cons 967dd7cddfSDavid du Colombier } 977dd7cddfSDavid du Colombier }& 987dd7cddfSDavid du Colombier} 997dd7cddfSDavid du Colombier 1007dd7cddfSDavid du Colombierif not echo new -cd `{pwd} $* >> `{getwctl} 101