Add installation and internationalization docs to webpage.

Generated from Compilation.texi and Translations.texi under the doc/build
directory of the Window Maker source tree using makeinfo.
This commit is contained in:
Doug Torrance
2017-03-10 15:47:25 -05:00
committed by Carlos R. Mafra
parent ca7bd602ab
commit 2caaf4b12d
3 changed files with 1367 additions and 1 deletions

View File

@@ -34,7 +34,8 @@
<ul> <ul>
<li><a href="installation.php">Installation Basics</a></li> <li><a href="installation.php">Installation Basics</a></li>
<li><a href="wmaker_install.php">Window Maker Compilation and Installation</a></li>
<li><a href="wmaker_i18n.php">Window Maker Internationalisation</a></li>
<li><a href="guidedtour/index.html">Guided Tour</a></li> <li><a href="guidedtour/index.html">Guided Tour</a></li>
<li><a href="guide_toc.php">User Guide</a></li> <li><a href="guide_toc.php">User Guide</a></li>
<!-- <li><a href="desktop.php">Desktop/X Integration</a></li> --> <!-- <li><a href="desktop.php">Desktop/X Integration</a></li> -->

525
wmaker_i18n.php Normal file
View File

@@ -0,0 +1,525 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual is for WINDOW MAKER window manager, version git#next.
Copyright (C) 2015 The Window Maker Team.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program, see file COPYING for details. -->
<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Window Maker Internationalisation 1.0</title>
<meta name="description" content="Window Maker Internationalisation 1.0">
<meta name="keywords" content="Window Maker Internationalisation 1.0">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="#Top" rel="start" title="Top">
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
<link href="dir.html#Top" rel="up" title="(dir)">
<link href="title.css" rel="stylesheet" type="text/css" />
</head>
<body lang="en">
<?php include("dock.php"); ?>
<?php include("header.php"); ?>
<a name="Top"></a>
<a name="Window-Maker-Internationalisation"></a>
<h1 class="top">Window Maker Internationalisation</h1>
<p>A guide to enable support for language translations
in <small>WINDOW MAKER</small> and to the contributors
who want to help translating.
</p>
<a name="SEC_Contents"></a>
<h2 class="contents-heading">Table of Contents</h2>
<div class="contents">
<ul class="no-bullet">
<li><a name="toc-Enabling-Languages-support-1" href="#Enabling-Languages-support">1 Enabling Languages support</a>
<ul class="no-bullet">
<li><a name="toc-Getting-the-list-of-supported-languages" href="#Getting-the-list-of-supported-languages">1.1 Getting the list of supported languages</a></li>
<li><a name="toc-Translations-for-Menus" href="#Translations-for-Menus">1.2 Translations for Menus</a></li>
<li><a name="toc-Setting-LINGUAS-at-system-level" href="#Setting-LINGUAS-at-system-level">1.3 Setting <code>LINGUAS</code> at system level</a></li>
</ul></li>
<li><a name="toc-Choosing-the-Language-1" href="#Choosing-the-Language">2 Choosing the Language</a></li>
<li><a name="toc-Troubleshooting-1" href="#Troubleshooting">3 Troubleshooting</a></li>
<li><a name="toc-Contribute-to-Translations-1" href="#Contribute-to-Translations">4 Contribute to Translations</a>
<ul class="no-bullet">
<li><a name="toc-Install-the-latest-sources" href="#Install-the-latest-sources">4.1 Install the latest sources</a></li>
<li><a name="toc-Updating-the-Translations" href="#Updating-the-Translations">4.2 Updating the Translations</a></li>
<li><a name="toc-Translate-the-Man-Pages" href="#Translate-the-Man-Pages">4.3 Translate the Man Pages</a></li>
<li><a name="toc-Checking-the-Result" href="#Checking-the-Result">4.4 Checking the Result</a></li>
<li><a name="toc-Submitting-your-Contribution" href="#Submitting-your-Contribution">4.5 Submitting your Contribution</a></li>
</ul></li>
</ul>
</div>
<br>
<p>This manual is for Window Maker, version git#next.
</p>
<hr>
<a name="Enabling-Languages-support"></a>
<a name="Enabling-Languages-support-1"></a>
<h2 class="chapter">1 Enabling Languages support</h2>
<p><small>WINDOW MAKER</small> has the possibility to be translated in many languages, but by default none of
them will be installed, and the support for translation will not be compiled.
</p>
<p>To enable the translation capabilities, you have to specify which language(s) you want to be
installed: this is done with the variable <code>LINGUAS</code> when running the <code>configure</code> script.
This variable should contain the space-separated list of languages you want to install.
</p>
<p>You could for instance enable both French (<code>fr</code>) and Dutch (<code>nl</code>) with this:
</p>
<div class="example">
<pre class="example">./configure LINGUAS=&quot;fr nl&quot;
</pre></div>
<p>You can of course add any other option that you want to the <code>configure</code> command.
From the moment you specify the variable, the <code>configure</code> script will check that you have
the appropriate dependencies for this (basically the <code>gettext</code> function and the <code>libintl</code>
library); when you run <code>make</code> to compile the project, it will also compile the translation
(<code>mo</code> files) for the language(s) you asked (if available, of course), and during
<code>make install</code> it will install them in the usual directory.
</p>
<p>The installation directory can be changed with the standard option <samp>--localedir</samp> to the
<code>configure</code> script, the default path being
<samp><em>&lt;prefix&gt;</em>/share/locale/<em>&lt;lang&gt;</em>/LC_MESSAGES</samp>).
</p>
<a name="Getting-the-list-of-supported-languages"></a>
<h3 class="section">1.1 Getting the list of supported languages</h3>
<p>The naming convention for the languages follows the <cite>ISO 639-1</cite> standard,
for which you can find a summary list in the
<a href="https://www.gnu.org/software/gettext/manual/html_node/Usual-Language-Codes.html">GNU gettext manual</a>.
</p>
<p>But as <small>WINDOW MAKER</small> does not support all of them, the <code>configure</code> script will print a
warning for each language you specify that it does not know, and sum up at the end the list of
enabled languages that will be installed.
</p>
<p>There is a non-standard possibility to set <code>LINGUAS</code> to <code>list</code>, in which case the
<code>configure</code> script will provide you the list of languages it supports, and stop:
</p>
<div class="example">
<pre class="example">./configure LINGUAS=&quot;list&quot;
</pre></div>
<p>There is also another non-standard possibility to enable all the languages that <small>WINDOW MAKER</small>
supports by setting <code>LINGUAS</code> to <code>*</code>.
This is an internal trick implemented so the development team can have the command
<code>make distcheck</code> include some checks on translations:
</p>
<div class="example">
<pre class="example">./configure LINGUAS='*'
</pre></div>
<a name="Translations-for-Menus"></a>
<h3 class="section">1.2 Translations for Menus</h3>
<p>In order to propose an <em>Application Menu</em> (also called <em>Root Menu</em>) that is also
translated in the language of the interface, <small>WINDOW MAKER</small> implements two complementary
mechanisms:
</p>
<p>The first, always enabled when i18n support is enabled, is to look for the menu file containing the
name of the locale.
For example, if the file is called <samp>menu</samp> and the language is set as <code>LANG=fr_FR.utf-8</code>,
then <small>WINDOW MAKER</small> will search for, and use the first match found:
</p>
<ul>
<li> <code>menu.fr_FR.utf-8</code>
</li><li> <code>menu.fr_FR</code>
</li><li> <code>menu.fr</code>
</li><li> <code>menu</code>
</li></ul>
<p>The second possibility, which is not enabled by default, is to be able to use a custom <samp>po</samp>
file which contains the translations for the text of the menu.
This feature is enabled at compile time, using the option <samp>--with-menu-textdomain</samp> to the
<code>configure</code> script. For example, if you specify:
</p>
<div class="example">
<pre class="example">./configure --with-menu-textdomain=WMMenu
</pre></div>
<p>then the translations for the menu will be searched in the file <samp>WMMenu.mo</samp> located
at the standard location, the default path being
<samp><em>&lt;prefix&gt;</em>/share/locale/<em>&lt;lang&gt;</em>/LC_MESSAGES/<em>WMMenu</em>.mo</samp>.
</p>
<p>If you do not enable the feature (the default behaviour, or with an explicit
<samp>--without-menu-textdomain</samp>), then <small>WINDOW MAKER</small> will <b>not</b> try to translate the
strings, even using its own domain file (<samp>WindowMaker.mo</samp>).
</p>
<a name="Setting-LINGUAS-at-system-level"></a>
<h3 class="section">1.3 Setting <code>LINGUAS</code> at system level</h3>
<p>As the variable <code>LINGUAS</code> is quite standard, you also have the possibility to set its value in
the <samp>config.site</samp> file for <small>AUTOCONF</small>.
This file can be placed in one of these paths:
</p>
<ul>
<li> <samp><em>&lt;prefix&gt;</em>/share/config.site</samp>
</li><li> <samp><em>&lt;prefix&gt;</em>/etc/config.site</samp>
</li></ul>
<p>This way, the same language list will be used for all the programs that use <small>AUTOCONF</small> that you
would compile.
Please note that if you also specify a value on the command line, it will have precedence over the
value in that file.
</p>
<hr>
<a name="Choosing-the-Language"></a>
<a name="Choosing-the-Language-1"></a>
<h2 class="chapter">2 Choosing the Language</h2>
<p>If you have compiled and installed <small>WINDOW MAKER</small> with support for your language,
the effective translation is done is the very same way as any other application on an <small>UNIX</small>
system, you just have to set the shell variable <code>LANG</code> to your language before <code>wmaker</code>
is started.
In <code>sh</code> type of shell (<small>SH</small>, <small>KSH</small>, <small>BASH</small>, ...), this is done for example with
(<code>fr</code> is for French):
</p>
<div class="example">
<pre class="example">export LANG=fr
</pre></div>
<p>There is also a command line option <samp>--locale</samp> for <small>WINDOW MAKER</small> which may be used to set
the language:
</p>
<div class="example">
<pre class="example">wmaker --locale fr
</pre></div>
<p>When using this option, <small>WINDOW MAKER</small> will use the locale you specified, redefining the
<code>LANG</code> environment variable to this value so all program started from <small>WINDOW MAKER</small> will
inherit its value.
</p>
<p>If your system is using <small>SYSTEMD</small>, you can also configure the locale at system level using the
command:
</p>
<div class="example">
<pre class="example">localectl set-locale LANG=fr
</pre></div>
<p>You can check if the current value is properly supported with the command:
</p>
<div class="example">
<pre class="example">locale
</pre></div>
<p>If this does not work, you may need first to activate the support for your locale in the system;
you can get the list of currently enabled locales with the command:
</p>
<div class="example">
<pre class="example">locale -a
</pre></div>
<p>You should be able to enable a new language support by editing the file <samp>/etc/locale.gen</samp> to
uncomment the locale(s) you need (by removing the <code>#</code> character and space(s) in front of it,
and by running the command <code>locale-gen</code> as root.
</p>
<p>For further information, you may wish to read dedicated documentation, for example from
<a href="http://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html">the Linux Documentation Project</a>
or through pages like
<a href="http://www.shellhacks.com/en/HowTo-Change-Locale-Language-and-Character-Set-in-Linux">Shell Hacks&rsquo; note on Changing Locale</a>.
</p>
<hr>
<a name="Troubleshooting"></a>
<a name="Troubleshooting-1"></a>
<h2 class="chapter">3 Troubleshooting</h2>
<p>If I18N support does not work for you, check these:
</p>
<ul class="no-bullet">
<li>- the <code>LANG</code> environment variable is set to your locale, and
the locale is supported by your OS&rsquo;s locale or X&rsquo;s locale
emulation. you can display all supported locales by
executing &quot;<code>locale -a</code>&quot; command if it is available; you
can check if your locale is supported by X&rsquo;s locale emulation,
see <samp>/usr/share/X11/locale/locale.alias</samp>
</li><li>- check if you are using an appropriate fonts for the locale you
chose. If you&rsquo;re using a font set that has a different
encoding than the one used by <small>XLIB</small> or <small>LIBC</small>, bad things can
happen. Try specifically putting the encoding in the <code>LANG</code>
variable, like <code>ru_RU.KOI8-R</code>. Again, see
<samp>/usr/share/X11/locale/locale.alias</samp>
</li><li>- the fonts you&rsquo;re using support your locale. if your font
setting on <samp>$HOME/GNUstep/Defaults/WindowMaker</samp> is like...
<div class="example">
<pre class="example"> WindowTitleFont = &quot;Trebuchet MS:bold:pixelsize=12&quot;;
MenuTitleFont = &quot;Trebuchet MS:bold:pixelsize=12&quot;;
</pre></div>
<p>then you can&rsquo;t display Asian languages (<code>ja</code>, <code>ko</code>, <code>ch</code>, ...) characters using
<code>Trebuchet MS</code>. A font that is guaranteed to work for any language is
<code>sans</code> (or <code>sans-serif</code>). <code>sans</code> is not a font itself, but an alias which
points to multiple fonts and will load the first in that list that
has the ability to show glyphs in your language. If you don&rsquo;t know
a font that is suited for your language you can always set all your
fonts to something like:
</p>
<div class="example">
<pre class="example"> &quot;sans:pixelsize=12&quot;
</pre></div>
<p>However, please note that if your font is something like:
</p>
<div class="example">
<pre class="example"> &quot;Trebuchet MS,sans serif:pixelsize=12&quot;
</pre></div>
<p>this will not be able to display Asian languages if any of the
previous fonts before sans are installed. This is because unlike
the proper font pickup that <code>sans</code> guarantees for your language,
this construct only allows a font fallback mechanism, which tries
all the fonts in the list in order, until it finds one that is
available, even if it doesn&rsquo;t support your language.
</p>
<p>Also you need to change font settings in style files in
the <samp>$HOME/Library/WindowMaker/Style</samp> directory.
</p>
</li><li>- the <code>LC_CTYPE</code> environment variable is unset or it has the correct
value. If you don&rsquo;t know what is the correct value, unset it.
</li></ul>
<hr>
<a name="Contribute-to-Translations"></a>
<a name="Contribute-to-Translations-1"></a>
<h2 class="chapter">4 Contribute to Translations</h2>
<p>You may have noticed that many translations are not up to date, because the code has evolved but the
persons who initially contributed may not have had the time to continue, so any help is welcome.
</p>
<p>Since <small>WINDOW MAKER</small> 0.95.7 there are some targets to <code>make</code> that can help you in that
task.
</p>
<a name="Install-the-latest-sources"></a>
<h3 class="section">4.1 Install the latest sources</h3>
<p>If you want to contribute, the first step is get the development branch of the code;
this is done using <code>git</code>.
If you do not feel confident at all with using <code>git</code>, you may also try to ask for a
<em>snapshot</em> on the developer&rsquo;s mailing list <a href="mailto:wmaker-dev@lists.windowmaker.org">wmaker-dev@lists.windowmaker.org</a>.
With <code>git</code> the procedure is:
</p>
<div class="example">
<pre class="example"># Get your working copy of the sources
git clone git://repo.or.cz/wmaker-crm.git
# Go into that newly created directory
cd wmaker-crm
# Switch to the branch where everything happens
git checkout next
# Generate the configuration script
./autogen.sh
</pre></div>
<p>Now you should have an up-to-date working copy ready to be compiled;
you will not need to go the full way but you should run the <code>configure</code> script, so it will
create the <samp>Makefile</samp>s, and you may want to compile the code once so it will not do it again
automatically later while you are doing something else:
</p>
<div class="example">
<pre class="example"># Setup the build, enabling at least the language you want to work on
./configure LINGUAS=&quot;&lt;list of iso 639 country code&gt;&quot;
# Compile the code once
make
</pre></div>
<a name="Updating-the-Translations"></a>
<h3 class="section">4.2 Updating the Translations</h3>
<p>The typical process for translating one program is:
</p>
<ul>
<li> generate a POT file (PO Template):
this is done with <code>xgettext</code> which searches for all the strings from the sources that can be
translated;
</li><li> update the PO file for your language:
this is done with <code>msgmerge</code> which compares the PO file and aligns it to the latest
template;
</li><li> edit the new PO file:
this is done by you with your favourite editor, to add the missing <code>msgstr</code>, review the
possible <em>fuzzy matches</em>, ...
</li><li> check the PO file:
unfortunately there is no definitive method for this;
</li><li> submit your contribution to the project:
this is done with <code>git</code>.
</li></ul>
<p>In <small>WINDOW MAKER</small>, you have actually 4 <code>po</code> files to take care of:
</p>
<ul class="no-bullet">
<li>- <samp>po/<em>&lt;lang&gt;</em>.po</samp>: for <small>WINDOW MAKER</small> itself
</li><li>- <samp>WPrefs.app/po/<em>&lt;lang&gt;</em>.po</samp>: for the Preference Editor program
</li><li>- <samp>WINGs/po/<em>&lt;lang&gt;</em>.po</samp>: for the graphic toolkit library
</li><li>- <samp>util/po/<em>&lt;lang&gt;</em>.po</samp>: for the command-line tools of <small>WINDOW MAKER</small>
</li></ul>
<p>As stated previously, there is a <code>make</code> target that can help you to automatically generate
the POT and update the PO for these 4 cases:
</p>
<div class="example">
<pre class="example">make update-lang PO=&lt;lang&gt;
</pre></div>
<p>Once run, it will have updated as needed the 4 <code>po</code> files against the latest source code.
You may wish to use the command <code>git gui</code> to view the changes;
you can now edit the files to complete the translation, correct them, remove deprecated stuff, ...
Please note that the encoding should be set to <em>UTF-8</em> as this is now the standard.
</p>
<p>If you think an error message is too obscure, just ask on the developer mailing list
<a href="mailto:wmaker-dev@lists.windowmaker.org">wmaker-dev@lists.windowmaker.org</a>: in addition to clarifications there&rsquo;s even a chance for the original message
to be improved!
</p>
<p>You may find some information on working with <code>po</code> file in the
<a href="https://www.gnu.org/software/gettext/manual/html_node/Editing.html">GNU gettext documentation</a>.
</p>
<a name="Translate-the-Man-Pages"></a>
<h3 class="section">4.3 Translate the Man Pages</h3>
<p>You may want to extend the translation to the documentation that is provided to users in the form
of Unix <i>man pages</i>.
The sources of the man pages are located in the <samp>doc/</samp> directory;
the translation should be placed in the directory <samp>doc/<i>lang</i>/</samp> with the same file name.
</p>
<p>The directory will also need a file <samp>Makefile.am</samp> which provides the list of man pages to be
included in the distribution package and to be installed.
You can probably get inspiration from an existing one from another language;
if you do not feel confident about it do not hesitate to ask on the project&rsquo;s mailing list
(<a href="mailto:wmaker-dev@lists.windowmaker.org">wmaker-dev@lists.windowmaker.org</a>), either for help or to ask someone to make it for you.
</p>
<p>Please note that although most man pages sources are directly in man page format
(<em>nroff</em>, the file extension being a number), a few of them are processed by a script
(those with the <samp>.in</samp> extension, like <samp>wmaker.in</samp>).
This is done because in some case we want the man page to reflect the actual compilation options.
</p>
<p>You may not want to bother with this hassle, in which case you can simply name your translation
file with the <samp>.1</samp> and remove the special <code>@keyword@</code> marks.
If you are sure you want to keep that processing but do not feel confident about hacking the
<samp>Makefile.am</samp> do not hesitate to ask on the project&rsquo;s mailing list (<a href="mailto:wmaker-dev@lists.windowmaker.org">wmaker-dev@lists.windowmaker.org</a>).
</p>
<a name="Checking-the-Result"></a>
<h3 class="section">4.4 Checking the Result</h3>
<p>In the <small>WINDOW MAKER</small> build tree you also have another target that can help you, it is
<code>make check</code>.
</p>
<p>At current time, it does not check much, but if during the <code>make update-lang</code> new <code>po</code>
file have been created you may get some errors, because you have to add these new files to the
variable <var>EXTRA_DIST</var> in the corresponding <samp>Makefile</samp>.
</p>
<p>If you do not feel confident about doing it, do not worry, just tell about it when you submit your
work, and some developer on the mailing list will just be happy to do it for you when integrating
your valuable contribution (we always like when someone helps making <small>WINDOW MAKER</small> better).
</p>
<a name="Submitting-your-Contribution"></a>
<h3 class="section">4.5 Submitting your Contribution</h3>
<p><em>Preliminary Remark</em>: if the update process made changes in a <code>po</code> file but you did not
change any <code>msgstr</code> content, it is probably a good idea to not submit the changes to that
<code>po</code> file because it would just add noise.
</p>
<p>When you feel ready to send your changes, the first step is to prepare them.
This is done with <code>git</code>: if you have not run the <code>git gui</code> previously then it is a
good time to do it now.
This window offers you the possibility to show your changes and to decide what you want to send.
</p>
<p>The window is divided in 4 panes:
</p><ul>
<li> top-right show the current changes you have selected, for review
(and also for cherry-picking stuff if you want to select precisely)
</li><li> top-left (&quot;Unstaged Changes&quot;) the list of files with changes to be send,
you can click on the name of the file to see the changes,
you can click on the icon of the file if you want to send all the changes in this file;
an icon in blue shows a file that have been changed and an icon in black shows a file that is new
</li><li> bottom-left (&quot;Staged Changes&quot;) the list of files with changes that you have chosen to send so far,
you can click on the file name to view these changes,
you can click on the icon if you want to remove the changes from this file from the list to send
</li><li> bottom-right (&quot;Commit Message&quot;) the message you want to attach to your changes when you submit them
to the development team
</li></ul>
<p>The idea here is to pick your changes to the <code>po</code> files;
for the <em>commit message</em> you may wish to stuck to a simple, single line:
</p>
<blockquote>
<p>&quot;Updated translations for <em>&lt;lang&gt;</em>&quot;
</p></blockquote>
<p>The penultimate step is to click on the button <tt class="key">Sign Off</tt> (it will add a line in the commit
message), and then click on the button <tt class="key">Commit</tt>.
From this time, the commit message will clear itself and the &quot;Staged Changes&quot; also, showing that
your action was done.
</p>
<p>You may now quit the <code>git gui</code>, the final step begins by running this command:
</p>
<div class="example">
<pre class="example">git format-patch HEAD^
</pre></div>
<p>This will generate a file named like <samp>0001-<em>updated-translations-for-XX</em>.patch</samp>
which contains your changes, ready for sending.
The goal will now be to email this file to <a href="mailto:wmaker-dev@lists.windowmaker.org">wmaker-dev@lists.windowmaker.org</a>.
If you feel confident in having <code>git</code> send it for you, you may want to read the file
<samp>The-perfect-Window-Maker-patch.txt</samp> to see how to configure <code>git</code> for mailing, so you
can run:
</p>
<div class="example">
<pre class="example">git send-email 0001-<em>updated-translations-for-XX</em>.patch
</pre></div>
<hr>
</body>
</html>

840
wmaker_install.php Normal file
View File

@@ -0,0 +1,840 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual is for WINDOW MAKER window manager, version git#next.
Copyright (C) 2015 The Window Maker Team.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program, see file COPYING for details. -->
<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Window Maker Compilation and Installation 1.0</title>
<meta name="description" content="Window Maker Compilation and Installation 1.0">
<meta name="keywords" content="Window Maker Compilation and Installation 1.0">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="#Top" rel="start" title="Top">
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
<link href="dir.html#Top" rel="up" title="(dir)">
<link href="title.css" rel="stylesheet" type="text/css" />
</head>
<body lang="en">
<?php include("dock.php"); ?>
<?php include("header.php"); ?>
<a name="Top"></a>
<a name="Window-Maker-Compilation-and-Installation"></a>
<h1 class="top">Window Maker Compilation and Installation</h1>
<p>A guide to configure, compile and install
<small>WINDOW MAKER</small> from sources.
</p>
<a name="SEC_Contents"></a>
<h2 class="contents-heading">Table of Contents</h2>
<div class="contents">
<ul class="no-bullet">
<li><a name="toc-Prerequisites-1" href="#Prerequisites">1 Prerequisites</a>
<ul class="no-bullet">
<li><a name="toc-Supported-Platforms" href="#Supported-Platforms">1.1 Supported Platforms</a></li>
<li><a name="toc-Software-Dependencies-1" href="#Software-Dependencies-1">1.2 Software Dependencies</a></li>
<li><a name="toc-Special-Dependencies-1" href="#Special-Dependencies-1">1.3 Special Dependencies</a></li>
<li><a name="toc-Optional-Dependencies-1" href="#Optional-Dependencies-1">1.4 Optional Dependencies</a></li>
</ul></li>
<li><a name="toc-Building-WINDOW-MAKER" href="#Building-Window-Maker">2 Building <small>WINDOW MAKER</small></a>
<ul class="no-bullet">
<li><a name="toc-Getting-the-Sources" href="#Getting-the-Sources">2.1 Getting the Sources</a></li>
<li><a name="toc-Build-and-Install" href="#Build-and-Install">2.2 Build and Install</a></li>
<li><a name="toc-User-specific-configuration" href="#User-specific-configuration">2.3 User specific configuration</a></li>
<li><a name="toc-Locales_002fInternationalisation" href="#Locales_002fInternationalisation">2.4 Locales/Internationalisation</a></li>
<li><a name="toc-Configure-Options-1" href="#Configure-Options-1">2.5 Configure Options</a>
<ul class="no-bullet">
<li><a name="toc-Installation-Directory" href="#Installation-Directory">2.5.1 Installation Directory</a></li>
<li><a name="toc-External-Libraries" href="#External-Libraries">2.5.2 External Libraries</a></li>
<li><a name="toc-X11-and-Extensions" href="#X11-and-Extensions">2.5.3 X11 and Extensions</a></li>
<li><a name="toc-Feature-Selection" href="#Feature-Selection">2.5.4 Feature Selection</a></li>
<li><a name="toc-Developer-Stuff" href="#Developer-Stuff">2.5.5 Developer Stuff</a></li>
</ul></li>
</ul></li>
<li><a name="toc-Miscellaneous-1" href="#Miscellaneous">3 Miscellaneous</a>
<ul class="no-bullet">
<li><a name="toc-Platform-Specific-Notes" href="#Platform-Specific-Notes">3.1 Platform Specific Notes</a></li>
<li><a name="toc-I-don_0027t-have-the-root-password-_003a_0028" href="#I-don_0027t-have-the-root-password-_003a_0028">3.2 I don&rsquo;t have the <em>root</em> password :(</a></li>
<li><a name="toc-Upgrading" href="#Upgrading">3.3 Upgrading</a></li>
</ul></li>
<li><a name="toc-Troubleshooting-1" href="#Troubleshooting">4 Troubleshooting</a>
<ul class="no-bullet">
<li><a name="toc-Error-with-loading-fonts_002c-even-if-they-exist" href="#Error-with-loading-fonts_002c-even-if-they-exist">4.1 Error with loading fonts, even if they exist</a></li>
<li><a name="toc-configure-doesn_0027t-detect-libtiff_002c-or-other-graphic-libraries" href="#configure-doesn_0027t-detect-libtiff_002c-or-other-graphic-libraries">4.2 configure doesn&rsquo;t detect <em>libtiff</em>, or other graphic libraries</a></li>
<li><a name="toc-configure-doesn_0027t-detect-libXpm" href="#configure-doesn_0027t-detect-libXpm">4.3 configure doesn&rsquo;t detect <em>libXpm</em></a></li>
<li><a name="toc-Segmentation-fault-on-startup" href="#Segmentation-fault-on-startup">4.4 Segmentation fault on startup</a></li>
<li><a name="toc-_0022_002e_002e_002e_003a-your-machine-is-misconfigured_002e-gethostname_0028_0029-returned-_0028none_0029_0022" href="#g_t_0022_002e_002e_002e_003a-your-machine-is-misconfigured_002e-gethostname_0028_0029-returned-_0028none_0029_0022">4.5 &quot;...: your machine is misconfigured. gethostname() returned (none)&quot;</a></li>
<li><a name="toc-The-root-menu-contains-only-2-entries_002e-_0028_0022XTerm_0022-and-_0022Exit_002e_002e_002e_0022_0029" href="#The-root-menu-contains-only-2-entries_002e-_0028_0022XTerm_0022-and-_0022Exit_002e_002e_002e_0022_0029">4.6 The root menu contains only 2 entries. (&quot;XTerm&quot; and &quot;Exit...&quot;)</a></li>
</ul></li>
</ul>
</div>
<br>
<p>This manual is for Window Maker, version git#next.
</p>
<hr>
<a name="Prerequisites"></a>
<a name="Prerequisites-1"></a>
<h2 class="chapter">1 Prerequisites</h2>
<a name="Supported-Platforms"></a>
<h3 class="section">1.1 Supported Platforms</h3>
<ul class="no-bullet">
<li>- Intel GNU/Linux Systems in general, <tt>ix86</tt> and <tt>x86_64</tt> but other architectures should work
</li><li>- BSD systems
</li><li>- Solaris, at least on release 10 and 11
</li></ul>
<p>Patches to make it work on other platforms are welcome.
</p>
<a name="Software-Dependencies-1"></a>
<h3 class="section">1.2 Software Dependencies</h3>
<a name="Software-Dependencies"></a>
<p>The following software is required to use <small>WINDOW MAKER</small>:
</p><ul class="no-bullet">
<li>- X11R6.x
<p>Window Maker can be compiled in older versions of <em>X</em>, like <em>X11R5</em> (<em>Solaris</em>)
or <em>X11R4</em> (<em>OpenWindows</em>) but it will not work 100% correctly.
In such servers there will not be application icons and you&rsquo;ll have trouble using the dock.
Upgrading the client libraries (<em>Xlib</em>, <em>Xt</em>, etc.) will help if you can&rsquo;t upgrade
the server.
</p></li></ul>
<p>The following is required to build <small>WINDOW MAKER</small>:
</p><ul class="no-bullet">
<li>- Basic obvious stuff
<ul>
<li> <em>gcc</em> (or some other ANSI C compiler, supporting some C99 extensions)
</li><li> <em>glibc</em> development files (usually <samp>glibc-devel</samp> in Linux distributions)
</li><li> <em>X</em> development files (<samp>XFree86-devel</samp> or something similar)
</li></ul>
</li><li>- <em>Xft2</em> and its dependencies
<p>Dependencies include <em>freetype2</em> and <em>fontconfig</em>.
You will also need the development files for them (<samp>xft2-devel</samp>).
Sources are available at: <a href="http://www.freedesktop.org/wiki/Software/Xft/">http://www.freedesktop.org/wiki/Software/Xft/</a>
</p>
</li></ul>
<p><b>Note</b>:
<small>WINDOW MAKER</small> is known to compile with <em>gcc</em> and <em>clang</em>;
the code source is mostly ANSI C (also known as C89 and C90) but is uses very few of the C99
novelties;
it also uses a few attributes introduced in the C11 standard but those are detected automatically,
so most compilers should work.
</p>
<a name="Special-Dependencies-1"></a>
<h3 class="section">1.3 Special Dependencies</h3>
<a name="Special-Dependencies"></a>
<p>If you want to compile using the sources from the git repository instead of the distribution
package, you will also need:
</p><ul>
<li> <em>git</em>
</li><li> <em>autoconf</em> 2.69
</li><li> <em>automake</em> 1.12
</li><li> <em>libtool</em> 1.4.2
</li></ul>
<a name="Optional-Dependencies-1"></a>
<h3 class="section">1.4 Optional Dependencies</h3>
<a name="Optional-Dependencies"></a>
<p>These libraries are not required to make <small>WINDOW MAKER</small> work, but they are supported in case you
want to use them. Version numbers are indicative, but other versions might work too.
</p>
<ul class="no-bullet">
<li>- <em>libXPM</em> 4.7 or newer
<p>Older versions may not work!
</p>
<p>Available from <a href="http://xlibs.freedesktop.org/release/">http://xlibs.freedesktop.org/release/</a>
</p>
<p>There is built-in support for <em>XPM</em> files, but it will not
load images in some uncommon encodings.
</p>
</li><li>- <em>libpng</em> 0.96 or newer and <em>zlib</em>
<p>For <em>PNG</em> image support,
<a href="http://www.libpng.org/pub/png/libpng.html">http://www.libpng.org/pub/png/libpng.html</a>
</p>
</li><li>- <em>libtiff</em> 3.4 or newer
<p>For <em>TIFF</em> image support,
<a href="http://www.libtiff.org/">http://www.libtiff.org/</a>
</p>
</li><li>- <em>libjpeg</em> 6.0.1 or newer
<p>For <em>JPEG</em> image support,
<a href="http://www.ijg.org/">http://www.ijg.org/</a>
</p>
<p>Note that if you don&rsquo;t have it, <code>configure</code> will issue a big warning in the end,
this is because JPEG images are often used in themes and for background images
so you probably want this format supported.
</p>
</li><li>- <em>libgif</em> 2.2 or <em>libungif</em>
<p>For <em>GIF</em> image support,
<a href="http://giflib.sourceforge.net/">http://giflib.sourceforge.net/</a>
</p>
</li><li>- <em>WebP</em> 0.4.1 or newer
<p>The reference library from <em>Google</em> for their image format,
<a href="https://developers.google.com/speed/webp/download">https://developers.google.com/speed/webp/download</a>
</p>
</li><li>- <em>GNU xgettext</em>
<p>If you want to use translated messages, you will need <em>GNU gettext</em>.
Other versions of <em>gettext</em> are not compatible and will not work.
Get the <em>GNU</em> version from <a href="http://www.gnu.org/software/gettext/">http://www.gnu.org/software/gettext/</a>
</p>
</li><li>- <em>Pango</em> 1.36.8 or newer
<p>This library can be used by the <em>WINGs</em> toolkit to improve support for <em>UTF-8</em> and for
languages written in right-to-left direction, in some widgets.
You have to explicitly ask for its support through (see <a href="#Configure-Options">Configure Options</a>).
You can get it from <a href="http://www.pango.org/Download">http://www.pango.org/Download</a>
</p>
</li><li>- <em>libbsd</em>
<p>This library can be used by the <em>WINGs</em> utility library to make use of <code>strlcat</code> and
<code>strlcpy</code> instead of using built-in functions if your system does not provide them in its
core <em>libc</em>.
You should let <small>WINDOW MAKER</small>&rsquo;s <code>configure</code> detect this for you.
You can get it from <a href="http://libbsd.freedesktop.org/wiki/">http://libbsd.freedesktop.org/wiki/</a>
</p>
</li><li>- <em>Inotify</em>
<p>If you have Linux&rsquo;s <em>inotify</em> support, <small>WINDOW MAKER</small> will use it to check for configuration
updates instead of polling regularly the file.
The needed header comes with the kernel, typical packages names include:
</p><ul>
<li> <samp>kernel-headers</samp> for <em>Slackware</em> and <em>Fedora</em>
</li><li> <samp>linux-userspace-headers</samp> for <em>Mageia</em>
</li><li> <samp>linux-libc-dev</samp> for <em>Debian</em> and <em>Ubuntu</em>
</li><li> <samp>linux-glibc-devel</samp> for <em>OpenSuSE</em>
</li></ul>
</li><li>- <em>MagickWand</em> 6.8.9-9 or newer
<p>If found, then the library <em>WRaster</em> can use the <em>ImageMagick</em> library to let
<small>WINDOW MAKER</small> support more image formats, like <em>SVG</em>, <em>BMP</em>, <em>TGA</em>, ...
You can get it from <a href="http://www.imagemagick.org/">http://www.imagemagick.org/</a>
</p>
</li><li>- <em>Boehm GC</em>
<p>This library can be used by the <em>WINGs</em> utility toolkit to use a
<cite>Boehm-Demers-Weiser Garbage Collector</cite> instead of the traditional
<code>malloc</code>/<code>free</code> functions from the <em>libc</em>.
You have to explicitly ask for its support though (see <a href="#Configure-Options">Configure Options</a>).
You can get it from <a href="http://www.hboehm.info/gc/">http://www.hboehm.info/gc/</a>
</p>
</li></ul>
<hr>
<a name="Building-Window-Maker"></a>
<a name="Building-WINDOW-MAKER"></a>
<h2 class="chapter">2 Building <small>WINDOW MAKER</small></h2>
<a name="Getting-the-Sources"></a>
<h3 class="section">2.1 Getting the Sources</h3>
<p>The latest version of <small>WINDOW MAKER</small> (<tt>-crm</tt>) can be downloaded from
<a href="http://www.windowmaker.org/">http://www.windowmaker.org/</a>
</p>
<p>Alternatively, the development branch, called <tt>#next</tt> is in the <em>git</em> repository at
<a href="http://repo.or.cz/w/wmaker-crm.git">http://repo.or.cz/w/wmaker-crm.git</a>
</p>
<p>If you want to use the <em>git</em> versions, you can get it with:
</p><div class="example">
<pre class="example">git clone -b next git://repo.or.cz/wmaker-crm.git
</pre></div>
<p>then, assuming you have the dependencies listed in <a href="#Special-Dependencies">Special Dependencies</a>, you have to
type:
</p><div class="example">
<pre class="example">./autogen.sh
</pre></div>
<p>to generate the configuration script.
</p>
<a name="Build-and-Install"></a>
<h3 class="section">2.2 Build and Install</h3>
<p>For a quick start, type the following in your shell prompt:
</p>
<div class="example">
<pre class="example">./configure
make
</pre></div>
<p>then, login as <em>root</em> and type:
</p>
<div class="example">
<pre class="example">make install
ldconfig
</pre></div>
<p>or if you want to strip the debugging symbols from the binaries to make them smaller,
you can type instead:
</p>
<div class="example">
<pre class="example">make install-strip
ldconfig
</pre></div>
<p>This will build and install <small>WINDOW MAKER</small> with default parameters.
</p>
<p>If you want to customise some compile-time options, you can do the following:
</p>
<ol>
<li> (optional) Look at the <a href="#Configure-Options">Configure Options</a>, for the options available.
Also run:
<div class="example">
<pre class="example">./configure --help
</pre></div>
<p>to get a complete list of options that are available.
</p>
</li><li> Run configure with the options you want.
For example, if you want to use the <samp>--enable-modelock</samp> option, type:
<div class="example">
<pre class="example">./configure --enable-modelock
</pre></div>
</li><li> (optional) Edit <samp>src/wconfig.h</samp> with your favourite text editor and browse through it for some
options you might want to change.
</li><li> Compile. Just type:
<div class="example">
<pre class="example">make
</pre></div>
</li><li> Login as root (if you can&rsquo;t do that, read the <a href="#No-Root-Password">I don&rsquo;t have the <em>root</em> password</a>)
and install <small>WINDOW MAKER</small> in your system:
<div class="example">
<pre class="example">su root
make install
</pre></div>
</li></ol>
<a name="User-specific-configuration"></a>
<h3 class="section">2.3 User specific configuration</h3>
<p>These instructions do not need to be followed when upgrading <small>WINDOW MAKER</small>
from an older version, unless stated differently in the <cite>NEWS</cite> file.
</p>
<p>Every user on your system that wishes to run <small>WINDOW MAKER</small> must do the
following:
</p>
<ol>
<li> Install Window Maker configuration files in your home directory.
Type:
<div class="example">
<pre class="example">wmaker.inst
</pre></div>
<p><code>wmaker.inst</code> will install <small>WINDOW MAKER</small> configuration files and will
setup X to automatically launch <small>WINDOW MAKER</small> at startup.
</p>
</li></ol>
<p>That&rsquo;s it!
</p>
<p>You can type <code>man wmaker</code> to get some general help for configuration
and other stuff.
</p>
<p>Read the <cite>User Guide</cite> for a more in-depth explanation of <small>WINDOW MAKER</small>.
</p>
<p>You might want to take a look at the <cite>FAQ</cite> too.
</p>
<a name="Locales_002fInternationalisation"></a>
<h3 class="section">2.4 Locales/Internationalisation</h3>
<p><small>WINDOW MAKER</small> has national language support. The procedure to enable national
language support is described in the dedicated
<a href="wmaker_i18n.html#Enabling-Languages-support">Enabling Languages support</a> in <cite><samp>README.i18n</samp></cite>.
</p>
<a name="Configure-Options-1"></a>
<h3 class="section">2.5 Configure Options</h3>
<a name="Configure-Options"></a>
<p>These options can be passed to the configure script to enable/disable
some <small>WINDOW MAKER</small> features. Example:
</p><div class="example">
<pre class="example">./configure --enable-modelock --disable-gif
</pre></div>
<p>will configure <small>WINDOW MAKER</small> with <em>modelock</em> supported and disable <em>gif</em> support.
Normally, you won&rsquo;t need any of them.
</p>
<p>To get the list of all options, run <code>./configure --help</code>
</p>
<a name="Installation-Directory"></a>
<h4 class="subsection">2.5.1 Installation Directory</h4>
<p>The default installation path will be in the <samp>/usr/local</samp> hierarchy;
a number of option can customise this:
</p>
<dl compact="compact">
<dt><samp>--prefix=<i>PREFIX</i></samp></dt>
<dt><samp>--exec-prefix=<i>EPREFIX</i></samp></dt>
<dt><samp>--bindir=<i>DIR</i></samp></dt>
<dt><samp>--sysconfdir=<i>DIR</i></samp></dt>
<dt><samp>--libdir=<i>DIR</i></samp></dt>
<dt><samp>--includedir=<i>DIR</i></samp></dt>
<dt><samp>--datarootdir=<i>DIR</i></samp></dt>
<dt><samp>--datadir=<i>DIR</i></samp></dt>
<dt><samp>--localedir=<i>DIR</i></samp></dt>
<dt><samp>--mandir=<i>DIR</i></samp></dt>
<dd><p>Standard options from <em>autoconf</em> to define target paths,
you probably want to read <a href="INSTALL.html#Installation-Names">Installation Names</a> in <cite><samp>INSTALL</samp></cite>.
</p>
</dd>
<dt><samp>--sbindir=<i>DIR</i></samp></dt>
<dt><samp>--libexecdir=<i>DIR</i></samp></dt>
<dt><samp>--sharedstatedir=<i>DIR</i></samp></dt>
<dt><samp>--localstatedir=<i>DIR</i></samp></dt>
<dt><samp>--oldincludedir=<i>DIR</i></samp></dt>
<dt><samp>--infodir=<i>DIR</i></samp></dt>
<dt><samp>--docdir=<i>DIR</i></samp></dt>
<dt><samp>--htmldir=<i>DIR</i></samp></dt>
<dt><samp>--dvidir=<i>DIR</i></samp></dt>
<dt><samp>--pdfdir=<i>DIR</i></samp></dt>
<dt><samp>--psdir=<i>DIR</i></samp></dt>
<dd><p>More standard options from <em>autoconf</em>, today these are not used by <small>WINDOW MAKER</small>;
they are provided automatically by <em>autoconf</em> for consistency.
</p>
</dd>
<dt><samp>--with-gnustepdir=<i>PATH</i></samp></dt>
<dd><p>Specific to <small>WINDOW MAKER</small>, defines the directory where <samp>WPrefs.app</samp> will be installed,
if you want to install it like a <em>GNUstep</em> applications.
If not specified, it will be installed like usual programs.
</p>
</dd>
<dt><samp>--with-pixmapdir=<i>DIR</i></samp></dt>
<dd><p>Specific to <small>WINDOW MAKER</small>, this option defines an additional path where <em>pixmaps</em> will be
searched. Nothing will be installed there; the default path taken is <samp><em>DATADIR</em>/pixmaps</samp>,
where <var>DATADIR</var> is the path defined from <samp>--datadir</samp>.
</p>
</dd>
<dt><samp>--with-defsdatadir=<i>DIR</i></samp></dt>
<dd><p>Specific to <small>WINDOW MAKER</small>, defines the directory where system configuration
files, e.g., <samp>WindowMaker</samp>, <samp>WMRootMenu</samp>, etc., are installed. The
default value is <samp><em>SYSCONFDIR</em>/WindowMaker</samp>, where <var>SYSCONFDIR</var> is
the path defined from <samp>--sysconfdir</samp>.
</p>
</dd>
</dl>
<a name="External-Libraries"></a>
<h4 class="subsection">2.5.2 External Libraries</h4>
<p>Unless specifically written, <code>configure</code> will try to detect automatically for the libraries;
if you explicitly provide <samp>--enable-<em>FEATURE</em></samp> then it will break with an error message
if the library cannot be linked;
if you specify <samp>--disable-<em>FEATURE</em></samp> then it will not try to search for the library.
You can find more information about the libraries in the
<a href="#Optional-Dependencies">Optional Dependencies</a>.
</p>
<dl compact="compact">
<dt><samp>--enable-boehm-gc</samp></dt>
<dd><p>Never enabled by default, use Boehm GC instead of the default <em>libc</em> <code>malloc()</code>
</p>
</dd>
<dt><samp>--disable-gif</samp></dt>
<dd><p>Disable GIF support in <em>WRaster</em> library; when enabled use <samp>libgif</samp> or <samp>libungif</samp>.
</p>
</dd>
<dt><samp>--disable-jpeg</samp></dt>
<dd><p>Disable JPEG support in <em>WRaster</em> library; when enabled use <samp>libjpeg</samp>.
</p>
</dd>
<dt><samp>--without-libbsd</samp></dt>
<dd><p>Refuse use of the <samp>libbsd</samp> compatibility library in <em>WINGs</em> utility library,
even if your system provides it.
</p>
</dd>
<dt><samp>--disable-magick</samp></dt>
<dd><p>Disable <em>ImageMagick&rsquo;s MagickWand</em> support in <em>WRaster</em>, used to support for image formats.
</p>
</dd>
<dt><samp>--enable-pango</samp></dt>
<dd><p>Disabled by default, enable <em>Pango</em> text layout support in <em>WINGs</em>.
</p>
</dd>
<dt><samp>--disable-png</samp></dt>
<dd><p>Disable PNG support in <em>WRaster</em>; when enabled use <samp>libpng</samp>.
</p>
</dd>
<dt><samp>--disable-tiff</samp></dt>
<dd><p>Disable TIFF support in <em>WRaster</em>. when enabled use <samp>libtiff</samp>.
</p>
</dd>
<dt><samp>--disable-webp</samp></dt>
<dd><p>Disable WEBP support in <em>WRaster</em>. when enabled use <samp>libwebp</samp>.
</p>
</dd>
<dt><samp>--disable-xpm</samp></dt>
<dd><p>Disable use of <samp>libXpm</samp> for XPM support in <em>WRaster</em>, use internal code instead.
</p>
</dd>
</dl>
<p>The following options can be used to tell <code>configure</code> about extra paths that needs to be
used when compiling against libraries:
</p>
<dl compact="compact">
<dt><samp>--with-libs-from</samp></dt>
<dd><p>specify additional paths for libraries to be searched.
The <samp>-L</samp> flag must precede each path, like:
</p><div class="example">
<pre class="example">--with-libs-from=&quot;-L/opt/libs -L/usr/local/lib&quot;
</pre></div>
</dd>
<dt><samp>--with-incs-from</samp></dt>
<dd><p>specify additional paths for header files to be searched.
The <samp>-I</samp> flag must precede each paths, like:
</p><div class="example">
<pre class="example">--with-incs-from=&quot;-I/opt/headers -I/usr/local/include&quot;
</pre></div>
</dd>
</dl>
<a name="X11-and-Extensions"></a>
<h4 class="subsection">2.5.3 X11 and Extensions</h4>
<p><code>configure</code> will try to detect automatically the compilation paths for X11 headers and
libraries, and which X Extensions support can be enabled.
if you explicitly provide <samp>--enable-<em>FEATURE</em></samp> then it will break with an error message
if the extension cannot be used;
if you specify <samp>--disable-<em>FEATURE</em></samp> then it will not check for the extension.
</p>
<dl compact="compact">
<dt><samp>--x-includes=<i>DIR</i></samp></dt>
<dt><samp>--x-libraries=<i>DIR</i></samp></dt>
<dd><p><em>Autoconf</em>&rsquo;s option to specify search paths for <em>X11</em>,
for the case were it would not have been able to detect it automatically.
</p>
</dd>
<dt><samp>--disable-xlocale</samp></dt>
<dd><p>If you activated support for Native Languages, then <em>X11</em> may use a hack to also configure its
locale support when the program configure the locale for itself.
The <code>configure</code> script detects if the <em>Xlib</em> supports this or not;
this options explicitly disable this initialisation mechanism.
</p>
</dd>
<dt><samp>--enable-modelock</samp></dt>
<dd><p>XKB language status lock support. If you don&rsquo;t know what it is you probably don&rsquo;t need it.
The default is to not enable it.
</p>
</dd>
<dt><samp>--disable-shm</samp></dt>
<dd><p>Disable use of the <em>MIT shared memory</em> extension.
This will slow down texture generation a little bit, but in some cases it seems to be necessary due
to a bug that manifests as messed icons and textures.
</p>
</dd>
<dt><samp>--disable-shape</samp></dt>
<dd><p>Disables support for <em>shaped</em> windows (for <code>oclock</code>, <code>xeyes</code>, etc.).
</p>
</dd>
<dt><samp>--enable-xinerama</samp></dt>
<dd><p>The <em>Xinerama</em> extension provides information about the different screens connected when
running a multi-head setting (if you plug more than one monitor).
</p>
</dd>
<dt><samp>--enable-randr</samp></dt>
<dd><p>The <em>RandR</em> extension provides feedback when changing the multiple-monitor configuration in X11
and allows to re-configure how screens are organised.
</p>
<p>At current time, it is not enabled by default because it is NOT recommended (buggy);
<small>WINDOW MAKER</small> only restart itself when the configuration change, to take into account the new
screen size.
</p>
</dd>
</dl>
<a name="Feature-Selection"></a>
<h4 class="subsection">2.5.4 Feature Selection</h4>
<dl compact="compact">
<dt><samp>--disable-animations</samp></dt>
<dd><p>Disable animations permanently, by not compiling the corresponding code into <small>WINDOW MAKER</small>.
When enabled (the default), you still have a run-time configuration option in <em>WPrefs</em>.
</p>
</dd>
<dt><samp>--disable-mwm-hints</samp></dt>
<dd><p>Disable support for Motif&rsquo;s MWM Window Manager hints.
These attributes were introduced by the Motif toolkit to ask for special window appearance requests.
Nowadays this is covered by the NetWM/EWMH specification, but there are still applications that rely on MWM Hints.
</p>
</dd>
<dt><samp>--enable-wmreplace</samp></dt>
<dd><p>Add support for the <em>ICCCM</em> protocol for cooperative window manager replacement.
This feature is disabled by default because you probably don&rsquo;t need to switch seamlessly the window manager;
if you are making a package for a distribution you&rsquo;d probably want to enable this because it allows users to give
a try to different window managers without restarting everything for an extra cost that is not really big.
</p>
</dd>
<dt><samp>--disable-xdnd</samp></dt>
<dd><p>Disable support for dragging and dropping files on the dock, which launches a user-specified command
with that file.
Starting from version 0.65.6 this feature is enabled by default.
</p>
</dd>
<dt><samp>--enable-ld-version-script</samp></dt>
<dd><p>This feature is auto-detected, and you should not use this option.
When compiling a library (<samp>wrlib</samp>, ...), <em>gcc</em> has the possibility to filter the list of
functions that will be visible, to keep only the public API, because it helps running programs
faster.
</p>
<p>The <code>configure</code> script checks if this feature is available;
if you specify this option it will not check anymore and blindly trust you that it is supposed to
work, which is not a good idea as you may encounter problems later when compiling.
</p>
</dd>
<dt><samp>--enable-usermenu</samp></dt>
<dd><p>This feature, disabled by default, allows to add a user-defined custom menu to applications;
when choosing an entry of the menu it will send the key combination defined by the user to that
application. See <a href="NEWS.html#Application-User-Menu">Application User Menu</a> in <cite><samp>NEWS</samp></cite> for more information.
</p>
</dd>
<dt><samp>--with-menu-textdomain=<i>DOMAIN</i></samp></dt>
<dd><p>Selection of the domain used for translation of the menus;
see <a href="wmaker_i18n.html#Translations-for-Menus">Translations for Menus</a> in <cite><samp>README.i18n</samp></cite>.
</p>
</dd>
</dl>
<a name="Developer-Stuff"></a>
<h4 class="subsection">2.5.5 Developer Stuff</h4>
<p>These options are disabled by default:
</p>
<dl compact="compact">
<dt><samp>--config-cache</samp></dt>
<dd><p>If you intend to re-run the <code>configure</code> script often, you probably want to include this
option, so it will save and re-use the status of what have been detected in the file
<samp>config.cache</samp>.
</p>
</dd>
<dt><samp>--enable-debug</samp></dt>
<dd><p>Enable debugging features (debug symbol, some extra verbosity and checks) and add a number of
check flags (warnings) for the compiler (in <em>gcc</em> fashion).
</p>
</dd>
<dt><samp>--enable-lcov=<i>DIRECTORY</i></samp></dt>
<dd><p>Enable generation of code coverage and profiling data;
if the <samp><i>DIRECTORY</i></samp> is not specified, use <samp>coverage-report</samp>.
</p>
<p>This option was meant to be use with <em>gcc</em>;
it was not used recently so it is probable that is does not work anymore;
the <code>configure</code> script will not even check that your compiling environment has the
appropriate requirements and works with this.
Despite all this, if you think there&rsquo;s a use for it and feel in the mood to help, do not hesitate to
discuss on the mailing list <a href="mailto:wmaker-dev@lists.windowmaker.org">wmaker-dev@lists.windowmaker.org</a> to get it working.
</p>
</dd>
</dl>
<hr>
<a name="Miscellaneous"></a>
<a name="Miscellaneous-1"></a>
<h2 class="chapter">3 Miscellaneous</h2>
<a name="Platform-Specific-Notes"></a>
<h3 class="section">3.1 Platform Specific Notes</h3>
<ul class="no-bullet">
<li>- <em>GNU/Linux</em> in general
<p>Make sure you have <samp>/usr/local/lib</samp> in <samp>/etc/ld.so.conf</samp> and that you
run <code>ldconfig</code> after installing.
Uninstall any packaged version of <small>WINDOW MAKER</small> before installing a new version.
</p>
</li><li>- <em>RedHat GNU/Linux</em>
<p><em>RedHat</em> systems have several annoying problems.
If you use it, be sure to follow the steps below or <small>WINDOW MAKER</small> will not work:
</p>
<ul>
<li> if you installed the <small>WINDOW MAKER</small> that comes with <em>RedHat</em>, uninstall it before upgrading;
</li><li> make sure you have <samp>/usr/local/bin</samp> in your <code>PATH</code> environment variable;
</li><li> make sure you have <samp>/usr/local/lib</samp> in <samp>/etc/ld.so.conf</samp> before running <code>ldconfig</code>;
</li></ul>
</li><li>- <em>PowerPC MkLinux</em>
<p>You will need to have the latest version of <em>Xpmac</em>.
Older versions seem to have bugs that cause the system to hang.
</p>
</li><li>- <em>Debian GNU/Linux</em>
<p>If you want <em>JPEG</em> and <em>TIFF</em> support, make sure you have <samp>libtiff-dev</samp>
and <samp>libjpeg-dev</samp> installed.
</p>
</li><li>- <em>SuSE GNU/Linux</em>
<p>If you installed the <small>WINDOW MAKER</small> package from <em>SuSE</em>, uninstall it before trying to
compile <em>Window Maker</em> or you might have problems.
</p>
</li><li>- <em>MetroX</em> (unknown version)
<p><em>MetroX</em> has a bug that corrupts pixmaps that are set as window backgrounds.
If you use <em>MetroX</em> and have weird problems with textures, do not use textures in title bars.
Or use a different X server.
</p>
</li></ul>
<a name="I-don_0027t-have-the-root-password-_003a_0028"></a>
<h3 class="section">3.2 I don&rsquo;t have the <em>root</em> password :(</h3>
<a name="No-Root-Password"></a>
<p>If you can&rsquo;t get superuser privileges (can&rsquo;t be <i>root</i>) you can install <em>Window Maker</em> in your own
home directory.
For that, supply the <samp>--prefix</samp> option when running configure in step 2 of building
<small>WINDOW MAKER</small>.
You will also need to supply the <samp>--with-gnustepdir</samp> option, to specify the path for
<code>WPrefs.app</code>.
Example:
</p>
<div class="example">
<pre class="example">./configure --prefix=/home/jshmoe --with-gnustepdir=/home/jshmoe/GNUstep/Applications
</pre></div>
<p>Then make <samp>/home/jshmoe/bin</samp> be included in your search <code>PATH</code>, add <samp>/home/jshmoe/lib</samp>
to your <code>LD_LIBRARY_PATH</code> environment variable and run <code>bin/wmaker.inst</code>
</p>
<p>Of course, <samp>/home/jshmoe</samp> is supposed to be replaced by your actual home directory path.
</p>
<a name="Upgrading"></a>
<h3 class="section">3.3 Upgrading</h3>
<p>If you are upgrading from an older version of <small>WINDOW MAKER</small>:
</p>
<ol>
<li> Configure and build <small>WINDOW MAKER</small> as always
</li><li> Install <small>WINDOW MAKER</small> (but do not run <code>wmaker.inst</code>)
</li><li> Read the <cite>NEWS</cite> file and update your configuration files if necessary.
</li></ol>
<hr>
<a name="Troubleshooting"></a>
<a name="Troubleshooting-1"></a>
<h2 class="chapter">4 Troubleshooting</h2>
<p>When you have some trouble during configuration (while running configure), like not being able to
use a graphic format library you think you have installed, look at the <samp>config.log</samp> file for
clues of the problem.
</p>
<a name="Error-with-loading-fonts_002c-even-if-they-exist"></a>
<h3 class="section">4.1 Error with loading fonts, even if they exist</h3>
<p>This is probably a problem with NLS (Native Language Support), you probably want to look at the
<a href="wmaker_i18n.html#Troubleshooting">Troubleshooting</a> in <cite><samp>README.i18n</samp></cite>
or try rebuilding without NLS support, which is done with:
</p><div class="example">
<pre class="example">./configure LINGUAS=&quot;&quot;
</pre></div>
<a name="configure-doesn_0027t-detect-libtiff_002c-or-other-graphic-libraries"></a>
<h3 class="section">4.2 configure doesn&rsquo;t detect <em>libtiff</em>, or other graphic libraries</h3>
<p>Delete <samp>config.cache</samp>, then rerun configure adding the following options to <code>configure</code>
(among the other options you use):
</p><div class="example">
<pre class="example">--with-libs-from=&quot;-L/usr/local/lib&quot;
--with-incs-from=&quot;-I/usr/local/include -I/usr/local/include/tiff&quot;
</pre></div>
<p>Put the paths where your graphic libs and their corresponding header files are located.
You can put multiple paths in any of these options, as the example of <samp>--with-incs-from</samp> shows.
Just put a space between them.
</p>
<a name="configure-doesn_0027t-detect-libXpm"></a>
<h3 class="section">4.3 configure doesn&rsquo;t detect <em>libXpm</em></h3>
<p>Check if you have a symbolic link from <samp>libXpm.so.4.9</samp> to <samp>libXpm.so</samp>
</p>
<a name="Segmentation-fault-on-startup"></a>
<h3 class="section">4.4 Segmentation fault on startup</h3>
<ul>
<li> Check if the version of <em>libXPM</em> you have is at least 4.7
</li><li> Check if you have an updated version of <samp>~/GNUstep/Defaults/WindowMaker</samp>
</li></ul>
<p>If you&rsquo;re not sure, try renaming <samp>~/GNUstep</samp> to <samp>~/GNUtmp</samp>
and then run <code>wmaker.inst</code>
</p>
<a name="g_t_0022_002e_002e_002e_003a-your-machine-is-misconfigured_002e-gethostname_0028_0029-returned-_0028none_0029_0022"></a>
<h3 class="section">4.5 &quot;...: your machine is misconfigured. gethostname() returned (none)&quot;</h3>
<p>the host name of your machine is set to something invalid, that starts with a parenthesis.
Do a <code>man hostname</code> for info about how to set it.
</p>
<a name="The-root-menu-contains-only-2-entries_002e-_0028_0022XTerm_0022-and-_0022Exit_002e_002e_002e_0022_0029"></a>
<h3 class="section">4.6 The root menu contains only 2 entries. (&quot;XTerm&quot; and &quot;Exit...&quot;)</h3>
<p><small>WINDOW MAKER</small> could not read your menu definition file.
You should check the output of <code>wmaker</code> for an error, it may be visible in the console or in the
<samp>.xsession-errors</samp> file.
</p>
<hr>
</body>
</html>