2.1 Where can I get libPropList?

My first hint would be to look through the documentation a little more closely.

LibPropList is no longer distributed with Window Maker. You can get it at ftp://ftp.windowmaker.org/pub/libs/ or here on my site.


2.2 Why do no icons show up after installing Window Maker >= 0.15.x when I've followed all the directions?

According to Dan Pascu should not happen because Window Maker should detect if libtiff is going to be compiled in and then it will make the default theme based around .xpm instead of .tif.

As of Window Maker version 0.15.0, the default setup includes .tiff icons which require you to have compiled Window Maker with libtiff support. For some help on compiling with libtiff, have a look at at the libtiff section of this FAQ.


2.3 How do I get libtiff to work?

The whole key to getting libtiff working for me was to upgrade to >= tiff-v3.4beta037-tar.gz availible at ftp.sgi.com.

Rerun ./configure and make and it should work. I had previously been using tiff-v3.4-tar.gz instead so the library was there just not working. A note to keep in mind, is that the tiff libs are versioned rather oddly, version tiff-v3.4beta037 is actually newer than tiff-v3.4.

Make sure to rm config.cache and rerun ./configure before attempting to compile again.

Also, make sure to use gnu-make for the Window Maker compile.


2.4 How do I get libjpeg to work?

The newest jpeg libs are availible at ftp://ftp.uu.net/graphics/jpeg/.

How many of you have seen that darned "lib reports 62 caller expects 61" type of error?
Well, I have more than once, and here are some answers to possibly help you out.

First things first. As always, make sure there are not older copies of libjpeg floating around on your system. By default my Slackware distribution came with an old libjpeg.so.1 in the /usr/X11R6/lib/ directory. This can simply be deleted. Or if something complains after you delete it, recompile it if you can to look for the new lib in the right place, or if that fails, as a last resort, you might add a symlink to the new lib like so:
ln -s /usr/local/lib/libjpeg.so.6.0.2 libjpeg.so.1

Now on to the error.
This is basically caused by your application having been compiled to dynamically use the libjpeg.so shared library. When you install a new lib and then try to run your program again, it expects the lib it was compiled against, in this case the older libjpeg.so.6.0.1 and instead finds libjpeg.so.6.0.2 and reports the error.

The fix is actually rather simple. Along with adding a libjpeg.so.6 symlink like so (just in case):
ln -s libjpeg.so.6.0.2 libjpeg.so.6
where you installed your new lib, you simply need to recompile your app to link it against the new library. :)

Make sure to rm config.cache and rerun ./configure before attempting to compile again.

Also, make sure to use gnu-make for the Window Maker compile.


2.5 How do I get libpng to work?

The newest png libs are availible at
http://www.cdrom.com/pub/png/pngcode.html.

You should also get the newest zlib libs from
http://www.cdrom.com/pub/infozip/zlib/.

I had a few problems with this lib as well, basically I had an old libz.so in my /usr/X11R6/lib/ directory which configure was finding first, and which failed the test, being an older lib.

Generally the same applies here as with libjpeg, make sure there are no older versions of the necessary libs floating around on your system, then try and configure and make again.

Make sure to rm config.cache and rerun ./configure before attempting to compile again.

Also, make sure to use gnu-make for the Window Maker compile.


2.6 How do I get libgif (or libungif) to work?

The newest libgif is availible at
ftp://sunsite.unc.edu/pub/Linux/libs/giflib/.

The newest libungif is availible at
ftp://sunsite.unc.edu/pub/Linux/libs/graphics/.

I had a few problems with libgif... it seems that the install process didn't install the header file libgif.h, so although the Window Maker configure found the lib (libgif.so.x), when you actually try to compile, it fails when it looks for the header to include the make. I simply copied it from the libgif source directory to the system include directory. (/usr/local/include/ on my system).

Make sure to rm config.cache and rerun ./configure before attempting to compile again.

Also, make sure to use gnu-make for the Window Maker compile.


2.7 Does wmsound work with 0.xx.x?

As of Window Maker 0.15.x, sound is now included by default but requires the authors sound server. For more information, read the NEWS file in the Window Maker distribution.

The author Anthony Quinn has released a version that works with Window Maker 0.15.x ~ 0.5x.x. It is available from it's home page at http://www.frontiernet.net/~southgat/wmsound/ or here on my site for your convenience.

However... Window Maker versions above 0.6x.x do NOT work with WMSound... you need to get WSoundServer and WSoundPrefs from Pascal Hoffstee's site at http://shadowmere.student.utwente.nl/
WMSound is no longer supported and no longer functions with the latest versions of Window Maker.


2.8 Can I use WindowMaker with KDE or GNOME or CDE?

Contrary to a lot of people thinks, KDE is NOT a window manager. KDE is a suite of various applications that includes a custom window manager. The same is true for CDE.

Now, answering the question: Yes, you can use WindowMaker in these environments. To use Window Maker with GNOME, you don't need to do anything special. To use it with CDE, read the answer for "How do I switch CDE's windowmanager to use Window Maker?"

To use it with KDE, read it's documentation to get rid of kwm (and possibly kpanel) and replace it with wmaker. Then, start WPrefs.app, go to "Mouse Preferences" and set the "Disable mouse actions" check box. You will need to restart Window Maker to make this change take effect. The "Disable mouse actions" change is needed to allow you to use krootwm, wich enables you to use kfm's desktop icons, but will prevent you from accessing Window Maker's Applications and Window List menus with the mouse.


2.9 How do I get Window Maker working with xdm in Redhat 5.[01]?

After running wmaker.inst and letting it write to .xinitrc, cp .xinitrc .xsession and make sure that /usr/local/bin is in your $PATH for the Xserver. You can make sure of this by including a statement like

export PATH=$PATH:/usr/local/bin 
          
in your .xsession file.

Make sure to chmod +x .xsession so that the Xsession script of xdm can execute it.

This is how the Xsession script is designed:

startup=$HOME/.xsession

            if [ -x "$startup" ]; then
                    exec "$startup"
	    elif [ -x "$HOME/.Xclients" ]; then
                    exec "$HOME/.Xclients"
            elif [ -x /etc/X11/xinit/Xclients ]; then
                    exec /etc/X11/xinit/Xclients
            else
                    if [ -f "$resources" ]; then
                            xrdb -load "$resources"
                    fi
                    exec xsm
            fi
          
You could also have a .Xclients file as was mentioned in previous revisions of this question.


2.10 Do I need to rerun wmaker.inst with every new version of Window Maker?

Dan Pascu reveals the answer:

When the user will need to run wmaker.inst again in a new release of wmaker, we will write that down in the NEWS file.
(as I've done in 0.15.0).

The way domain files are read beginning from 0.15.0 makes this redundant. The user config files are merged with the global ones in /usr/local/share/WindowMaker/Defaults.
So even if new options are added, they will reflect in the user configuration.

Only if user wishes to change the default behavior, he needs to add that option to the config file.


2.11 When I install Window Maker, I've used wmaker.inst correctly and I only get aroot menu with xterm and exit. How do I fix this?

Most likely, the problem is that Window Maker can not find a copy of the C preprocessor in a directory such as /lib. The file /lib/cpp should be a symbolic link to whatever c compiler's cpp you are using. Mine reads as:

cpp -> ../usr/lib/gcc-lib/i586-pc-linux-gnu/pgcc-2.90.29/cpp*

Another possibility is that your /usr/X11/lib/X11/xinit/xinitrc is a broken symlink.
Either create a proper new one, or do something like:

$ cp /usr/X11/lib/X11/xinit/xinitrc.fvwm2 /usr/X11/lib/X11/xinit/xinitrc.wmaker

$ ln -sf /usr/X11/lib/X11/xinit/xinitrc.wmaker /usr/X11/lib/X11/xinit/xinitrc

then just edit /usr/X11/lib/X11/xinit/xinitrc and replace the exec of 'fvwm2' by '/usr/local/bin/wmaker' (should be somewhere towards the end of the file, most probably the very last line).

Thanks to Tomas Szepe <kala@dragon.cz> for the second part.

There seems to be another common problem that exhibits this same behavior. If you find another solution that matches this question please email <sprout@dok.org> or <largo@current.nu>.


2.12 How do I get Window Maker to use more than 16 colors on my SGI Indy Workstation?

Thanks to Peter H. Chou <pchou@leland.Stanford.EDU> for this answer:

By default, the SGI X Server uses 8-bit Pseudocolor mode.
To change it, edit (as root) the file /usr/lib/X11/xdm/Xservers.
Change it to read:

:0 secure /usr/bin/X11/X -bs -c -class TrueColor -depth 24


2.13 Using WindowMaker with Solaris 2.6 CDE

(thanks to Rob Funk, Unix God of osu.edu)

Assuming you installed Window Maker according to the README's that come with the source, all you need to run Window Maker on a Solaris box is an entry in the .xinitrc. Only 0.17 - 0.19 versions have been tested, but when you run the configure script, let it make changes to the .xinitrc file. It should look something like this:

#!/bin/sh
            # Window Maker Default .xinitrc
            exec /usr/local/bin/wmaker
          
Believe it or not, that's all that it takes. This, in fact, runs WindowMaker instead of OpenWindows. In order to choose WindowMaker, you simply choose "OpenWindows Desktop" in the "Options - Session" Menus. Choose "CDE Desktop" if you want CDE.

The Color schemes and settings for Window Maker are seperate from CDE. Tested on a SPARC 10, Solaris x86 should work also. (better, hopefully)


2.14 How do I switch CDE's window-manager to use Window Maker?

Method 1:

Peter Ilberg <peter.ilberg@natinst.com> gives us this answer:

Install WM wherever you want it, mine is in /opt/WindowMaker-0.16.0
(eg. use ./configure --prefix=/opt/WindowMaker-0.16.0).
Run the install script wmaker.inst in your home directory.

Add the following two lines to .dtprofile in your home directory:

SESSIONTYPE=xdm; export SESSIONTYPE
PATH=:/usr/contrib/bin/X11:$PATH:.; export PATH

This tells CDE to go looking for an .xinitrc/.xsession instead of using the default environment.

Make your .xsession/.xinitrc executable (VERY IMPORTANT, wmaker.inst did NOT do this automatically for me) using eg.

chmod ugo+x .xsession

Your .xsession/.xinitrc should look something like this:

#!/bin/sh
<some other init stuff that you want/need>
exec wmaker


Things to try if it doesn't work: (somewhat fuzzy and random)

This should do it although I did have problems sometimes initially which I fixed by randomly trying absolute pathes for wmaker in .xsession/.xinitrc and/or making the dtprofile/.xinitrc/etc executable. It helps logging in on the console (select from CDE login screen) and start X manually using 'X'.
If it works that way it should work when logging into the CDE environment.
Remember to Check your paths!

If it doesn't work, you can also substitute some other window manager for wmaker in the .xinitrc and see if that works. If it does you know at least that .xinitrc is getting called/executed, so your WM path is wrong or not set.


Method 2:

Thomas Hanselman gave this alternative answer (via Peter Ilberg):

Build and install WM wherever you want, as described in Method 1. You can install and run WM just fine from your home directory. That's what I'm doing, since I don't have root access at work :(. Then, in your .Xdefaults file in your home directory, add the following line:

Dtsession*wmStartupCommand: <path to Window Maker executable>

Then, log out, and log back in, and, unless I've forgotten a step (or this is a custom Nortel thing), you should be in Window Maker heaven ;).

Difference between the methods: (according to Thomas)

I've been told that the difference between setting the resource and Peter's method is that if you override the window manager with the resouce, you still get the CDE resources read into the resource database (so you still have your color settings & such from CDE), whereas with Peter's, the CDE resource don't get read into the database. I don't know if this is true or not, however. Also, another thing to note with Window Maker and HP-UX 10.20 -- if you select "Exit Session" from the WM root menu, Window Maker and all of your applications are killed, but you may not be logged out. Again, this might be an artifact from my work environment, or the way I start Window Maker.

Owen Stenseth adds:

When using this method it is possible to exit Window Maker cleanly by using the dtaction command. I use the following in my Window Maker menu:

"Exit Session"      EXEC dtaction ExitSession

The only problem I have at the moment is I seem to get multiple copies of asclock running when I log in again.

You can also use the normal "Exit Session" command from the WM root menu and place additional commands required to shutdown CDE in ~/GNUstep/Library/WindowMaker/exitscript

So, if you add "dtaction ExitSession" in that file, the command to shutdown CDE will be automatically executed when you exit WindowMaker.


2.15 When I run wmaker it quits complaing about something __register_frame_info.

This is related to having compiled wmaker on a system whose libraries were compiled by egcs or gcc 2.8.0 and then using the binaries on a system whose libraries were compiled by gcc 2.7.2.x

Try compiling window maker on with the newer gcc or recompile your system libraries with the older gcc .


2.16 When using Redhat RPMs, I get a requires /lib/cpp error message.

In order to install on RedHat 5.2, you are required to install the egcs-1.03a rpm or another compiler package that provides the /lib/cpp file. Simply making a symbolic link will not work.


2.17 How do I install Window Maker on a Solaris box?

Here are some hints from John Kemp <kemp@ns.uoregon.edu>.

Installing WindowMaker on a Solaris 2.6 box might require one or two little hints. Here you are (this was on a system running xdm by the way, but similar suggestions apply otherwise):

1) /usr/openwin/lib/X11/xdm/Xservers like this:

:0 local /usr/openwin/bin/X -dev /dev/fb defdepth 24 defclass TrueColor

2) Turn off shm in the WindowMaker configure:

./configure --disable-shm

3) might have to modify your LD_LIBRARY_PATH:, or make "wmaker"

a script that does it for you (mv wmaker wmaker.exe):

LD_LIBRARY_PATH=/usr/local/lib:/usr/local/X11/lib:/usr/lib:/usr/openwin/lib
export LD_LIBRARY_PATH
/usr/local/bin/wmaker.exe $*

The real key is the --disable-shm.


2.18 How do I fix an error such as libwraster.so.1: cannot open shared object file?

If you have an error when running Window Maker such as

libwraster.so.1: cannot open shared object file

These are the instructions for Linux.

First, make sure that /usr/local/lib ( or whatever directory you installed Window Maker to) is listed in your /etc/ld.so.conf ).

You need to run ldconfig so the new shared libraries will be loaded.

After running ldconfig as root, the linker should properly load the libraries.

You need to run this every time you update Window Maker.

Thanks to <Joseph.ZZ-Czapiga@wdr.com>, the BSD procedure for adding shared library directories is

ldconfig -m /usr/local/lib

The m means merge.


2.19 How do I fix an error dealing with aclocal: configure.in: 15: macro 'AM_PROG_LIBTOOL' not found in library?

You need to install libtool.
It also must be a libtool different from version 1.2b ( shipped with redhat 5.2 ).

You can get libtool from ftp.gnu.org/pub/gnu/.

Make sure the autoconf and automake versions you have installed are at least:
autoconf 2.12
automake 1.3
libtool 1.2


Blaine Horrocks <bhorrock@NesbittBurns.com> says that you can also work around this problem on RedHat5.2 by copying the distributed aclocal.m4 to acinclude.m4 before running configure for the first time. Configure works fine and doing the make succeeds.


2.20 I've installed libPropList but it can't find the library! but I know its in /usr/local/lib.

You need to follow whatever procedure your OS uses for adding shared libraries.

Under Linux, make sure that /usr/local/lib is listed in your /etc/ld.so.conf. Then run ldconfig to update the run-time linker's cache.

Under the BSD's, run ldconfig -m /usr/local/lib to merge in the contents of /usr/local/lib

Also have a look at question #2.18 for more information relating to this type of problem.


2.21 How do I start Window Maker after running wmaker.inst?

As of 0.53.0, the wmaker.inst script will modify your X startup script ( .xinitrc or .Xclients or .Xsession ) to do something thats (hopefully) appropriate.

In order to run wmaker, a user needs to have an ~/.xinitrc file consisting of something similar to

#!/bin/sh
exec wmaker



2.22 What is wrong if I get a message like wrlib: could not allocate shared memory segment: invalid argument?

It relates to a shared memory problem on Solaris. Usually one can't see it - but it is visible if X is started from command line (or fail-safe session for that matter). In any of the cases, on the stderr you get an error message like this:

wrlib: could not allocate shared memory segment: invalid argument

This one is generated by wrlib if WindowMaker is compiled with shared-memory usage enabled (which is the default). The explanation is that Solaris by default comes with a shared memory segment size of maximum 1 M. What happends is that if you have a Really-Really Cool(tm) background, it is usually much bigger than that 1 M segment of shared memory. To see your defaults relating the IPC settings check the output of sysdef command. There you should see the maximum allocateable size for a shared memory segment. If it is less than 5 M you should really increase it by adding the following line in your /etc/system file:

set shmsys:shminfo_shmmax=20971520



After adding this to your /etc/system you need to reboot the thing in order to set the new limit to the desired value.

After rebooting you may want to check the new limit just to make sure it's all-right.

Thanks to Bogdan Iamandei <bogdan.iamandei@connex.ro> for this answer.


2.23 How do I add Window Maker to dtlogin?

The two files that determine alternate window managers are:

/usr/dt/config/C/Xresources.d/Xresources.*
/usr/dt/config/Xsession.*

If you look in there, you'll find Xresources.ow and Xsession.ow, respectively. All you need are two files that set up Window Maker (or any other window manager) in a similar fashion, calling them Xresources.wm and Xsession.wm (or whichever extension you prefer).

Here is an example setup:
 
 
#
**************************************************************************
#
# Window Maker config file
# Mike Bland <mbland@cmu.edu>
#
# /usr/dt/config/C/Xresources.d/Xresources.wm
#
# used by dtlogin
#
#
**************************************************************************


Dtlogin*altDtsIncrement: True

Dtlogin*altDtName:      Window Maker
Dtlogin*altDtKey:       /usr/local/bin/wmaker
Dtlogin*altDtStart:     /usr/dt/config/Xsession.wm
#Dtlogin*altDtLogo:     /usr/local/share/logos/WM_logo.xpm


# Once I get a logo ready, I'll add it to the dtlogin screen by
uncommenting
# the last line.
 
 
And this example script:
 
 
#!/bin/ksh
#
**************************************************************************
#
# Window Maker startup script
# Mike Bland <mbland@cmu.edu>
# /usr/dt/config/Xsession.wm
#
# used by dtlogin
#
#
**************************************************************************

. /usr/local/etc/.profile       # Sources the file containing necessary
                            # environment variables (especially
                            # LD_LIBRARY_PATH=/usr/local/lib:...);
                            # make sure it's executable.

WINDOW_MANAGER=/usr/local/bin/wmaker


export WINDOW_MANAGER


/usr/local/bin/wmaker