[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference bulova::decw_jan-89_to_nov-90

Title:DECWINDOWS 26-JAN-89 to 29-NOV-90
Notice:See 1639.0 for VMS V5.3 kit; 2043.0 for 5.4 IFT kit
Moderator:STAR::VATNE
Created:Mon Oct 30 1989
Last Modified:Mon Dec 31 1990
Last Successful Update:Fri Jun 06 1997
Number of topics:3726
Total number of notes:19516

302.0. "VMS hackers: Want to see what a window manager does ?" by CVG::PETTENGILL (mulp) Sat Feb 25 1989 00:05

The PC DECwindows software field test software currently comes with two window
managers that run on VMS: a version of the normal window manager that has borders
that allow you to move windows off the top of the display and a version of the
Ultrix uwm window manager.

MOSAIC"pcsgdecwin"::[.DWDOS.XSERVER.VMS]
                            PCX$UWM.EXE   VMS version of the uwm window manager
                            PCX$UWM.RC    Initialization file for PCX$UWM
                            PCX$WMGR.EXE  Modified version of DECW$WINMGR

(I'm not part of this group, but I have been trying out the PC DECwindows
software and these are a necessary alternative to the standard VMS window
manager.  uwm is quite different!)

Perhaps the easiest way to get them running is to stop/id the current window
manager (process name will be DECW$WM_0 I think) and then watch the icon box
go away.  Now type SPAWN/NOWAIT RUN PCX$UWM and hope that your terminal window
still has input focus (even if you can't see it).  You might find that you
have to use the mouse to exit all the applications and end the session with
the session manager or perhaps login from a LAT terminal to clean up if things
go astray.  I think there is a way to make a new window manager be the default,
but I'd make sure I wanted to change first.

T.RTitleUserPersonal
Name
DateLines
302.1CASEE::LACROIXNo futureMon Feb 27 1989 04:346
    Re .0:

    You may want to use the DECW$WINMGREXE logical instead...

    Denis.

302.2Decw$displaySTAR::CYPRYCHMon Feb 27 1989 10:203
    When using decw$display, PCX$UWM beeps, and nothing
    happens.  Is this supported?

302.3I like it!STAR::BRANDENBERGIntelligence - just a good party trick?Mon Feb 27 1989 12:036
    
    Great stuff (though I wish my mouse wasn't operating intermittently). 
    How about a man page to document the features of the .uwmrc file?
    
    						monty

302.4Thank you! This is really becoming better every day.YGDRSL::SANTIAGODrinking deeply of the Pierian springMon Feb 27 1989 12:1836
I'm GLAD to get rid of that icon box!

One small problem (of course). When I try to iconify DECterm or NOTES,
I get the following ACCVIO - I'm iconifying by meta-ctrl-left as on
my Ultrix uwm. BTW, I can't get it to read the UWMRC - I put it in
DECW$USER_DEFAULTS (not SYS$LOGIN). Should it be elsewhere?

--------------------------------------------------------------------------
%SYSTEM-F-ACCVIO, access violation, reason mask=01, virtual address=0020F00D, PC
=000147D5, PSL=03C00008

  Improperly handled condition, image exit forced.

        Signal arguments              Stack contents

        Number = 00000005                00000000
        Name   = 0000000C                2C1C0000
                 00000001                7FF1D350
                 0020F00D                7FF1D314
                 000147D5                00006452
                 03C00008                000B0B7C
                                         00000005
                                         00000156
                                         00000FCC
                                         00002444

        Register dump

        R0 = 00000001  R1 = 000EBF15  R2 = 0020F00D  R3 = 000EBF0C
        R4 = FFEDCF03  R5 = 0000004B  R6 = 00000028  R7 = 000EBF10
        R8 = 00000017  R9 = 000EBF10  R10= 0001BE60  R11= 00000000
        AP = 7FF1D20C  FP = 7FF1D1CC  SP = 7FF1D248  PC = 000147D5
        PSL= 03C00008

  SANTIAGO     job terminated at 27-FEB-1989 09:16:50.26

302.5Here's the UWM man page from a PMAXYGDRSL::SANTIAGODrinking deeply of the Pierian springMon Feb 27 1989 12:35897


                                                          uwm(1X)



NAME
     uwm - X Window System window manager

SYNTAX
     uwm [ options ]
           -------

DESCRIPTION
     The uwm command provides a window manager client application
     that takes advantage of a graphical display and mouse.

     When invoked, uwm traces a predefined search path for any
     uwm startup files. If start up files exist in any of the
     specified locations, uwm adds the specifications to its
     built-in default specifications. Files in the uwm search
     path are:
      /usr/lib/X11/uwm/system.uwmrc
      $HOME/.uwmrc
     -f filename

     As it reads in items contained in these startup files, uwm
     uses the last definition it encounters for each item, when
     the defined values for that item differ.

     When uwm finishes processing all startup files, it emits a
     beep from the keyboard.

OPTIONS
     -f filename
        --------
               Specifies an alternate file as a uwm startup file.

     -d display
        -------
               Specifies the server to be used.

MENUS
     By default, when it starts up, uwm provides Window Opera-
     tions and Extended Window Operations menus.  To display the
     Window Operations menu (labeled WINDOW OPS), press and hold
     down both the Compose Character key and the left mouse but-
     ton.  To display the Extended Window Operations menu
     (labeled EXTENDED WINDOW OPS), press and hold down both the
     Compose Character key and the middle mouse button.

     Commands in these menus are:

     Iconify             Specifies that the selected window be
                         changed to a small graphical representa-
                         tion (icon).

     DeIconify           Specifies that an icon be changed back
                         to its window at its original location
                         and size.




                                                                1






uwm(1X)



     Move                Specifies that the selected window be
                         moved to a new default screen location.

     Resize              Specifies that the size of the selected
                         window be changed.  For more informa-
                         tion, see the f.resize function.

     Lower               Specifies that the selected window be
                         moved to the bottom of the window stack.

     Raise               Specifies that the selected window be
                         moved to the top of the window stack.

     Create Window       Specifies that the xterm command be exe-
                         cuted to create a terminal emulation
                         window.

     Iconify at New Position
                         Specifies that the selected window be
                         changed to or from an icon at a position
                         indicated with the mouse pointer.

     Focus Keyboard on Window
                         Specifies that all keyboard input be
                         focused into the selected window.  For
                         more information, see the f.focus func-
                         tion.

     Freeze All Windows  Specifies that the window server is to
                         buffer any window input and output and
                         dedicate its resources to other process-
                         ing.  For more information, see the
                         f.pause function.

     Unfreeze All Windows
                         Specifies that the window server is to
                         unfreeze all windows and update each
                         window with any output that was buffered
                         while it was frozen.  For more informa-
                         tion, see the f.continue function.

     Circulate Windows Up
                         Specifies that the last window be raised
                         to the top of the window stack.

     Circulate Windows Down
                         Specifies that the first window be
                         lowered to the bottom of the window
                         stack.

RESTRICTIONS




2






                                                          uwm(1X)



     The color specifications have no effect on monochrome
     displays.

STARTUP FILE SPECIFICATIONS
     The startup information used to establish your uwm environ-
     ment contains three specification groupings:

     Variables Modify how uwm executes a specified action.

     Functions Assign the action that is executed when a mouse
               button or character key is pressed, or when the
               pointer is moved to a specified screen location.

     Menus     Define each menu that you can display and from
               which you can select defined items.

     To use only the settings defined in a single startup file,
     include the variables resetbindings, resetmenus, and reset-
     variables at the top of that specific file.

     The following sample startup file shows the default window
     manager options:

          #Global variables
          #
          resetbindings; resetvariables; resetmenus
          autoselect
          delta = 25
          freeze
          grid
          hiconpad = 5
          hmenupad = 6
          iconfont = oldeng
          menufont = timrom12b
          resizefont = 9x15
          viconpad = 5
          vmenupad = 3
          volume = 7
          #
          #Mouse button/key maps
          #
          #FUNCTION  KEYS  CONTEXT  BUTTON  MENU (if any)
          #========  ====  =======  ======  =============
          f.menu = meta :     :left down      :"WINDOW OPS"
          f.menu = meta :     :middle down    :"EXTENDED WINDOW OPS"
          f.move = meta : w|i :right down
          f.circleup = meta: root: right down
          #
          #Menu specifications
          #
          menu = "WINDOW OPS"{
          "(De)Iconify":     f.iconify



                                                                3






uwm(1X)



          Move:              f.move
          Resize:            f.resize
          Lower:             f.lower
          Raise:             f.raise
          }
          menu = "EXTENDED WINDOW OPS" {
          Create Window:          !"dxterm &"
          Iconify at New Position:   f.lowericonify
          Focus Keyboard on Window:  f.focus
          Freeze All Windows:        f.pause
          Unfreeze All Windows:      f.continue
          Circulate Windows Up:      f.circleup
          Circulate Windows Down:    f.circledown
          }


VARIABLE DEFINITIONS
     Variables are typically entered first, at the top of the
     startup file.  Because they cause any values listed before
     them to be discarded, resetbindings, resetmenus, and reset-
     variables normally are placed at the start of the file.  You
     can specify the following variables in the startup file:

     autoselect/noautoselect  The autoselect variable specifies
                              that uwm is to place the mouse
                              pointer on the first menu item when
                              a menu is initially displayed.  The
                              noautoselect variable specifies
                              that uwm is to place the mouse
                              pointer on the menu header (title).
                              The default is noautoselect.

     delta=n                  The delta variable specifies that
           -
                              the mouse pointer must be moved n
                                                              -
                              screen pixels before uwm invokes
                              those functions that subsequently
                              are defined with delta mouse
                              action.  The default is 1.

     freeze/nofreeze          The freeze variable specifies that
                              uwm is to freeze the screen (not
                              allow screen updates) and lock all
                              other client applications out of
                              the server while executing certain
                              functions, for example, f.move or
                              f.resize.  In addition, the freeze
                              variable prevents the window grid
                              or window box from flickering.  The
                              nofreeze variable specifies that
                              uwm is to allow screen updates
                              while executing all functions.  The
                              default is freeze.



4






                                                          uwm(1X)



     grid/nogrid              The grid variable specifies that
                              uwm is to display a resize or move
                              window grid when invoking the
                              f.resize and f.move functions.  The
                              nogrid variable specifies that uwm
                              is to display a window box (out-
                              line) in place of the grid.  The
                              default is grid.

     hiconpad=n               The hiconpad variable specifies
              -
                              that uwm is to pad the width of a
                              text icon's sides with n pixels.
                                                     -
                              The default is 5 pixels.

     hmenupad=n               The hmenupad variable specifies
              -
                              that uwm is to pad the width of a
                              menu's sides with n pixels.  The
                                                -
                              default is 5 pixels.

     iconfont=font            The iconfont variable specifies
              ----
                              that uwm is to use the indicated
                              text font for those icons that it
                              creates.  See xlsfonts(1X) for font
                              names for a given server. The
                              /usr/lib/Xfont directory contains
                              all the available fonts.  The
                              default is 6x10.

     maxcolors=n              The maxcolors variable specifies
               -
                              that uwm is to use a maximum of n
                                                              -
                              colors at any one time.  If max-
                              colors is specified and if the
                              indicated number of colors is
                              exceeded, uwm uses the colors set
                              for the root window (screen back-
                              ground).  If maxcolors is not
                              specified, however, uwm uses as
                              many colors as it can.  The default
                              is that it is unspecified.  Max-
                              colors counts colors as they are
                              included in the file.

     normali/nonormali        The normali variable specifies that
                              uwm is to let an icon only be
                              placed entirely on the screen when
                              invoking the f.newiconify function.
                              The nonormali variable specifies
                              that uwm is to let an icon be
                              placed partially off-screen when
                              invoking the f.newiconify function.
                              The default is normali.




                                                                5






uwm(1X)



     normalw/nonormalw        The normalw variable specifies that
                              uwm is to let a window only be
                              placed entirely on the screen when
                              invoking the f.newiconify function.
                              The nonormalw variable specifies
                              that uwm is to let a window be
                              placed partially off-screen when
                              invoking the f.newiconify function.
                              The default is normalw.

     push=n                   The push variable specifies the
          -
                              distance that uwm is to use when
                              invoking the f.pushup, f.pushdown,
                              f.pushright, and f.pushleft func-
                              tions.  The default is 5.

     pushabsolute/pushrelative
                              The pushabsolute variable specifies
                              that uwm is to use pixel as the
                              unit of measure for the push vari-
                              able.  The pushrelative variable
                              specifies that uwm is to use as the
                              unit of measure 1/nth of the window
                                                -
                              size, where n is set by the push
                                          -
                              variable.  For example, if the
                              pushrelative variable is listed and
                              if the push variable is specified
                              as 2, uwm moves the window one half
                              (1/2) its width when invoking the
                              f.pushleft function.  The default
                              is pushrelative.

     resetbindings            The resetbindings variable speci-
                              fies that uwm is to reset the key,
                              mouse, and context bindings to
                              those subsequently specified in the
                              current startup file.

     resetmenus               The resetmenus variable specifies
                              that uwm is to reset the menu
                              definitions to those subsequently
                              specified in the current startup
                              file.

     resetvariables           The resetvariables variable speci-
                              fies that uwm is to reset the vari-
                              ables to those subsequently speci-
                              fied in the current startup file.

     resizefont=font          The resizefont variable specifies
                ----
                              that uwm is to use the specified
                              font for the window size display



6






                                                          uwm(1X)



                              when invoking the f.resize func-
                              tion.  See the /usr/lib/Xfont
                              directory for a list of fonts.  The
                              default is 6x10.

     reverse/noreverse        Specifies that uwm interchange the
                              foreground and background colors
                              when default colors are used for
                              window manager windows and icons.
                              The default is reverse.

     viconpad=n               The viconpad variable specifies
              -
                              that uwm is to pad n pixels above
                                                 -
                              and below an icon name.  The
                              default is 5.

     vmenupad=n               The vmenupad variable specifies
              -
                              that uwm is to pad n pixels above
                                                 -
                              and below a menu name and each menu
                              item.  The default is 5.

     volume=n                 The volume variable specifies that
            -
                              uwm is to set the keyboard bell
                              volume to the indicated intensity
                              (n) when invoking the f.beep func-
                               -
                              tion.  The intensity can be 0
                              (softest) through 7 (loudest).  The
                              default is 4.

     zap/nozap                The zap variable specifies that uwm
                              is to display ghost lines when
                              invoking the f.move or f.resize
                              functions.  The nozap variable
                              specifies that uwm is not to
                              display these ghost lines.  The
                              default is nozap.

FUNCTION DEFINITIONS
     Each function specification has the following format:

     function=[control key(s)]:[context]:mouse events:"menu name"
     --------  ------- --- -    -------  ----- ------  ---- ----

     Function and mouse events are required input. The menu name
     is required only with the f.menu function definition.

Functions
     f.beep              Emits a beep from the keyboard.  Loud-
                         ness is determined by the volume vari-
                         able.

     f.circledown        Lowers the topmost window to the bottom
                         of the window stack.



                                                                7






uwm(1X)



     f.circleup          Raises the bottommost window to the top
                         of the window stack.

     f.continue          Unfreezes all windows, that is, allows
                         them to be updated.  You should always
                         use this funciton in conjunction with
                         f.pause.

     f.exit              Exits the current uwm session.

     f.focus             Directs all keyboard input to the speci-
                         fied window.  To reset the focus to fol-
                         low the mouse cursor, invoke the f.focus
                         function from the root window.  This
                         function takes a window argument.

     f.iconify           Iconifies a window or deiconifies an
                         icon.  This function takes a window
                         argument.

     f.lower             Lowers the specified window to the bot-
                         tom of the window stack.  This function
                         takes a window argument.

     f.menu              Displays the specified, defined pop-up
                         menu.  This function takes a window
                         argument.  Enclose the menu name in
                         quotes if it contains blank characters
                         or parentheses.

                              f.menu=[control key(s)]:[context]:mouse events:"menu name"
                                      ------- --- -    -------  ----- ------  ---- ----


     f.move              Moves the specified window to a new
                         default screen location.  This function
                         takes a window argument.

     f.moveopaque        Moves the specified window with the
                         mouse pointer, instead of first moving
                         the window grid and then moving the win-
                         dow.  This function takes a window argu-
                         ment.

     f.newiconify        Changes a window to an icon and posi-
                         tions it at the specified screen loca-
                         tion.  This function takes a window
                         argument.

     f.pause             Freezes all windows so they cannot be
                         updated.  You should always use this
                         function in conjunction with f.continue.
                         This function takes a window argument.



8






                                                          uwm(1X)



     f.pushdown          Moves a window down the amount specified
                         by the push variable.  This function
                         takes a window argument.

     f.pushleft          Moves a window to the left the amount
                         specified by the push variable.  This
                         function takes a window argument.

     f.pushright         Moves a window to the right the amount
                         specified by the push variable.  This
                         function takes a window argument.

     f.pushup            Moves a window up the amount specified
                         by the push variable.  This function
                         takes a window argument.

     f.raise             Raises the specified window to the top
                         of the window stack.  This function
                         takes a window argument.

     f.refresh           Updates the entire screen by sending
                         exposure events to the window server
                         clients for all unobscured or partially
                         obscured windows.  The windows will not
                         refresh correctly if these exposure
                         events are not handled properly.

     f.resize            Resizes the specified window.  Some
                         clients, notably editors, may react
                         unpredictably if you resize the window
                         while the client is running.  This func-
                         tion takes a window argument.

     f.restart           Restarts uwm and causes it to reread all
                         the uwm startup files and initialize
                         variables.

     For those functions that take a window argument, select the
     window or icon that is to be affected after you have
     selected the function from a menu.  To select the window or
     icon, place the mouse pointer in the window or icon and
     click the mouse button that was used to display the menu.

Control Keys
     By default, the window manager uses Compose Character as its
     control key. However, you can specify any of the following
     control keys (their abbreviations are in parentheses):
     ctrl (c)

     lock (l)





                                                                9






uwm(1X)



     compose character (m)

     shift (s)

     You must specify control keys in lowercase.

     You can bind one, two, or no control keys to a function. Use
     the vertical bar (|) character to combine control keys.

     Specifying a use for the shift key alone is not recommended,
     because client applications other than the window manager
     use the shift as a control key.  If you bind the shift key
     to a window manager function, you cannot use other client
     applications that require this key.

Contexts
     The context refers to the screen location of the cursor when
     a command is given.  When you include a context entry in a
     binding, the cursor must be in that context for the function
     to be invoked.  The window manager recognizes the following
     four contexts (abbreviations in parentheses):
     icon (i)

     window (w)

     root

     null

     The root context refers to the root (background) window.  A
     null context is indicated when the context field is left
     blank and allows a function to be invoked from any screen
     location.  To combine contexts, use the vertical bar (|)
     character.

Mouse Buttons
     You can specify when an action is to occur based on how you
     use the mouse.  You can specify the following mouse buttons
     (their abbreviations are in parentheses):
     left (l)

     middle (m)

     right (r)

     You must specify mouse buttons in lowercase.

     You can specify the following mouse actions:

     down      The action is invoked when you press the button.

     up        The action is invoked when you release the button.



10






                                                          uwm(1X)



     delta     The action is invoked when you press a mouse but-
               ton and move the pointer the number of pixels
               specified by the delta variable.  You can move the
               mouse in any direction to satisfy the delta
               requirement.

     During an operation, pressing a second mouse button before
     releasing the first aborts the operation.

MENU DEFINITIONS
     After binding a set of function keys and a menu name to
     f.menu, you must use the following syntax to define the menu
     to be invoked:

     menu = "menu name" {
             ---- ----
     "item name" : "action"
      ---- ----     ------
            .
            .
            .
     }

     Enter the menu name exactly the way it is entered with the
     f.menu function, or the window manager will not recognize
     the link. You cannot scroll within menus. Any menu entry
     that contains quotation marks, special characters,
     parentheses, tabs, or strings of blanks must be enclosed in
     double quotation marks.  Follow the item name by a colon
     (:).

Menu Actions
     You can specify the following menu actions:

     Function                 The specified function can be any
                              window manager function, for exam-
                              ple, f.move or f.iconify.

     Shell command            The specified shell command must
                              begin with an exclamation point (!)
                              and must run in the background. You
                              cannot include a new-line character
                              within a shell command.

     Text string              The specified text string is placed
                              in the window server's cut buffer.
                              Strings with a new-line character
                              appended must begin with a circum-
                              flex(^), which is stripped during
                              the copy operation. Strings without
                              a new-line character appended must
                              begin with the vertical bar charac-
                              ter (|), which is stripped during
                              the copy operation.



                                                               11






uwm(1X)



Color Menus
     Use the following syntax to add color to menus:

     menu = menu name (color1:color2:color3:color4) {
            ---- ----  ------ ------ ------ ------
     item name: (color5:color6): action
     ---- ----   ------ ------   ------
     item name: (color5:color6): action
     ---- ----   ------ ------   ------
             .
             .
             .
     }

     color1    Specifies the foreground color (text) of the menu
     ------
               header.

     color2    Specifies the background color of the menu header.
     ------

     color3    Specifies the foreground color for menu highlight-
     ------
               ing.  This is the horizontal band of color that
               moves with the cursor within the menu.

     color4    Specifies the background color for menu highlight-
     ------
               ing.

     color5    Specifies the foreground color (text) for a menu
     ------
               item.

     color6    Specifies the background color for a menu item.
     ------

Color Defaults
     The defaults for colors are the colors of the root window
     under any of the following conditions:

     o    If you run out of color map entries, either before or
          during an invocation of uwm.

     o    If you specify a foreground or background color that
          does not exist in the RGB color database
          (/usr/lib/X11/rgb.txt); both the foreground and back-
          ground colors default to the root window color.

     o    If you omit a foreground or background color; both the
          foreground and background colors default.

     o    If you specify more colors than the number specified by
          the maxcolors variable.
              ---------

     o    If you specify no colors in the startup file.

FILES
     /usr/lib/X11/rgb.txt
     /usr/lib/X11/uwm/default.uwmrc
     /usr/lib/X11/uwm/system.uwmrc



12






                                                          uwm(1X)



     $HOME/.uwmrc

SEE ALSO
     X(1X), dxterm(1X), xset(1X), xlsfonts(1X), xterm(1X), Guide
                                                           -----
     to the uwm Window Manager
     -- --- --- ------ -------


















































                                                               13




302.6I had to hunt to find itPRNSYS::LOMICKAJJeff LomickaMon Feb 27 1989 16:363
I noticed today that:       PCX$WMGR.EXE  
is actually called	    PCX$WINMGR.EXE

302.7<What about UWMRC>RICKS::MILLSMon Feb 27 1989 18:1010
    RE .4
    
    I have the same problem with getting UWMRC to work
    When I run PCX$UWM interactively it does find PCX$UWM.UWMRC
    But when I use the DECW$WINMGREXE logical PCX$UWM is running
    but it does not find PCX$UWM.UWMRC. I'm almost ready to startup
    it up as in note .0. Also I found a bug in my PCX$UWM.UWMRC
    by running it interactively.
    

302.8Version 2?STAR::BRANDENBERGIntelligence - just a good party trick?Mon Mar 20 1989 12:346
    
    Any chance of an updated VMS version with the iconify and
    run-as-detached problems fixed?  I'd like to use this for awhile.
    
    						monty

302.9Love to try it but beep beep...MCNALY::MILLERBush For President...Kate Bush!Tue Mar 28 1989 16:447
I can't seem to get PCX$UWM to do anything but beep at me when it
comes up.

What's the trick?

                 == ken miller ==

302.10it's there!STAR::BRANDENBERGIntelligence - just a good party trick?Tue Mar 28 1989 16:5310
    
    It beeps when it's ready (it doesn't decorate windows).  Now try
    various combinations of the modifier keys (control, shift, and
    meta) with the mouse button keys both inside and outside windows.
    If you run/det uwm, you get a default key binding, if you spawned
    it, you'll get the binding specified in the .uwmrc file in your
    sys$login directory.
    
    					monty

302.11Silly Me!MCNALY::MILLERBush For President...Kate Bush!Tue Mar 28 1989 17:0911
I knew there wasn't supposed to be an icon box, but I figured there'd be
some kind of window dressing.  I was also spawning without any 
.uwmrc file in sys$login, so I don't know what bindings I got.

All's well now, thanks!  Great Stuff!  And small too (800 pages vs. 1900 pages)!


Regards,

              == ken miller ==

302.12MU::PORTERwaiting for BardotTue Mar 28 1989 21:455
    re .-2
    
    Is "meta" sometimes spelled as "alt" or "compose character" ?
    

302.13Depends upon the dialectAIRPRT::GRIERmjg&#039;s holistic computing agencyTue Mar 28 1989 22:054
   It may also be spelled "Ctrl", and "Shift".

					-mjg

302.14In this case it's Compose...MCNALY::MILLERBush For President...Kate Bush!Wed Mar 29 1989 15:336
At least for me on the old style LK201 keyboard.

Regards,

             == ken miller ==

302.15Is there a more stable version?VINO::WITHROWRobert WithrowWed Mar 29 1989 15:384
I have tried it out, and I like it, but... it seems to croak alot.
For example, it croaks when I try to iconize gnu emacs..  Is there a
more stable version of this around?

302.16Seems stable to me with one gotcha...MCNALY::MILLERBush For President...Kate Bush!Wed Mar 29 1989 16:0511
I just put a note in the PC-DECwindows conference about this, and it's
probably burning you with GNU EMACS:

== Don't try to iconify anything that has a default pixmap for the icon! ==

Haven't run into any other bugaboos and customizing is a blast!

Regards,

                 == ken miller ==

302.17Yup.. That's it!VINO::WITHROWRobert WithrowWed Mar 29 1989 18:108
> I just put a note in the PC-DECwindows conference about this, and it's
> probably burning you with GNU EMACS:
> 
> == Don't try to iconify anything that has a default pixmap for the icon! ==

That's EXACTLY it.  Thanks!  (Maybe Ill modify emacs to have some sort
of neat pixmap for it's icon!)

302.18How to install on a per-user basis?VINO::WITHROWRobert WithrowWed Mar 29 1989 22:336
> Haven't run into any other bugaboos and customizing is a blast!

Have you found a way to start it automatically from you decw$login,
rathern that doing it for the entire system?  I need to swap it on
a per-user basis...

302.19Oops? Workstations aren't *all* single user?MRFLEX::MILLERBush For President...Kate Bush!Thu Mar 30 1989 00:4518
    re:          <<< Note 302.18 by VINO::WITHROW "Robert Withrow" >>>
                    -< How to install on a per-user basis? >-
    
       Hmmm...I just def/exec/table=decw$logical_names decw$winmgrexe
    sys$system:pcx$uwm.exe before starting DECwindows, but I suppose that
    *would* cause anyone who logged into my workstation to have UWM.
    
    Have you tried shooting your winmgr in decw$login.com, and then
    spawning UWM?  It'd be a little tricky finding the process name since
    it increments for some reason, but a little DCL magic would do it.
    
    You'd definitely have to stop the DECW$WINMGR process because he's
    created long before decw$login gets executed.
    
    Good luck!
    
    	 	== ken miller ==

302.20I tried it but couldn't get it to work...VINO::WITHROWRobert WithrowThu Mar 30 1989 10:4212
> Have you tried shooting your winmgr in decw$login.com, and then
> spawning UWM?  It'd be a little tricky finding the process name since
> it increments for some reason, but a little DCL magic would do it.

Yes, I tried that.  It caused the server to have apoplectic fits.  It
looks like the server reset about 6 times, and the I was returned back
to decw$loginout.  It was fun to watch:  The silly icon box popped up, and
then it disappeared, and then the screen started flashing, and then
the login screen re-appeared.

Any other ideas?

302.21Starting PCM from DECW$Login...GOFER::HARLEYAt home, you can scratch where it itchesThu Mar 30 1989 11:3046
I sort of got it to work like this...

$
$ ! This command file will initialize my user environment.
$
$ ! Set my process name...
$
$ Set Process/Name="Session Manager"
$
$ ! Play with the PC Window Manager
$
$ Ctx = F$Context("Process",Next, "NodeName", F$GetSYI("NodeName"), "EQL")
$Kill_WM_Loop:
$ Pid = F$Pid(Next)
$ If Pid .eqs. ""
$  Then
$    Goto No_More_WM
$  Else
$    Proc = F$GetJPI(Pid, "PrcNam")
$    If F$Extract(0, 8, Proc) .eqs. "DECW$WM_"
$     Then
$	Stop/ID='Pid'
$	Wait 00:00:10
$     Else
$	Goto Kill_WM_Loop
$    EndIf
$ EndIf
$
$No_More_WM:
$ Spawn/NoWait/Input=NL:/Process="DECW$UWM"/Output=UWM.Log MCR PCX$UWM
$ Wait 00:00:10
$
$Skip_PCX:
$ Spawn/NoWait/Input=NL:/Process="DECW$Calendar" MCR DECW$Calendar
$
$ ! Make sure that Mail knows who my friends are...
$
$ @<.Start>Mail_Addr
$ Spawn/NoWait/Input=NL:/Process="DECW$Mail"/Out=Sys$Login:DWmail.Log -
	@<.DWmail>DWmail
$

The $ Waits seem to be the key in getting this to work...

/Harley

302.22It almost works..... but not quiteVINO::WITHROWRobert WithrowThu Mar 30 1989 15:2618
I modified your procedure to work on V5.1 SDC, but it doesn't work on
my system for some reason.  The window manager croaks with error #02dba002
(an XIO error), and then later the session manager croaks with error
#02db821c.  I tried lots of things but no joy.  Extracted logs follow:

from decw$uwm.log (my name)

XIO: non-translatable vms error code: 0x2DBA002, vms message:
%decw-e-cnxabort, connection aborted
%XLIB-F-IOERROR, xlib io error

from decw$sm.log

$run sys$system:decw$session
Session Error: %NONAME-F-NOMSG, Message number 02DB821C

To the developers:  Is there no better way to run a new window manager?

302.23trivial on UltrixHIT::GLASERSteve Glaser DTN 237-2586 SHR1-3/E29Fri Mar 31 1989 14:4310
    On Ultrix you can just include
    
	sm.windowManagerName:	uwm
    
    in the appropriate .Xdefaults file to get the proper wondow manager.
    
    This is easily specified on a per user basis.
    
    Steveg

302.24I see some of the problems....VINO::WITHROWRobert WithrowSat Apr 01 1989 12:1126
RE: .-1 GRRRRRRRRR.  Go ahead..... Rub it in!!!!!! ;-)

From what I can tell the sequence goes something like this:

  1) DECW$LOGINOUT Validates a password/username pair
  2) DECW$LOGINOUT Starts a process , perhaps by using loginout, or
     perhaps by using itself in a way similar to loginout.
  3) A windowmanager is started by some magic means, using the logical
     DECW$WINMGREXE
  4) This new process reads commands from DECW$LOGIN.COM
  5) After this file ends, the process start reading commands from
     DECW$STARTSM.COM.  This starts the session manager, and the process
     waits until the session manager exits.
  6) BRB 1

The problem is that there is no (normal) user modifable way that I can
see to change step 3.  No user specified commands are executed until
AFTER the window manager is started.  An easy solution to this is not
clear to me.  If DECW$LOGIN were to run BEFORE the WM was started, you
would see windows popping up and then changing when the WM started.

Perhaps the right thing is for the SM to be started first, but to refrain
from making windows visible until a WM is running, perhaps by using
resources as in .-1.  I bet that that is unpalatable to the DECwindows
folks though....

302.25I think you're right...MCNALY::MILLERBush For President...Kate Bush!Sat Apr 01 1989 13:4141
I've been exploring this from a different angle, trying to solve a different
problem, but came to the same conclusion regarding the sequence of
steps.

I've fallen instantly *in love* with the new OSF Motif and have gone
nuts customizing the *root menus*.  It suddenly occurred to me that I
can easily do away with the session mgr., which has been a constant
sore spot with me in terms of paging.  I've provided a customized non-
session mgr./OSF WinMgr. by doing the following:

1) submit a batch job from a terminal/DECterm, or LAVc connection
      which:
       a.  Stops DECW$SERVER_0
        b.  Waits a minute.
        c.  Starts DECW$STARTUP with just server, libs
        d. Waits another minute.
        e. Runs my DECW$LOGIN.COM which "reloads" my Xdefaults
            (via RELOAD.C) and kicks off a CHILD DECterm.

2) Invoke OSF WinMgr from DECterm using a symbol that
      does a "SPAWN/NOWAIT/INP=NL: MCR HPWM".  I've had
      problems getting OSF Motif to come up as part of the batch file
      above, and it's a very *minor* inconvenience since I use a 4 char.
      symbol to kick it off.

3) Use "root menus" to bring up UTOX for printscreen, Xlock for Pause,
      CHILD for DECterms, "MCR VUE$MASTER for FileView, etc.  I'd
     imagine that if I were concerned about setting it back to it's original
     state, that I'd define a "root menu" option for QUIT to fire off a batch
     job similar to the one above only which would do the default
     DECW$STARTUP.

I know this isn't your intention, but perhaps a similar approach might
prove successful (i.e. shoot the server and bring him up the way you want).

Hope some of this helps!

Regards,

                == ken miller ==

302.26WSINT::MCLEMANJeff McLemanSun Apr 02 1989 17:3837
The following is what we do on our software cluster to get the HPWM to run.
    Yes, it doesn't look all that clean visually, but hey, it works.
    
    						Jeff
    
    
    
$ this_node = f$edit(f$getsyi("SCSNODE"),"TRIM")
$ spawn/nowait/process="''this_node'$CALENDAR" run sys$system:decw$calendar
$ spawn/nowait/process="''this_node'$CARDFILER" run sys$system:decw$cardfiler
$ spawn/nowait/process="''this_node'$BANNER" run sys$system:decw$banner
$!
$ purge decw$sm.log
$ purge hpwm.log
$ wait ::05
$ mgr_num = f$extract(3,1,f$trnlnm("DECW$DISPLAY"))  ! get the WS number
$Kill_Loop:
$ Pid = F$Pid(Next)
$ If Pid .eqs. ""
$  Then
$    Goto end_loop
$  Else
$    Proc = F$GetJPI(Pid, "PrcNam")
$    If F$Extract(0, 8, Proc) .eqs. "DECW$WM_"
$     Then
$	Stop/ID='Pid'
$	Wait 00:00:10
$     Else
$	Goto Kill_Loop
$    EndIf
$ EndIf
$
$END_LOOP:
$ Spawn/NoWait/Input=NL:/Process="DECW$WM_''mgr_num'"/Output=sys$login:HPWM.Log MCR HPWM
$exit
                                                    

302.27Good luck from DECW$WINMGREXEAIRPRT::GRIERmjg&#039;s holistic computing agencyTue Apr 04 1989 11:4528
   I've had very good luck executing it via the DECW$WINMGREXE logical name
in the DECW$LOGICAL_NAMES table.  It doesn't appear to work correctly when
in the LNM$SYSTEM table tho'.  (I was going to define it there for my WS in
the SYSTARTUP_V5.COM so I wouldn't have to customize DECW$STARTAPPS.)

   Does anyone have a complete list of resources for the manager?  Maybe the
DECW$XDEFAULTS supplied does give me enough clues, but (for instance), I'd
like to get rid of the shading on the icon names, to just have a solid
background.

   This window manager is great.  I've tried the other ones posted, and didn't
care for them much, but I prefer this greatly to the DECwindows WM.  The
exception is bugs.  Would someone (with sources!) like to receive bug reports?
I've several reproducible glitches (especially in relation to the caps lock
key state), and some times where it went compute-bound, expandind its virtual
size until it ran out of VM.

					-mjg

p.s.

   Could someone explain the context from which the window manager runs when
I execute it via the DECW$WINMGREXE logical name?  It doesn't seem to want to
find the hpwm.rc file in my SYS$LOGIN:, but when I changed DECW$XDEFAULTS.DAT
to specify the location as "/sys$library/hpwm.rc" and put it there, it worked
correctly.  I'd prefer to have it in my SYS$LOGIN: tho', and I didn't want to
hard-code the device/directory specification.

302.28.rc, etcKALKIN::BUTENHOFBetter Living Through Concurrency!Tue Apr 04 1989 13:1510
.27: Yeah, I'd also like to see a full list of HPWM resources (with the legal
values... particularly for the keyword values).

When you change DECW$WINMGREXE to get HPWM running, it's created as a detached
process, with no SYS$LOGIN:.  If you want to use a .rc file, you'll need to
fully qualify the device and directory spec.  Which is why my earlier example
for .configFile used "dua0:[butenhof]hpwm.rc".

	/dave

302.29UFP::MURPHYThe SUN just set!Tue Apr 04 1989 14:0017
    As I'm the keeper of the sources, I'll listen to bug reports by mail...
    but this is one of several midnight projects on the stack, so I might
    not be very quick to respond. Additionally, I don't want to expend too
    much effort on this version of the WM as I'm sure that OSF will be
    releasing an update fairly soon.
    
    re: several
    Yes, I know it's different. I like it for the customization. At least
    there's a list of the resources so you can play with changing the
    appearance - no such list exists for the DECwindows window manager
    (unless it's documented in the Ultrix doc set). I also like
    point-to-focus rather than click-to-focus - and this WM gives me that
    without losing quick-copy.
    
    It's buggy, I know. But it's fun to play with (see the title of .0)
    	-Rick

302.30Hey, I found a new bug artifact!!!KALKIN::BUTENHOFBetter Living Through Concurrency!Tue Apr 18 1989 10:1432
(ain't I lucky?  :-) )

I had a Mail:Create window open, happily replying to some mail, when Jerry
Harrow bopped in to ask if I was eating disk on the RTL cluster.  Just to be
sure, I expanded my cluster DECterm window.  OK, I was safe: it was a good
little DECterm, just sitting there at the DCL prompt.

So, I shrunk it back to an icon.  Er, ah... well, at least I tried to.  The
DECterm stayed there.  The Mail:Create window iconized, instead.  So I tried
again.  And again.  The DECterm refused to iconize.  When I tried (either with
my accelerator or with the "minimize" icon in the banner), the DECterm loses
focus AND THE MAIL:CREATE ICON MOVES ONE GRID TO THE LEFT, LEAVING "INVISIBLE
ICONS" BEHIND IT!  When it hits the left edge of the screen, it moves back to
the right, and up one line.  It's kinda fun, y'know?  That's why I love the
HPWM so much... it's not DULL like that boring old DECwindows WM!  :-)

Anyway, the Mail:Create window expands and shrinks just fine, but I can't make
it go way (when I try to QUIT, Mail complains that it's modified, and do I
really want to quit... yes or no, it just sits there).  And of course I can't
make the DECterm shrink.  Of course, HPWM eventually solved my dilemna by
crashing itself (I knew it'd get around to that sooner or later), so now I can
log in a new session and fix things up.

So, lessee... we've got "greedy icons", "invisible icons", and now...
TRAVELLING ICONS!  Wheeee!!!

	/dave

(oh yeah, by the way: I'm not being satirical here; for reasons I'm not sure I
fully comprehend, I really AM enjoying this!  I'd have a better handle on it if
this were Friday, but I don't think it is... :-) )

302.31STAR::MCLEMANJeff McLeman, VMS developmentThu May 24 1990 14:424
Is the PCX$UWM.EXE still around? The access point in the base note is
invalid.

jeff
302.32Try this version....CVG::PETTENGILLmulpThu May 31 1990 23:218
$ dir cvg""::sys$system:pcx$uwm

Directory CVG""::SYS$COMMON:[SYSEXE]

PCX$UWM.EXE;1           103  23-FEB-1989 14:58:01.00
PCX$UWM.UWMRC;1           3  23-FEB-1989 14:58:51.00

Total of 2 files, 106 blocks.
302.33STAR::MCLEMANJeff McLeman, VMS developmentFri Jun 01 1990 09:021
Thanks, I'll give it a whirl.