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-1.4.2.109 package, released under LGPL license 2017-08-13. 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.
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 \
--disable-menus-gnome2 --enable-silent-rules
$> 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. 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 (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)
- asciidoctor or asciidoc (for creating html documentation)
- markdown (for building release package)
Documentation for configuring the window manager can be obtained from IceWM Website, from the online manual.
Unfortunately that documentation is for version 1.2.27 and is incomplete
at that; however, it is for the most part still usable.
The good news is that the icewm(1)
and icewmbg(1)
manual pages are complete and fully up-to-date.
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),icewm-menu-fdo
(a utility to genenerate XDG menus),icewm-menu-gnome2
(a utility to generate GNOME menus),icewmhint
(_a utility to set IceWM-specific window options hint).
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 use 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 [email protected] and Mathias Hasselman [email protected].
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: [email protected] or [email protected]
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 patching .po
files and issuing pull requests,
or you can use the openSUSE weblate tool. There are two XDG files,
icewm.desktop and icewm-session.desktop than may need manual
translations. If you have difficulties using the tools, just send me the updated
.po
file or a patch to apply.