                                                                -*- text -*-
If you only need an information about all supported features skip to the
"Supported Features" and the following sections.

VMS users: ignore this file, and follow the instructions in vms/README
instead.

This file details only configuration options peculiar to fvwm.  Please
read the generic instructions in INSTALL first.


Important Note!
===============

The `configure' script keeps a cache of information it discovers, so
that subsequent invocations of `configure' will be faster.

However, if you update information on your system (such as install or
upgrade an optional library like Xpm, etc. [see below]) the cache may
contain outdated information; this can lead to confusing behavior during
subsequent `configure' invocations or builds.

If you're not familiar with how this works it might be safest to remove
the cache each time before running `configure'; you can either do a
simple:

  $ rm -f config.cache

Or you may feel more comfortable with a complete cleaning:

  $ make distclean


What gets installed, and where
==============================

* fvwm is installed into ${prefix}/bin
* a couple of utilities are also installed into ${prefix}/bin; this includes
  fvwm-config, fvwm-menu-*, fvwm-bug, fvwm-convert-*, fvwm-root, FvwmCommand
* all FvwmModule modules are installed into ${libexecdir}/fvwm/${VERSION}
* all manual pages are installed into ${mandir}/man1
* some configuration files are installed into ${datadir}/fvwm, for example,
  FvwmForm & FvwmScript configurations and others
* perl library is installed into ${datadir}/fvwm/perllib

where VERSION is the version string of fvwm, typically something like
"2.4.0".  No other files are installed.  There are sample fvwm/config
files which you may copy manually to ${datadir}/fvwm, see below.

Unless you used configure options,

* ${prefix}     is /usr/local
* ${bindir}     is ${prefix}/bin
* ${mandir}     is ${prefix}/man
* ${libexecdir} is ${prefix}/libexec
* ${datadir}    is ${prefix}/share
* ${sysconfdir} is ${prefix}/etc

Thus the default locations are: /usr/local/bin, /usr/local/man/man1,
/usr/local/libexec/fvwm/VERSION, and /usr/local/share/fvwm for the fvwm
executables, man pages, modules, and configuration files, respectively.

Note that by default, none of the executables are stripped when they're
installed.  If you'd like them to be, run `make install-strip' instead
of `make install'.  Note that due to a bug in the older versions of
autoconf/automake this may fail in some of the modules directories
trying to strip shell scripts.  We recommend that you run `make -k
install-strip', which will continue past the failures.


Configuration File
==================

Fvwm configures itself at runtime by reading one or more configuration
files.  The default locations of the config file are ~/.fvwm/config and
/usr/local/share/fvwm/config (if the user's file is not found).  The
.fvwm2rc file names used in the past are supported too.

Sample configuration files may be found in the sample.fvwmrc
directory.  To avoid clobbering the current configuration, no
configuration file is installed by default.  You must copy it manually
the first time fvwm is installed.  But this is fully optional, fvwm
can run without any configuration file and has an ability to install some
configurations into the user home directory (precisely, FVWM_USERDIR).

Other system-wide configuration files are located in /usr/local/share/fvwm
(also called FVWM_DATADIR) that can be used directly from the configuration
directory.  See the FvwmForm man page for some examples.

For users starting fvwm without a fvwm/config or fvwm/.fvwm2rc file,
there are built-in dialogs that can copy files from the configuration
directory into the users home directory to create the users startup
file.  See the fvwm man page under "INITIALIZATION".


Bug Reports
===========

One of the installed scripts is fvwm-bug that allows users to send bug
reports to either the local address or the developer address or both.
The local email address defaults to the installer login, probably root.
To override this default, set $FVWM_BUGADDR before running ./configure.

There is also a web based bug reporting system, see the Home Page.


CPP
===

One of fvwm's modules, FvwmCpp, requires a C preprocessor program.  The
configuration will look in various common places for cpp.  If one is not
found, FvwmCpp will still compile but you'll need to invoke it with the
-cpppath option to tell it where to find cpp.  FvwmCpp will exit with an
error message if no path to cpp is known.

You can tell configure what cpp to use by setting the FVWM_CPP
environment variable before invoking configure:

  $ FVWM_CPP=/my/special/cpp ./configure


Supported Features
==================

Fvwm has several compile time features that may be switched on and off
using ./configure. To query what your installed fvwm supports run one of:

  % fvwm-config --info
  % fvwm-config --supports

Please run './configure --help' to see a list of all option.
The sections below explain these options.

  Line shown by configure              Feature name  ./configure options
---------------------------------------------------------------------------
  With Asian bi-direct. text support?  bidi          --disable-bidi
  With Gettext Native Lang Support     gettext       --with-intl-*
  With GTK+ required for FvwmGtk?      gtk           --with-gtk-*
  With GDK image support in FvwmGtk?   gdk-imlib     --with-imlib-*
  With GNOME libs support in FvwmGtk?  gnome-libs    --with-gnome
  With PNG image support?              png           --with-png-*
  With ReadLine sup. in FvwmConsole?   readline      --with-readline-*
  With RPlay support in FvwmEvent?     rplay         --with-rpm-*
  With Shaped window support?          shape         --disable-shape
  With With Shared memory for XImage?  shm           --disable-shm
  With Session Management support?     sm            --disable-sm
  With Mouse strokes (gestures)?       stroke        --with-stroke-*
  With SVG image support?              rsvg          --disable-rsvg
  With Xcursor support?                xcursor       --disable-xcursor
  With Xinerama multi-head support?    xinerama      --disable-xinerama
  With Xft anti-alias font support?    xft           --enable-xft --with-xft-*
  With XPM image support?              xpm           --with-xpm-*
  With Xrender image support?          xrender       --disable-xrender
  Perl library directory:              perllib       --disable-perllib

None of these features are essential, but some are nice to have.
It is safe *not* to compile in the following features:
  bidi        (not needed if you don't plan to read Arabic and Hebrew)
  gnome-libs  (really not needed, used only in FvwmGtk for minor things)
  rplay       (really not needed, used only in FvwmEvent for internal sound)
  xinerama    (not needed if you or your users have only one monitor)


Optional libraries used by fvwm
===============================

Fvwm can optionally be compiled to use the following libraries:

	xpm         (XPM image format)
	png         (PNG image format)
	rsvg	    (SVG image format)
	rplay       (RPlay audio)
	readline    (Command line editing using readline)
	stroke      (Mouse strokes)
	intl        (Internationalization and localization using gettext)

By default, these are probed for, and used if found. If you want to use
any of them, install the library before configuring fvwm. It is possible
to explicitly tell configure to skip autoprobing of a given library and
disable it (see below).

Xpm allows the use of coloured icons.  See the Xpm web page at
http://www.inria.fr/koala/lehors/xpm.html for all the latest info and
links to source code.  You can also get the source code from
ftp://ftp.x.org/contrib/libraries/.  If you're having trouble building
with XPM even after reading this, try Question 2.4 in the fvwm FAQ.

Png allows to load coloured icons from files in PNG format. See the
libpng web page at http://www.libpng.org/pub/png/libpng.html for all the
latest info and links to source code. libpng is available as ANSI C source
code and requires the zlib library. The zlib package can be found at
http://www.gzip.org/zlib/

Librsvg allows rendering of SVG (scalable vector graphics) image files.
See the librsvg web page at http://librsvg.sourceforge.net/ for more
information and links to source code. Librsvg uses the Cairo library as
a rendering backend. Source code can be found at http://cairographics.org/

Rplay is used in one module (FvwmEvent) to play sounds without invoking
an external program.  This library appears to have been orphaned
in November, 1996.  The latest version is available at
http://rplay.doit.org/dist/.

Readline is used in one module (FvwmConsole) to allow fancy
command-line editing, a history buffer, etc.  It is GNU software, and
should be found on any GNU site, such as ftp://ftp.gnu.org/gnu/readline/.

To build with readline support, either termcap or ncurses library should
be found.  Use --with-termcap-library or --with-ncurses-library to specify
the path (directory or library file) to termcap or ncurses.  The first
valid library found is used.  It is possible to disable termcap or ncurses
autoprobing using --without-termcap-library or --without-ncurses-library.
Disabling both disables readline support, like --without-readline-library.

LibStroke allows interpretation by fvwm of mouse strokes (i.e., motions
of the mouse). For more informations see the  LibStroke web page at
http://www.etla.net/~willey/projects/libstroke/ and the fvwm man page.

Gettext is included in glibc, so it may be a part of your system.
Alternatively, there is GNU gettext package available at
http://www.gnu.org/software/gettext/.

If configure doesn't do the right thing, try one or more of the
following flags (examples assume library is named "foo"):

	--without-foo-library    to disable probing for libfoo
	--with-foo-library=FILE  to specify the library filename
	--with-foo-library=DIR   to specify directory containing libfoo
	--with-foo-includes=DIR  to specify include directory for headers

The desired include directory is the one in which the following header
may be found:

	xpm         X11/xpm.h
	png         png.h (zlib.h)
	readline    readline/readline.h
	rplay       rplay.h
	stroke      stroke.h
	intl        libintl.h

Only one version of the --with-foo-library flag may be specified.


Optional libraries used by FvwmGtk
==================================

FvwmGtk module requires GTK+ and optionally GDK-Imlib and GNOME libraries.
GDK-Imlib library that is a part of Imlib version 1 is used to have images.

Note, fvwm itself has an ability to support GNOME Window Manager hints
(which is enabled by default), this has nothing to do with GNOME library
support compiled into FvwmGtk (which is autoprobed and used if passed).

To disable autoprobing of GTK+, Imlib and GNOME libraries, use:

	--disable-gtktest --disable-imlibtest --without-gnome

This does not turn GTK+ and Imlib support off, instead, one part of the
checking, precisely compilation, is quietly considered to be passed.
To disable GTK+ and Imlib support even if the corresponding libraries
are installed, try this solution:

	--with-gtk-prefix=/no/dir --with-imlib-prefix=/no/dir

Run './configure --help' for more information about configure options.


Shared Libraries in Non-standard Places
=======================================

Note that at this time, autoconf and fvwm don't handle systems which
require a runtime library path separate from the link path very
gracefully.  If you have such a system (e.g., Solaris) and you have
installed the optional libraries in places not normally searched (e.g.,
not in /usr/lib, /lib or similar), you may need to specify the runtime
path separately; the above options won't add it for you.

A good way to do this is set the Makefile LDFLAGS variable before configure
runs to contain the -R option.  For example:

  $ LDFLAGS="-L/opt/xpm -R/opt/xpm" ./configure \
      --with-xpm-library=/opt/xpm/lib \
      --with-xpm-includes=/opt/xpm/include

In the future, fvwm's configuration may perform this step automatically.


Compile-time Options
====================

Fvwm has several options selectable only at compile time.
These are intended to keep fvwm's memory footprint small, by compiling
in the code only if requested.

Each such option, say "foo", is selectable by an "--enable-foo" or a
"--disable-foo" switch.  By default, all of these options (except
debug messages) are enabled.  This is probably what you want -- unless
memory is *really* tight -- so normally none of these options are
used.

If option "foo" is enabled by default, the NON-default version of the
switch is shown in the list below, and vice-versa.  In other words,
the version of the switch that you are likely to use is the one
listed.


  --disable-package-subdirs     don't create subdirs for modules and data
  ~~~~~~~~~~~~~~~~~~~~~~~~~

Usually fvwm is installed to common places, like /usr or /usr/local/X11,
in this case it is essential to create the package subdirectories for
modules and data files.  Hovewer, if fvwm is installed to its own prefix,
like /opt/fvwm or /opt/fvwm-2.4, it's possible to disable them.

With --enable-package-subdirs (default):
  modules are installed into:    $libexecdir/fvwm/$VERSION
  data files are installed into: $datadir/fvwm
With --disable-package-subdirs:
  modules are installed into:    $libexecdir
  data files are installed into: $datadir

This option is good if you need a full control over exact directory names:
  $ ./configure --prefix=/tmp/fvwm --disable-package-subdirs \
      --libexecdir='${prefix}/modules' --datadir='${prefix}/data'

If you switch this option between builds, you need "make clean"!


  --enable-debug-msgs           enable debugging messages
  ~~~~~~~~~~~~~~~~~~~

If you would like to see lots of debug messages from fvwm, for
debugging purposes, enable this option.  When reporting bugs, please
do not send the debug output.  It is almost never useful in this
situation.


  --enable-command-log          enable command logging
  ~~~~~~~~~~~~~~~~~~~~

If you would like to see all commands executed and their times, enable
this option.  Remember, when using this, the command time offset is given
in the system ticks, and it only means anything for commands executed in
one batch; for example, after startup the command time offset may freely
reach hours.


  --disable-sm                  disable session management support
  ~~~~~~~~~~~~

Fvwm has experimental session management support, which is autoconfigured
by searching for SM library, which is often shipped together with your
X libraries.  Note, the session management support is activated when fvwm
is run under a session manager like xsm or gnome-session.
This option disables session management support completely.


  --disable-xft                 disable anti-aliased text rendering
  ~~~~~~~~~~~~~

Fvwm can use the Xft library (version 1 or 2) to perform anti-aliased
text rendering in any text drawn by fvwm and modules.  By default, Xft
library is probed and this support is enabled if Xft works. You need
XFree version >= 4.1 and freetype2 version >= 6.1.0 (aka version
2.0.6), but more recent versions are better. The FONT NAMES AND FONT
LOADING section of the fvwm manual page explains how to enable
anti-aliased rendering at runing time.  This option disables Xft
support completely.


  --disable-xrender             disable Xrender alpha-blend rendering
  ~~~~~~~~~~~~~~~~~

Fvwm uses the Xrender library for alpha-blend rendering and tinting. This
library is contained in XFree version >= 4.0 and others recent X package.
This option disables Xrender support completely.


  --disable-xcursor             disable Xcursor ARGB/animated cursor loading
  ~~~~~~~~~~~~~~~~~

Fvwm can use the Xcursor library to load ARGB/animated mouse cursors. This
library is contained in XFree version >= 4.3 and others recent X packages.
This option disables Xcursor support.


  --disable-rsvg                disable scalable vector graphics (SVG images)
  ~~~~~~~~~~~~~~
Fvwm can use the librsvg library to render SVG files into icons and
images. You need a librsvg version >= 2.13.92 that uses Cairo as the
rendering backend. This option disables SVG image loading support.


  --disable-shape               disable shape extensions
  ~~~~~~~~~~~~~~~

Shaped window extensions are enabled by default; this option will
disable them.  Shaped window extensions seem to increase the window
managers RSS by about 60 Kbytes.  They provide for leaving a title-bar
on the window without a border.  If you don't use shaped window
extension, you can either make your shaped windows undecorated, or
live with a border and backdrop around all your shaped windows
(oclock, xeyes).

If you normally use a shaped window (xeyes or oclock), you might as
well compile this extension in, since the memory cost is minimal in
this case (the shaped window shared libs will be loaded anyway).  If
you don't normally use shaped windows, you have to decide for yourself.

Note: if it is compiled in, run time detection is used to make sure
that the currently running X server supports it.


  --disable-bidi                disable bi-directional text support
  ~~~~~~~~~~~~~~

The bi-directional text support is used to properly handle right-to-left
languages, like Hebrew and Arabic.  By default, fribidi library is probed
and this support is enabled if fribidi works.  This option explicitly
disables the bi-directional text support.


  --with-fribidi-bindir         directory of fribidi-config if not in PATH
  ~~~~~~~~~~~~~~~~~~~~~

The location of fribidi libraries and headers (needed for Bidi support)
is determined using fribidi-config utility.  This option specifies a
directory where fribidi-config is installed if it is not in the $PATH.


  --disable-perllib             disable installing fvwm perl library
  ~~~~~~~~~~~~~~~~~

By default the fvwm perl library is installed together with all other
data files.  Perl library may be used to write fvwm modules in perl.
Currently the FvwmPerl module uses it.  This option disables installing
the fvwm perl library.


  --with-gnome                  no, yes or prefix for GNOME files (FvwmGtk only)
  ~~~~~~~~~~~~

FvwmGtk may be built as a GTK application or a GNOME application.
This is autodetected and if GNOME libs found, they are used in FvwmGtk.
You may also specify the location of GNOME headers and libs using
--with-gnome-includes and --with-gnome-libs, but this is usually never
needed, since all required info should be returned by gnome-config
if GNOME is properly installed.  In case the GNOME installation works
and you don't want to be dependant on GNOME, specify --without-gnome.


  --enable-xinerama-emulation   enable Xinerama emulation on one screen
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~

This option is only useful for developers.  Usually the Xinerama support
is only activated at run time when it is compiled in and X supports it
and X is run with Xinerama extension.  This option enables the Xinerama
emulation even when X does not support it or fvwm is run on one screen.
This divides the screen to 2 non equivalent parts and one black area.

