%! % % Date: Tue, 4 Oct 88 23:15:50 EDT % To: NeWS-makers@brillig.umd.edu % Subject: Fun and Games with window backgrounds % From: salt.uucp!gerber@uunet.uu.net (Andrew Gerber) % % I've hacked up my user.ps file to display images from $NEWSHOME/smi in % the background. (Replacing the boring blue background). The % following code from user.ps is really only good for color Suns (I have % a color 4/110). Running this stuff on a b/w 3/50 is agonizingly slow. % Thanks to whoever posted the screendump stuff; I snarfed part of that % code for this. Note that I aviod the -hires files; they seem to cause % NeWS to crash with timeout errors. % % The code below also shows how to modify your menus. Note that you may % have to change the directory path in /setback if your NeWS files do % not live in /usr/NeWS. Also this code contains the patch to % RepaintAll that fixes the problems repainting on color workstations. % At the very end of the file, Nterm defaults are set. I happen to like % a smaller font and a blue window background. The last line brings up % the saturn image if you are running on a color workstation. % % % ----------------------------------------------------------------------------- % Andrew S. Gerber | McDonnell Douglas Communication Industry Systems % uunet!salt!gerber | 5299 DTC Blvd, Englewood, CO 80111 % salt!gerber@uunet.uu.net | (303) 220 6231 % ----------------------------------------------------------------------------- % USER.PS file will be executed by init.ps % Your user.ps file allows you to over-ride all the standard defaults % and to do your own initialization. % Make sure to "protect" your defaults via the following: % /Foo where { pop % Foo begin % < changes to Foo's defaults % /mymenu [ % (Foo =>) foomenu % (Test!) {(test) forkunix} % (Color Wheel!) {(colorwheel) forkunix} % ] /new DefaultMenu send def % 0 (My Menu =>) mymenu /insertitem rootmenu send %/DebuggingServer? false def % set true in your user.ps if you're debugging. % Initialization % Main is run by PS as soon as it has processed init.ps % The default main starts up the root event mgr and starts % an executive if debugging. If you are using telnet to talk % to your PS server, make sure to use the executive: % Note that the default 144 can by changing NeWS_socket in your user.ps %/NeWS_socket % { (NEWSSOCKET) getenv } stopped % { pop (%socketl144) } if % def /blue { systemdict begin /PaintRoot { gsave framebuffer setcanvas DefaultRootGrayOrColor dup type /colortype eq {setcolor} {setgray} ifelse clippath fill grestore } def end PaintRoot {/paint self send} AllWin } def /setback { systemdict begin % You may have to change the following line if your NeWS % files do not live in /usr/NeWS (/usr/NeWS/smi/) exch append (.im8) append /ImageFileName exch def /PaintRoot { gsave fboverlay setcanvas framebuffer setcanvas 1152 900 scale ImageFileName readcanvas imagecanvas grestore } def end PaintRoot {/paint self send} AllWin (switcher -e 0) forkunix } def % STARTUP.PS file first one read in by init.ps (NeWS/litemenu.ps) LoadFile { % Default Root Menu; here so user.ps can over-ride & modify. /ntermmenu [ % Console gets autolinewrap turned on and 400 lines (VT102 Console) { (nterm -C -aw -sl 400) forkunix } (VT102) { (nterm) forkunix } ] /new DefaultMenu send def /fixedterminalmenu [ (sun) { (psterm -f -t sun) forkunix } (Console) { (psterm -f -C -t h19) forkunix } (H19) { (psterm -f -t h19) forkunix } (bitgraph) { (psterm -f -t bitgraph) forkunix } (vt100) { (psterm -f -t vt100) forkunix } (wyse) { (psterm -f -t wyse) forkunix } (tvi925) { (psterm -f -t tvi925) forkunix } ] /new DefaultMenu send def /terminalmenu [ (sun) { (psterm -t sun) forkunix } (Console) { (psterm -C -t h19) forkunix } (Fixed Startup =>) fixedterminalmenu (H19) { (psterm -t h19) forkunix } (bitgraph) { (psterm -t bitgraph) forkunix } (vt100) { (psterm -t vt100) forkunix } (wyse) { (psterm -t wyse) forkunix } (tvi925) { (psterm -t tvi925) forkunix } ] /new DefaultMenu send def /clockmenu [ (Plain) { (roundclock) RunDemoProgram } (Plain (seconds)) { (roundclock -s) RunDemoProgram } (Fancy) { (roundclock -f) RunDemoProgram } (Fancy (seconds)) { (roundclock -f -s) RunDemoProgram } ] /new DefaultMenu send def /applicationsmenu [ (Load Average) { (psload) forkunix } (Calculator) { (calcul) RunDemoPshScript } (Journal) { (journalling) RunDemoPshScript } (Clocks =>) clockmenu ] /new DefaultMenu send def /AllWin { % proc => - (Distributes proc to all windows!!) createevent dup begin /Name /DoItEvent def /Action /Window def /ClientData 2 index def end sendevent pop } def /backgroundmenu [ (angel) { (angel) setback} (bf) { (bf) setback} (bryce) { (brice) setback} (blue) { blue } (cherries) { (cherries) setback } (ermine) { (ermine) setback } (fuji) {(fuji) setback } (geese) {(geese) setback } (harem) {(harem) setback } (joshua) {(joshua) setback } (lady) {(lady) setback } (lascruces) {(lascruces) setback } (man) {(man) setback } (mona) {(mona) setback } (new_york) {(new_york) setback } (pagosa) {(pagosa) setback } (puppet) {(puppet) setback } (saturn) {(saturn) setback } (shroom) {(shroom) setback } (snow) {(snow) setback } (stjerome) {(stjerome) setback } (stormy) {(stormy) setback } (sun3110) {(sun3110) setback } (sun350) {(sun350) setback } (taj) {(taj) setback } (virgin) {(virgin) setback } (virgino) {(virgino) setback } (vla) {(vla) setback } (washing) {(washing) setback } (writing) {(writing) setback } (zion) {(zion) setback } ] /new DefaultMenu send def /repairmenu [ (Repaint All) { PaintRoot {/paint self send} AllWin (switcher -e 0) forkunix } (Reset Input) { createevent dup begin /Name UserProfile /ViewStop known { UserProfile /ViewStop get } { 16#6f01 % default to L1 } ifelse def /Action /DownTransition def end dup sendevent createevent copy dup /Action /UpTransition put sendevent } ] /new DefaultMenu send def /exitcleanly { % Destroy all windows that know /destroy {/destroy self send} AllWin % Wait 3 seconds for console to die 0.05 sleep % Clear the screen framebuffer setcanvas 1 setgray clippath fill % Terminate the server ^C } def /exitnewsmenu [ (Yes, really!) { exitcleanly } (No, not really.) {} ] /new DefaultMenu send def /rootmenu [ (Applications =>) applicationsmenu (Terminals =>) fixedterminalmenu (Scrolling Prototype =>) ntermmenu (Background =>) backgroundmenu (Repair =>) repairmenu (Exit NeWS) { exitcleanly } ] /new DefaultMenu send def } if (NeWS/litewin.ps) LoadFile { % Demo menus loaded here because of window dependancies. (NeWS/demomenu.ps) LoadFile pop } if UserProfile begin /NtermFontName /Screen def /NtermFillColor .56 .35 1 hsbcolor def /NtermTextColor 0 0 0 rgbcolor def /NtermFontHeight 12 def end currentcanvas /Color get {(saturn) setback} if