
BUILDING VTWM 5.4
=================

  - Unpack the distribution. You've likely done that already, no?

  - Determine if you have the XPM library installed:
      - The library is usually found in /usr/X11R6/lib, /usr/local/lib,
        or some such directory. It's usually called "libxpm.a".
      - The header file is usually found in /usr/X11R6/include,
        /usr/local/include, or some such directory. It's "xpm.h".

  - Determine if you have regular expressions ("RE"s) support:
      - On many systems, the routines are built into the standard
        C library. If not, the library might be in /usr/local/lib,
        /usr/lib, or some such directory, and would be called
        something like "libregex.a".
      - The header file is usually found in /usr/local/include,
        /usr/include, or some such directory. It's "regex.h".
      - Note that the routines must conform to the POSIX 1003.2
        specification. Older systems may have regex support that
        predates this POSIX spec, and will not suffice.

  - Determine if you have the rplay library installed:
      - The library is usually found in /usr/local/lib, /usr/lib,
        or some such directory. It's usually called "librplay.a".
      - The header file is usually found in /usr/local/include,
        /usr/include, or some such directory. It's "rplay.h".

  - Determine if your system supports internationalization (I18N):
      - On many systems, header files "locale.h" and "Xlocale.h"
        are found in /usr/include and /usr/X11R6/include/X11,
        respectively.

  - Determine if you have the m4 macro processor installed:
      - Issuing 'whence m4' or 'which m4' ought to do it.

  - Look over Imakefile, and edit to taste. If you use a VNC client, or
    Cygwin under MS-Windows, you may want to make changes as described
    further down in this file. Or particular interest to some people
    will be the installation path which can be changed by editing
    VTWMBINDIR. See also VTWMLIBDIR and VTWMMANDIR. This will allow
    installation to other than the system X11 directories where you don't
    have root access.

  - Issue 'xmkmf'. If that doesn't work (you'll know it), you'll have
    to copy Makefile.QNX to Makefile, and edit the latter to taste.

  - Issue 'make'. This shouldn't take very long at all; VTWM is small.
    Should the build break, check further down in this file. If it still
    breaks, ask a friend. If it _still_ breaks, you can write me.

  - The sysrc_add_apps.sh script in contrib/support/ may be of help in
    customizing the default system resource file. It automagically adds
    selected applications found on your system to system.vtwmrc. Issue
    'sh contrib/support/sysrc_add_apps.sh -h' for a brief help message.


INSTALLING VTWM 5.4
===================

1) Installation.
    If you haven't modified VTWMBINDIR, et al, to point to a non-system
    area in which you have write access, you will need to perform the
    following install steps as root.
  - If you trust whoever set up your build environment:
      - issue 'make install'.
    If you don't:
      - Issue 'make -n install' to see what it'll do, without actually
	doing it.
  - If you want (or have) to set it up manually:
      - Copy vtwm to /usr/X11R6/bin, or to wherever other X
	window managers and binaries are.
      - Copy system.vtwmrc to wherever it's spec'd in the
	Makefile (this path is built into the VTWM binary).
      - Copy vtwm.man to wherever other X window manager
	man pages are (usually /usr/X11R6/man/mann).

2) Configuration.
  - Set up user resource files:
      - Copy system.vtwmrc to your home directory as .vtwmrc, and edit
        it to suit your immediate needs (you'll be editing it a lot more,
        I'm sure).
      - If VTWM supports m4, you can copy the contrib/vtwmrc/ directory
        into your home directory as vtwm/ or some such. Then, create a
        symlink $(HOME)/.vtwmrc to one of the vtwmrc-*ish files in that
        subdirectory, or specify one of those files on VTWM's invocation
        (either will give you much more to work with).
      - The sysrc_add_apps.sh script in contrib/support/ may also be
        useful in customizing user resource files by playing with its
        command-line switches.

  - Edit the script that starts your current X window manager to start
    VTWM instead (mine is 'vtwm -d :0.0 -f vtwm/vtwmrc-MWMish -s -m -p'
    in $(HOME)/.xinitrc).

  - Exit X, and restart it.


BUILD HINTS
===========

  - If, during the build, you get complaints of an undefined "yylineno",
    uncomment the "NEED_YYLINENO_V" definition in Imakefile (or the
    Makefile) and try the build again. If it is still undefined, also
    remove the "extern" keyword from its declaration in gram.y. Likewise,
    if "yywrap" turns up as undefined, add a line "yywrap() {return(1)};"
    to lex.l. Finally, if "yylex" turns up undefined, it can be fixed by
    adding a line "#define YY_DECL int yylex YY_PROTO((void))" to lex.l.
    These are all expected to be in the lexer's skeleton file, but there
    are some without.

  - If, during the build, you get complaints of undefined data types and
    functions "FontSet" and "Xmb" whatall, it's because you've built VTWM
    with internationalization (I18N) support, and your system doesn't
    support it. Read the comments in Imakefile and/or Makefile.QNX.

  - If, during the build, you get complaints of undefined data types and
    functions "Xpm" whatall, it's because you've built VTWM with XPM image
    support, and either you don't have the XPM library available, or it's
    not a recent enough version (3.4h is the earliest I know of). Read the
    comments in Imakefile and/or Makefile.QNX.

  - If, during the build, you get complaints of an undefined data type
    "regex_t" or functions "reg" whatall, it's because you've built VTWM
    with regular expressions ("RE"s) support, and either you don't have
    regex support, or it's not POSIX 1003.2 compliant. Read the comments
    in Imakefile and/or Makefile.QNX.

  - If, during the build, you get complaints of an undefined data type
    "RPLAY" or functions "rplay" whatall, it's because you've built VTWM
    with sound support and you don't have the rplay library available.
    Read the comments in Imakefile and/or Makefile.QNX.

  - If, during the build, you get complaints of an unknown data type
    "Pixel", add "EXTRA_DEFINES=-DNEED_PIXEL_T" to the make command.

  - If you expected HTML or Postscript man pages on build completion,
    or VTWM doesn't fall back on system resource files on startup, read
    the comments in Imakefile and/or Makefile.QNX.

  - VNC users: If you regularly use a remote X desktop, you may want to
    add "EXTRA_DEFINES=-DORIGINAL_DRAWIT" to the make command. It seems
    that VTWM's diagonal resize/move lines are more expensive than TWM's
    horizontal and vertical lines. YMMV.

  - Windows users: VTWM is known to build and run under Cygwin with DLL
    version 1.3.2. The Makefile may need a line "vtwm: vtwm.exe" added
    beneath the "all:: vtwm" line for a successful build. The INSTALL
    file and the /usr/X11R6/lib/X11/twm directory may have to be "moved
    out of the way" for a successful installation.


RUNTIME HINTS
=============

  - Prior to version 5.4.7, key and button bindings were dependent on
    various "shift states". Version 5.4.7 can ignore these; check out
    the IgnoreModifiers variable.

  - As of version 5.4.7, all window moves and resizes initiated at the
    virtual desktop will end there (previous behavior was to leave the
    pointer at the window). Bind a function like
        Function "move-or-warp" { f.move f.deltastop f.warp }
    to a button and the desktop context with something like
        Button2 = : desktop : f.function "move-or-warp"
    to approximate previous behavior.

  - As of version 5.4.7, the raise that normally accompanies moves and
    resizes occurs at operation end, to preserve window stacking order
    on cancellation. Set the RaiseOnStart variable for previous behavior.
  
  - The SunkFocusHighlightWindow variable was depreciated in version
    5.4.7. Set the TitleHighlight argument of the Pixmaps variable to
    an appropriate built-in pixmap.

  - If, on startup, things are coming up weird (if at all!), check the
    resource file for m4 macros, and if found, see that VTWM is version
    5.4.6 or later, that it was built with m4 support, that "-m" is in
    the line that starts VTWM, and that m4 is in $(PATH).

  - The UseRealScreenBorder variable was depreciated in version 5.4.6.
    If the RealScreenBorderWidth variable is non-zero, why wouldn't you
    want to use it?

  - As of version 5.4.6, random zooms during deiconification won't occur
    unless the ZoomZoom variable is set.

  - If you use any of the 3D resources from versions before 5.4.5, you
    will find that they generate errors on startup. They no longer exist!
    See the man page or the CHANGELOG file for the new resources (look
    for the word "Bevel").

  - If you use a SqueezeTitle list from versions before 5.4.4, you may
    want to check the man page to see if the new enterpretation of the
    resource's list parameters fouls your setup.

  - See also the man page, and the SOUND and BUGS files in doc/.

