IceWM FAQ and Howto: Installation

Next Previous Contents

## 3. Installation

Now you have the IceWM source package at hand and will want to install it. So the next question will be:

## 3.1 How to install IceWM from RPM

The IceWM developers provide RPM packages for all new releases independently from the distributions which use this package format. IceWM's RPM distribution is split into several files. You need icewm-x.y.z-v.rpm. Optionaly you can download others like icewm-themes, icewm-l10n and icewm-menu-gnome.

## 3.2 How to compile and install IceWM from source?

IceWM (0.9.3x and up) uses the standard GNU autoconf tool, so installation of IceWM is much the same as the installation of any other package that uses this tool.

First you untar the package using

> `

>         tar xzf icewm-1.2.x.tar.gz

> `

then you change to the created directory using

> `

>         cd icewm-1.2.x

> `

IceWM comes with a configure script that can be supplied with several compile-time options. To see them listed use

> `

>         ./configure --help

> `

Some important options are

--prefix

  directory under which IceWM files are to be installed

--with-xpm

  use the standard X pixmap package to render graphics

--with-imlib

  use the more powerful imlib package to render images

--with-gnome-menus

  automatically add the GNOME menus to the IceWM `start` menu

After you have decided which (if any) options you want to set, run the `configure` script:

> `

>         ./configure [option ...]

> `

Assuming that the configure script exited successfully, you should then compile IceWM using

> `

>         make

> `

which will build IceWM with the options specified by the configure script. If everything compiles successfully, you can now install IceWM on your machine by entering

> `

>         make install

> `

Note: To do so you will typically need to become root (at least if you didn't supply an install directory you as a user have write access to - this you can change in Makefile).

Now you have an IceWM binary sitting on your disk. Is that what you really want? Obviously not, you want to run IceWM. The next section describes how to set up IceWM as your default window manager.

## 3.3 How to make IceWM my default window manager?

In order to run IceWM, you must assure that the executable (called `icewm`) is in your path. You should then add IceWM to your X start-up script (which could be `.xinitrc`, `.xsession` or `.Xclients`).

Note: Supplying the full path to IceWM isn't sufficient - if IceWM isn't in your path, restarting it will fail (even if you don't do this by hand it is done automatically on changing the theme).

Which of the scripts mentioned above is the right one mainly depends on whether you manually start X (using `startx`) or have X running all the time.

First I explain what you need to do if you manually start X. Then I address the case "X is running all the time" (which means that you log in via `xdm` or something like that). Finally I describe what both cases have in common.

### Running IceWM at X startup

If you use `startx` to start up X then you run your window manager from the `.xinitrc` file.

### Running IceWM after graphical login

If your system has a graphical login (X is already running while you log in) you are using a display manager such as `xdm`, `kdm` or `gdm`. In this case `.xinitrc` has no effect (it is not read in by `xdm`). You must instead use a `.xsession` file.

Hint: It is absolutely no problem to have a `.xsession` and a `.xinitrc` file (which is especially useful for inhomogeneous networks).

Mandrake users repeatedly reported that their `.xsession` wasn't read and no applications started. To work around that in the `kdm` login interface choose `Default` and add IceWM as the last entry to your `.xsession`.

### Besides the differences

You might have noticed that - besides being used in different cases - `.xsession` and `.xinitrc` are essentially the same. On some systems they are in fact the very same file which is called `.Xclients` with `.xinitrc` and `.xsession` both being symbolic links to this file.

Irrespective which start script you use (`.xsession`, `.xinitrc` or `.Xclients`) it must be executable. This may be achieved by issuing the following command:

> `

>         chmod u+x ~/.filename

> `

A minimalist's start-up file consists of only the command to start the window manager (in our case `icewm`). Most geeky people add other stuff to the file to make it look more complicated and confuse beginners >;->

Though that may be the reason for some of us, the greater majority add commands to customize X and to start some programs on login (typical example: an `xterm`)

The following is a (reasonable) `.xinitrc` file used as an example by Marko:

> `

>         #-----------------------------------------------------------
>         # .xinitrc
>         #-----------------------------------------------------------

>         # run profile to set $PATH and other env vars correctly
>         . $HOME/.bash_profile

>         # setup background
>         xsetroot -solid '#056'

>         # setup mouse acceleration
>         xset m 7 2

>         # run initial programs
>         xterm &

>         # start icewm, and run xterm if it crashes (just to be safe)
>         exec icewm || exec xterm -fg red

>         #-----------------------------------------------------------

> `

Note: To run IceWM, the `icewm` command needs to be executed. This means that all programs that are run before starting `icewm` either have to terminate immediately or to run in background. Also, don't `exec` them because that terminates execution of `.xinitrc.`

### IceWM > 1.2.13

Beginning with IceWM 1.2.13 there is a binary `icewm-session`. This binary helps you to handle all IceWM subparts (icewmbg, icewm, icewmtray, startup, shutdown started in this order). Therefore you can use `icewm-session` to start IceWM. `icewm` now starts only window manager itself.

If you want to start only some parts of the IceWM, then you can add them to your `.xsession` or similar file before `exec icewm`, otherwise it is enough to use only `exec icewm-session`.

Next Previous Contents