Skip to content


Repository files navigation

Ice Window Manager (IceWM)

IceWM is a window manager for the X Window System. The features of IceWM are speed, simplicity, and not getting in the user's way.

The name was decided on a very hot day... (and Marko started writing it in winter ;-) The aim of IceWM is to have good 'Feel' and decent 'Look'. 'Feel' is much more important than 'Look' ...

This is a fork of the IceWM CVS on sourceforge. It includes all changes from the icewm-1-3-BRANCH branch, greatly enhanced EWMH/ICCCM compliance, as well as patches collected from Arch Linux, Debian, pld-linux, the IceWM bug list, and various other GitHub forks.


This is the icewm-3.4.7 package, released 2024-03-25. This release, and the latest version, can be obtained from GitHub, using a command such as:

$> git clone

Please see the NEWS file for release notes and history of user visible changes for the current version, and the ChangeLog file for a more detailed history of implementation changes. The TODO file lists features not yet implemented and other outstanding items.

Please see the INSTALL file for installation instructions.

When working from git(1), please use this file. An abbreviated installation procedure that works for most applications appears below.

This release is published under LGPL. Please see the license in the file COPYING.

Quick Start

The quickest and easiest way to get icewm up and running is to run the following commands:

$> git clone
$> cd icewm
$> ./
$> ./configure
$> make
$> make DESTDIR="$pkgdir" install

This will configure, compile and install icewm the quickest. For those who like to spend the extra 15 seconds reading ./configure --help, some compile time options can be turned on and off before the build.

For general information on GNU's ./configure, see the file INSTALL.

Please see the INSTALL file for more detailed installation instructions. An alternative way to build IceWM using CMake is documented here. The ChangeLog file contains a detailed history of implementation changes. The COMPLIANCE file lists the current state of EWMH/ICCCM compliance. The NEWS file has release notes and history of user visible changes of the current version. The TODO file lists features not yet implemented and other outstanding items.

This release is published under LGPL license that can be found in the file COPYING.


Building from tarball requires:

  • gcc or clang
  • imlib2
  • libxcomposite
  • libxdamage
  • libxfixes
  • libxft
  • libxinerama
  • libxpm
  • libxrandr
  • libxrender

Building from git also requires:

  • complete autoconf or cmake toolchain
  • either markdown or asciidoctor

Configuring IceWM

Documentation for configuring the window manager can be obtained from IceWM Website or from the online manual. Since version 1.4.3 a complete and up-to-date set of manual pages is provided. Use icewm(1) as a starting point.

Included Utilities

Currently, the only included utilities are:

  • icesh(1) (a versatile window manipulation tool),
  • icewmbg(1) (a background setting program),
  • icewm-session(1) (a program to launch the window manager, icewmbg and icewmtray in an orderly fashion),
  • icewm-menu-fdo(1) (a utility to genenerate XDG menus),
  • icewmhint(1) (a utility to set IceWM-specific window options hint).
  • icesound(1) (play audio files when interesting GUI events happen).

Third-party Utilities

Unspecified keyboard shortcuts can be handled with the bbkeys(1) utility available from GitHub.

XDG compliant menus may be generated using the xde-menu(1) utility available from GitHub.

For additional utilities see the IceWM FAQ.

Bug Reports

Issues can be reported on GitHub. Please try to submit short patches or pull requests if you can. If you would like to perform regular maintenance activities (e.g. if you are a maintainer of an IceWM package for a distribution), contact me for push access.

I normally like to have the issuers of problem reports close the report once it has been resolved. I do not want you to think that we are being dismissive, because I welcome all reports.

Bug reports, feedback, and suggestions pertaining to the original CVS version can be sent to: or

See also BUGS, TODO and the sites at:


If you would like to develop against this fork, the easiest way is to obtain a GitHub account, fork the repository and perform your development. Send me a pull request when you have something stable. If you submit regular pull requests that get accepted, I will just give to push access to save time.


You can provide translations by using the openSUSE weblate tool. There are two XDG files, icewm.desktop and icewm-session.desktop which may need manual translations. If you have difficulties using the tools, just send me the updated .po file or a patch to apply.