* fix memory leak in w.*iconfile variable expansion
[fvwm.git] / INSTALL.fvwm
blob3b3b236d91126cb2eaf269e697a7b50c2672e473
1                                                                 -*- text -*-
2 If you only need an information about all supported features skip to the
3 "Supported Features" and the following sections.
5 VMS users: ignore this file, and follow the instructions in vms/README
6 instead.
8 This file details only configuration options peculiar to FVWM.  Please
9 read the generic instructions in INSTALL first.
12 Important Note!
13 ===============
15 The `configure' script keeps a cache of information it discovers, so
16 that subsequent invocations of `configure' will be faster.
18 However, if you update information on your system (such as install or
19 upgrade an optional library like Xpm, etc. [see below]) the cache may
20 contain outdated information; this can lead to confusing behavior during
21 subsequent `configure' invocations or builds.
23 If you're not familiar with how this works it might be safest to remove
24 the cache each time before running `configure'; you can either do a
25 simple:
27   $ rm -f config.cache
29 Or you may feel more comfortable with a complete cleaning:
31   $ make distclean
34 What gets installed, and where
35 ==============================
37 * fvwm is installed into ${prefix}/bin
38 * a couple of utilities are also installed into ${prefix}/bin; this includes
39   fvwm-config, fvwm-menu-*, fvwm-bug, fvwm-convert-*, fvwm-root, FvwmCommand
40 * all FvwmModule modules are installed into ${libexecdir}/fvwm/${VERSION}
41 * all manual pages are installed into ${mandir}/man1
42 * some configuration files are installed into ${datadir}/fvwm, for example,
43   FvwmForm & FvwmScript configurations and others
44 * perl library is installed into ${datadir}/fvwm/perllib
46 where VERSION is the version string of FVWM, typically something like
47 "2.4.0".  No other files are installed.  There are sample fvwm/config
48 files which you may copy manually to ${datadir}/fvwm, see below.
50 Unless you used configure options,
52 * ${prefix}     is /usr/local
53 * ${bindir}     is ${prefix}/bin
54 * ${mandir}     is ${prefix}/man
55 * ${libexecdir} is ${prefix}/libexec
56 * ${datadir}    is ${prefix}/share
57 * ${sysconfdir} is ${prefix}/etc
59 Thus the default locations are: /usr/local/bin, /usr/local/man/man1,
60 /usr/local/libexec/fvwm/VERSION, and /usr/local/share/fvwm for the FVWM
61 executables, man pages, modules, and configuration files, respectively.
63 Note that by default, none of the executables are stripped when they're
64 installed.  If you'd like them to be, run `make install-strip' instead
65 of `make install'.  Note that due to a bug in the older versions of
66 autoconf/automake this may fail in some of the modules directories
67 trying to strip shell scripts.  We recommend that you run `make -k
68 install-strip', which will continue past the failures.
71 Configuration File
72 ==================
74 FVWM configures itself at runtime by reading one or more configuration
75 files.  The default locations of the config file are ~/.fvwm/config and
76 /usr/local/share/fvwm/config (if the user's file is not found).  The
77 .fvwm2rc file names used in the past are supported too.
79 Sample configuration files may be found in the sample.fvwmrc
80 directory.  To avoid clobbering the current configuration, no
81 configuration file is installed by default.  You must copy it manually
82 the first time FVWM is installed.  But this is fully optional, FVWM
83 can run without any configuration file and has an ability to install some
84 configurations into the user home directory (precisely, FVWM_USERDIR).
86 Other system-wide configuration files are located in /usr/local/share/fvwm
87 (also called FVWM_DATADIR) that can be used directly from the configuration
88 directory.  See the FvwmForm man page for some examples.
90 For users starting fvwm without a fvwm/config or fvwm/.fvwm2rc file,
91 there are built-in dialogs that can copy files from the configuration
92 directory into the users home directory to create the users startup
93 file.  See the fvwm man page under "INITIALIZATION".
96 Bug Reports
97 ===========
99 One of the installed scripts is fvwm-bug that allows users to send bug
100 reports to either the local address or the developer address or both.
101 The local email address defaults to the installer login, probably root.
102 To override this default, set $FVWM_BUGADDR before running ./configure.
104 There is also a web based bug reporting system, see the Home Page.
110 One of FVWM's modules, FvwmCpp, requires a C preprocessor program.  The
111 configuration will look in various common places for cpp.  If one is not
112 found, FvwmCpp will still compile but you'll need to invoke it with the
113 -cpppath option to tell it where to find cpp.  FvwmCpp will exit with an
114 error message if no path to cpp is known.
116 You can tell configure what cpp to use by setting the FVWM_CPP
117 environment variable before invoking configure:
119   $ FVWM_CPP=/my/special/cpp ./configure
122 Supported Features
123 ==================
125 FVWM has several compile time features that may be switched on and off
126 using ./configure. To query what your installed fvwm supports run one of:
128   % fvwm-config --info
129   % fvwm-config --supports
131 Please run './configure --help' to see a list of all option.
132 The sections below explain these options.
134   Line shown by configure              Feature name  ./configure options
135 ---------------------------------------------------------------------------
136   With Asian bi-direct. text support?  bidi          --disable-bidi
137   With Gettext Native Lang Support     gettext       --with-intl-*
138   With GTK+ required for FvwmGtk?      gtk           --with-gtk-*
139   With GDK image support in FvwmGtk?   gdk-imlib     --with-imlib-*
140   With GNOME libs support in FvwmGtk?  gnome-libs    --with-gnome
141   With PNG image support?              png           --with-png-*
142   With ReadLine sup. in FvwmConsole?   readline      --with-readline-*
143   With RPlay support in FvwmEvent?     rplay         --with-rpm-*
144   With Shaped window support?          shape         --disable-shape
145   With With Shared memory for XImage?  shm           --disable-shm
146   With Session Management support?     sm            --disable-sm
147   With Mouse strokes (gestures)?       stroke        --with-stroke-*
148   With Xinerama multi-head support?    xinerama      --disable-xinerama
149   With Xft anti-alias font support?    xft           --enable-xft --with-xft-*
150   With XPM image support?              xpm           --with-xpm-*
151   With Xrender image support?          xrender       --disable-xrender
152   Perl library directory:              perllib       --disable-perllib
154 None of these features are essential, but some are nice to have.
155 It is safe *not* to compile in the following features:
156   bidi        (not needed if you don't plan to read Arabic and Hebrew)
157   gnome-libs  (really not needed, used only in FvwmGtk for minor things)
158   rplay       (really not needed, used only in FvwmEvent for internal sound)
159   xinerama    (not needed if you or your users have only one monitor)
162 Optional libraries used by FVWM
163 ===============================
165 FVWM can optionally be compiled to use the following libraries:
167         xpm         (XPM image format)
168         png         (PNG image format)
169         rplay       (RPlay audio)
170         readline    (Command line editing using readline)
171         stroke      (Mouse strokes)
172         intl        (Internationalization and localization using gettext)
174 By default, these are probed for, and used if found. If you want to use
175 any of them, install the library before configuring FVWM. It is possible
176 to explicitly tell configure to skip autoprobing of a given library and
177 disable it (see below).
179 Xpm allows the use of coloured icons.  See the Xpm web page at
180 http://www.inria.fr/koala/lehors/xpm.html for all the latest info and
181 links to source code.  You can also get the source code from
182 ftp://ftp.x.org/contrib/libraries/.  If you're having trouble building
183 with XPM even after reading this, try Question 2.4 in the FVWM FAQ.
185 Png allows to load coloured icons from files in PNG format. See the
186 libpng web page at http://www.libpng.org/pub/png/libpng.html for all the
187 latest info and links to source code. libpng is available as ANSI C source
188 code and requires the zlib library. The zlib package can be found at
189 http://www.gzip.org/zlib/
191 Rplay is used in one module (FvwmEvent) to play sounds without invoking
192 an external program.  This library appears to have been orphaned
193 in November, 1996.  The latest version is available at
194 http://rplay.doit.org/dist/.
196 Readline is used in one module (FvwmConsole) to allow fancy
197 command-line editing, a history buffer, etc.  It is GNU software, and
198 should be found on any GNU site, such as ftp://ftp.gnu.org/gnu/readline/.
200 To build with readline support, either termcap or ncurses library should
201 be found.  Use --with-termcap-library or --with-ncurses-library to specify
202 the path (directory or library file) to termcap or ncurses.  The first
203 valid library found is used.  It is possible to disable termcap or ncurses
204 autoprobing using --without-termcap-library or --without-ncurses-library.
205 Disabling both disables readline support, like --without-readline-library.
207 LibStroke allows interpretation by fvwm of mouse strokes (i.e., motions
208 of the mouse). For more informations see the  LibStroke web page at
209 http://www.etla.net/~willey/projects/libstroke/ and the fvwm man page.
211 Gettext is included in glibc, so it may be a part of your system.
212 Alternatively, there is GNU gettext package available at
213 http://www.gnu.org/software/gettext/.
215 If configure doesn't do the right thing, try one or more of the
216 following flags (examples assume library is named "foo"):
218         --without-foo-library    to disable probing for libfoo
219         --with-foo-library=FILE  to specify the library filename
220         --with-foo-library=DIR   to specify directory containing libfoo
221         --with-foo-includes=DIR  to specify include directory for headers
223 The desired include directory is the one in which the following header
224 may be found:
226         xpm         X11/xpm.h
227         png         png.h (zlib.h)
228         readline    readline/readline.h
229         rplay       rplay.h
230         stroke      stroke.h
231         intl        libintl.h
233 Only one version of the --with-foo-library flag may be specified.
236 Optional libraries used by FvwmGtk
237 ==================================
239 FvwmGtk module requires GTK+ and optionally GDK-Imlib and GNOME libraries.
240 GDK-Imlib library that is a part of Imlib version 1 is used to have images.
242 Note, FVWM itself has an ability to support GNOME Window Manager hints
243 (which is enabled by default), this has nothing to do with GNOME library
244 support compiled into FvwmGtk (which is autoprobed and used if passed).
246 To disable autoprobing of GTK+, Imlib and GNOME libraries, use:
248         --disable-gtktest --disable-imlibtest --without-gnome
250 This does not turn GTK+ and Imlib support off, instead, one part of the
251 checking, precisely compilation, is quietly considered to be passed.
252 To disable GTK+ and Imlib support even if the corresponding libraries
253 are installed, try this solution:
255         --with-gtk-prefix=/no/dir --with-imlib-prefix=/no/dir
257 Run './configure --help' for more information about configure options.
260 Shared Libraries in Non-standard Places
261 =======================================
263 Note that at this time, autoconf and FVWM don't handle systems which
264 require a runtime library path separate from the link path very
265 gracefully.  If you have such a system (e.g., Solaris) and you have
266 installed the optional libraries in places not normally searched (e.g.,
267 not in /usr/lib, /lib or similar), you may need to specify the runtime
268 path separately; the above options won't add it for you.
270 A good way to do this is set the Makefile LDFLAGS variable before configure
271 runs to contain the -R option.  For example:
273   $ LDFLAGS="-L/opt/xpm -R/opt/xpm" ./configure \
274       --with-xpm-library=/opt/xpm/lib \
275       --with-xpm-includes=/opt/xpm/include
277 In the future, FVWM's configuration may perform this step automatically.
280 Compile-time Options
281 ====================
283 FVWM has several options selectable only at compile time.
284 These are intended to keep FVWM's memory footprint small, by compiling
285 in the code only if requested.
287 Each such option, say "foo", is selectable by an "--enable-foo" or a
288 "--disable-foo" switch.  By default, all of these options (except
289 debug messages) are enabled.  This is probably what you want -- unless
290 memory is *really* tight -- so normally none of these options are
291 used.
293 If option "foo" is enabled by default, the NON-default version of the
294 switch is shown in the list below, and vice-versa.  In other words,
295 the version of the switch that you are likely to use is the one
296 listed.
299   --disable-package-subdirs     don't create subdirs for modules and data
300   ~~~~~~~~~~~~~~~~~~~~~~~~~
302 Usually FVWM is installed to common places, like /usr or /usr/local/X11,
303 in this case it is essential to create the package subdirectories for
304 modules and data files.  Hovewer, if FVWM is installed to its own prefix,
305 like /opt/fvwm or /opt/fvwm-2.4, it's possible to disable them.
307 With --enable-package-subdirs (default):
308   modules are installed into:    $libexecdir/fvwm/$VERSION
309   data files are installed into: $datadir/fvwm
310 With --disable-package-subdirs:
311   modules are installed into:    $libexecdir
312   data files are installed into: $datadir
314 This option is good if you need a full control over exact directory names:
315   $ ./configure --prefix=/tmp/fvwm --disable-package-subdirs \
316       --libexecdir='${prefix}/modules' --datadir='${prefix}/data'
318 If you switch this option between builds, you need "make clean"!
321   --enable-debug-msgs           enable debugging messages
322   ~~~~~~~~~~~~~~~~~~~
324 If you would like to see lots of debug messages from FVWM, for
325 debugging purposes, enable this option.  When reporting bugs, please
326 do not send the debug output.  It is almost never useful in this
327 situation.
330   --enable-command-log          enable command logging
331   ~~~~~~~~~~~~~~~~~~~~
333 If you would like to see all commands executed and their times, enable
334 this option.  Remember, when using this, the command time offset is given
335 in the system ticks, and it only means anything for commands executed in
336 one batch; for example, after startup the command time offset may freely
337 reach hours.
340   --disable-sm                  disable session management support
341   ~~~~~~~~~~~~
343 FVWM has experimental session management support, which is autoconfigured
344 by searching for SM library, which is often shipped together with your
345 X libraries.  Note, the session management support is activated when FVWM
346 is run under a session manager like xsm or gnome-session.
347 This option disables session management support completely.
350   --disable-xft                 disable anti-aliased text rendering
351   ~~~~~~~~~~~~~
353 FVWM can use the Xft library (version 1 or 2) to perform anti-aliased
354 text rendering in any text drawn by fvwm and modules.  By default, Xft
355 library is probed and this support is enabled if Xft works. You need
356 XFree version >= 4.1 and freetype2 version >= 6.1.0 (aka version
357 2.0.6), but more recent versions are better. The FONT NAMES AND FONT
358 LOADING section of the fvwm manual page explains how to enable
359 anti-aliased rendering at runing time.  This option disables Xft
360 support completely.
363   --disable-xrender             disable Xrender alpha-blend rendering
364   ~~~~~~~~~~~~~~~~~
366 FVWM uses the Xrender library for alpha-blend rendering and tinting. This
367 library is contained in XFree version >= 4.0 and others recent X package.
368 This option disables Xrender support completely.
371   --disable-shape               disable shape extensions
372   ~~~~~~~~~~~~~~~
374 Shaped window extensions are enabled by default; this option will
375 disable them.  Shaped window extensions seem to increase the window
376 managers RSS by about 60 Kbytes.  They provide for leaving a title-bar
377 on the window without a border.  If you don't use shaped window
378 extension, you can either make your shaped windows undecorated, or
379 live with a border and backdrop around all your shaped windows
380 (oclock, xeyes).
382 If you normally use a shaped window (xeyes or oclock), you might as
383 well compile this extension in, since the memory cost is minimal in
384 this case (the shaped window shared libs will be loaded anyway).  If
385 you don't normally use shaped windows, you have to decide for yourself.
387 Note: if it is compiled in, run time detection is used to make sure
388 that the currently running X server supports it.
391   --disable-bidi                disable bi-directional text support
392   ~~~~~~~~~~~~~~
394 The bi-directional text support is used to properly handle right-to-left
395 languages, like Hebrew and Arabic.  By default, fribidi library is probed
396 and this support is enabled if fribidi works.  This option explicitly
397 disables the bi-directional text support.
400   --with-fribidi-bindir         directory of fribidi-config if not in PATH
401   ~~~~~~~~~~~~~~~~~~~~~
403 The location of fribidi libraries and headers (needed for Bidi support)
404 is determined using fribidi-config utility.  This option specifies a
405 directory where fribidi-config is installed if it is not in the $PATH.
408   --disable-perllib             disable installing FVWM perl library
409   ~~~~~~~~~~~~~~~~~
411 By default the FVWM perl library is installed together with all other
412 data files.  Perl library may be used to write FVWM modules in perl.
413 Currently the FvwmPerl module uses it.  This option disables installing
414 the FVWM perl library.
417   --with-gnome                  no, yes or prefix for GNOME files (FvwmGtk only)
418   ~~~~~~~~~~~~
420 FvwmGtk may be built as a GTK application or a GNOME application.
421 This is autodetected and if GNOME libs found, they are used in FvwmGtk.
422 You may also specify the location of GNOME headers and libs using
423 --with-gnome-includes and --with-gnome-libs, but this is usually never
424 needed, since all required info should be returned by gnome-config
425 if GNOME is properly installed.  In case the GNOME installation works
426 and you don't want to be dependant on GNOME, specify --without-gnome.
429   --enable-xinerama-emulation   enable Xinerama emulation on one screen
430   ~~~~~~~~~~~~~~~~~~~~~~~~~~~
432 This option is only useful for developers.  Usually the Xinerama support
433 is only activated at run time when it is compiled in and X supports it
434 and X is run with Xinerama extension.  This option enables the Xinerama
435 emulation even when X does not support it or fvwm is run on one screen.
436 This divides the screen to 2 non equivalent parts and one black area.