A window manager designed for speed, usability, and consistency
C++ C CMake Makefile M4 Shell Other
Latest commit 0a28b0b Feb 13, 2017 @bbidulock version update
Failed to load latest commit information.
contrib remove obsolete code Dec 23, 2003
doc address issue #100 for autoconf Jan 4, 2017
lib make to work with lightdm Sep 5, 2016
po update po files Feb 13, 2017
src get package to pass distcheck Feb 13, 2017
utils default configure arguments removed Jan 21, 2007
.gitignore simplify distribution Jul 10, 2016
AUTHORS simplify distribution Jul 10, 2016
BUGS Merge README files into README.md and tweak code comments Dec 17, 2013
CHANGES add upstream comments Jun 16, 2014
CMakeLists.txt merge Dec 19, 2015
COMPLIANCE add full support for _NET_WM_STATE_FOCUSED Jul 12, 2014
COPYING minor build corrections and cosmetics Jun 16, 2014
ChangeLog limit the ChangeLog Jul 10, 2016
INSTALL simplify distribution Jul 10, 2016
INSTALL.cmakebuild Added a shortcut for local debug builds with Debian-like configuration Dec 30, 2015
Makefile.am address issue #100 for autoconf Jan 4, 2017
NEWS simplify distribution Jul 10, 2016
PLATFORMS solaris 9 Dec 23, 2003
README.md version update Feb 13, 2017
README.md.in Fix also in README.md.in per #103 Jan 27, 2017
THANKS simplify distribution Jul 10, 2016
TODO get package to pass distcheck Feb 13, 2017
VERSION version update Feb 13, 2017
acinclude.m4 autoconf 2.59 fixes Jul 14, 2004
autogen.sh simplify distribution Jul 10, 2016
config.cmd Initial revision Mar 17, 2002
configure.ac version update Feb 13, 2017
configure.sh add debug flags Aug 31, 2016
dist.sh simplify distribution Jul 10, 2016
fd-leak-patch.txt added original of applied patch Nov 22, 2016
gennews.sh git hates trailing space Jul 10, 2016
icewm-set-gnomewm icewm-set-gnomewm Apr 27, 2010
icewm.lsm.in merge icewm-1.2-BRANCH May 17, 2003
icewm.spec.in add new default theme and background Dec 20, 2015
install.in Initial revision Mar 17, 2002
rebuild.sh simplify distribution Jul 10, 2016
sysdep.os2 Initial revision Mar 17, 2002


Ice Window Manager (IceWM)

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.

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 the icewm- package, released under LGPL license 2017-02-12. This release as well as future versions here, can all be obtained from GitHub using a command such as:

git clone https://github.com/bbidulock/icewm.git

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

Quick Start

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

$> git clone http://github.com/bbidulock/icewm.git
$> cd icewm
$> ./autogen.sh
$> ./configure --prefix=/usr --sysconfdir=/etc \
   --enable-shaped-decorations --enable-gradients \
   --enable-guievents --with-icesound=ALSA,OSS \
$> make V=0
$> sudo make DESTDIR="$pkgdir" install

This will configure, compile and install IceWM the quickest. For those who would like to customize the installation, use the command:

./configure --help

Please see the INSTALL file for more detailed installation instructions. 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 (for compiling)
  • libxft (for font rendering)
  • libxinerama (for XINERAMA support)
  • gdk-pixbuf2 (for pixmap rendering)
  • libxrandr (for XRANDR support)
  • libsndfile (for sound support)
  • libsm (for X11R6 session management)
  • fribidi (for i18n text rendering)

Building from git also requires:

  • git (for cloning the git repository and updating changelogs)
  • autoconf/automake or cmake toolchain (for build scripts)
  • xorg-mkfontdir (for installing themes)
  • linuxdoc-tools (for creating help html files)
  • markdown (for building release package)

Configuring IceWM

Documentation for configuring the window manager can be obtained from IceWM Website or from the online manual: point your browser at this file.

Unfortunately the documentation is for version 1.2.27 and is incomplete at that; however, it is for the most part usable. Also, a rather sparse icewm(1) manual page is available.

Included Utilities

Currently, the only included utilities are:

  • icewmbg (a background setting program),
  • icewmtray (a system tray for the IceWM taskbar), and,
  • icewm-session (a program to launch the window manager, icewmbg and icewmtray in an orderly fashion).

Third-party Utilities

Unspecified keyboard shortcuts can be handled with the bbkeys(1) utility available from sourceforge. For additional utilities see the IceWM FAQ.


/proc/wm-session is used to register the process id of an application able to free resources smoothly when the kernel decides that memory resource have reached a critical limit. The registered application is notified of this situation by the signal SIGUSR1.

On full featured desktop machines it would make sense to use the session manager for this purpose. On X window PDAs which have limited memory resources it makes sense to let the window manager send WM_DELETE_WINDOW message to the last recently used application.

Requirements to uses this feature in IceWM:

  • A patched kernel, a patch for Linux 2.4.3 is available in the contrib file module.

  • A patched X server assigning the clients process id to each newly mapped window. Alternatively you can preload the preice library available in the contrib file module.

  • $ export LD_PRELOAD=$PATH_TO/libpreice.so

  • IceWM configured to have wm-session support (./configure --enable-wm-session ...)

The contrib file module of IceWM is located on sourceforge.

/proc/wm-session was developed by:

Chester Kuo chester@linux.org.tw and Mathias Hasselman mathias.hasselman@gmx.de.

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.

Bug reports, feedback, and suggestions pertaining to the original CVS version can be sent to: Marko.Macek@gmx.net or icewm-user@lists.sourceforge.net

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.


You can provide translations by patching .po files and issuing pull requests, or you can use the openSUSE weblate tool.