Extended Window Manager Hints Support For FVWM
Welcome to fvwm-ewmh!
fvwm-ewmh is made up of a module, FvwmNetHints, and a patch against the
last stable FVWM source tree (fvwm-2.4.8).
With these, FVWM can handle Extended Window Manager Hints from the
This allows, for example, running FVWM with
KDE version >=2 and
GNOME version 2.
Please report bugs to
Patches against the English of the web pages and the manual page welcome!
Note: The current development version of FVWM (the 2.5 series) has
native EWMH support. For technical reason I choose to do not use
a module to accomplish this ewmh support. So configuration is totally
different and you should update your configuration file if you upgrade
from fvwm-2.4.x + fvwm-ewmh to fvwm-2.5.x (see the fvwm man page
and search for EWMH).
Also, the fvwm 2.5 series has a number of new feature as side title,
PNG support, anti-aliased font rendering, better internationalization
and much more. However, the fvwm 2.5 versions are development
versions and we cannot warranty the same level of stability than for the
Table Of Contents
WHAT IS THIS?
"The Extended Window Manager Hints, EWMH for short,
defines interactions between window managers, applications and the
utilities that form part of a desktop environment. It builds on the
ICCCM, which defines wm/client interactions at a lower level.
It was born out of a need to replace the original GNOME WM
specification, although this specification has been designed to be
independent of any one desktop environment."
This specification is implemented in KDE version >=2 and GNOME version 2.
FvwmNetHints allows FVWM to work
fine with applications which implement this specification.
(this paragraph is from the FvwmNetHints
where it is continued).
- Binary RPM Packages:
A generic binary RPM package build on a Linux-Mandrake 7.x machine
(~ 1.29M). I hope it can be installed on any i386
machine with rpm version 3 or better and glibc-2.1 or better.
There are some required packages: take a look at Mikhael Goikhman
the only difference is that you really need Imlib.
(thanks to Mikhael some rpm's for rplay, libstroke and Imlib can be found
- Other Packages: You may find others packages via the
fvwm-ewmh development page
(src.rpm and older version). Be award that
version 0.1 is for fvwm-2.3.32 only, version 0.2 is for fvwm-2.3.33
only, versions 0.3, 0.4 and 0.5 are for fvwm-2.4.0 only and
version 0.6 is for fvwm-2.4.3 only.
Of course you should use version 0.7 which is made for fvwm-2.4.8 only.
- If you upgrade you may want to take a look at the
ChangeLog and the
This section describe the installation procedure from the source.
If you use the binary rpm package, just use rpm as usual (but it is
maybe preferable to rpm -e any installed version of FVWM).
First of all you need the FVWM source:
In addition of the usual libraries and headers needed for a normal
FVWM installation, so that fvwm-ewmh be fully functional,
you need the XPM library and headers (only optional for fvwm-2.4.8
but strongly recommended) and either the
library and headers (only optional for fvwm-2.4.8 for FvwmGtk) or
library and headers.
You should do the following:
If you get a problem, try first to compile FVWM without fvwm-ewmh. If this
work fine, please send me
a bug report.
- Uncompress the fvwm-2.4.8 source and cd to this source directory.
- Uncompress (or move, if already uncompressed) fvwm-ewmh in the
top of the FVWM source tree, e.g.:
tar xzvf path_to_the_fvwm-ewmh_tarball/fvwm-ewmh-0.7.tar.gz
go to the created directory and apply the patches:
You can recover the original FVWM source tree by typing:
- Then, go back to the top of the FVWM source tree and proceed as
./configure [your preferred options]
There are a few configure options specific to fvwm-ewmh:
--enable-FvwmNetHints_prefer_imlib2 enable imlib2 support
in the place of imlib support for FvwmNetHints (if you only have
imlib2 this is the default, but if imlib and imlib2 are installed
imlib is used by default)
--disable-imlib_for_FvwmNetHints disable imlib and imlib2
support for FvwmNetHints.
--disable-xpm_for_FvwmNetHints disable xpm support for
The configure script should finish with something like that:
Have Extanded WM Hints support? yes
Have Imlib support for FvwmNetHints? yes (use imlib version 1/2)
Have xpm support for FvwmNetHints? yes
- Then, type:
and as the good user:
There is a manual page:
and a configuration
For new or unexperimented FVWM users I recommend the use of
Since FVWM Themes version 0.6.0 FVWM Themes has an integrated
support for fvwm-ewmh and the things should work out of the box:
take a look at the Running with FVWM Themes
The sample configuration has been written with FVWM Themes
(version < 0.6.0) configuration scheme in head.
You MUST be award of a few things specially if you use a desktop
application (as kdesktop). Basically you should do the following
changes to your configuration:
All these are explained with a lot of details in the sample. REALLY,
YOU SHOULD READ IT.
- Add "Module FvwmNetHints" to your FVWM start functions.
- Configure FvwmNetHints. In a perfect world, the default configuration
will work fine. However, some workarounds are needed to fix some
- Enable the UseListSkip fvwm-ewmh FvwmPager option.
- Setup some FVWM styles for certain compliant applications
(as kdesktop and kicker). Again, these are workarounds.
- If you use a desktop application as kdesktop you should
disable most of your Root Mouse bindings (by using the
- Take care that there are no interactions between FVWM key
bindings and some special key bindings used by some special
applications as kdesktop and kicker.
- Replace the FVWM Maximize builtin function by the FvwmNetHints one
(by using the .fnh-start file).
- Use the session exit function if you use a session manager
RUNNING WITH KDE >=2
When you use KDE version >=2, a script called startkde is used for starting
KDE and the K window manager kwin. To start FVWM with KDE you should
replace the line which start your graphical environment (which can be found,
in your .xsession, .Xclient or .xinitrc file) by a copy of this
script and replace around the ead of this script "ksmserver --restore" by
"ksmserver --restore --windowmanager fvwm2". If you use FVWM Themes
you should add just before this line the line
"fvwm-themes-start --session kde --no-start" and add a .fvwm2rc file
in ~/.fvwm constituted by the line "Read themes-rc".
With KDE version >=2.1.1 (and maybe older version) the KDE applications
which are started by ksmserver are those defined in ~/.kde/Autostart
(typically user applications, this is well documented) and in
$KDEDIR/share/autostart where kdesktop, kicker and other "central"
KDE services are started (also, the LD_BIND_NOW variable set in startkde
can come into play). I recommend that you copy the files you found in
$KDEDIR/share/autostart/ in your own ~/.kde/share/autostart/ directory
(create this directory). This way you override the system autostart dir
and you can choose to do not start kdesktop (respectively, kicker) by
removing kdesktop.desktop (respectively, panel.desktop). Note that you
may have to remove a line of the form "X-KDE-autostart-after=kdesktop"
in panel.desktop. But, the main point here is that to get a startup
that look better you can edit kdesktop.desktop and panel.desktop to
add the option --waitforwm to the lines "Exec=kdesktop" and "Exec=kicker"
respectively. This option causes the application to wait that FvwmNetHints
start. I do not know if there is a simpler method (or a user documented
method) to realize the same tricks.
RUNNING WITH GNOME2
Here what you need in your .xsession, .Xclient or .xinitrc file:
The argument to the --choose-session is just a key name: the name
of the session when you save it. The
first line defines the window manager executable.
In fact the first line in only necessary the first time you start
gnome-session with a given argument to the --choose-session option
(if you save your session).
As with KDE, you cannot pass an option to fvwm2. So with fvwm-themes
you should add a .fvwm2rc file in ~/.fvwm constituted by the line
"Read themes-rc". Here what you need in your .xsession, .Xclient
or .xinitrc file with fvwm-themes:
fvwm-themes-start --session gnome2 --no-start
RUNNING WITH FVWM THEMES
Since version 0.6.0 FVWM Themes has an integrated support for fvwm-ewmh.
So basically you have nothing to do to enabled fvwm-ewmh. But if you
upgrade you should remove in your configuration files every thing which
came from sample.fvwm-ewmh (fvwm-themes uses the files in the directory
$FT_DATADIR/themes/settings/ewmh/). You can
check if such support is enabled with the Theme management menu
(Current -> settings -> "Extended WM Hints"). If the "Extended WM Hints"
entries does not appear in this menu "refresh with no cache".
Remember that if you run a desktop application, then to get the
fvwm-themes menus you should use the "Alt" modifier in addition of
the mouse click.
To customize your fvwm-ewmh configuration you should use the file
$FVWM_USERDIR/themes/personal/ewmh-extra ("refresh the current theme"
and select it when you create this file and select this file each time
you modify it). Here my ewmh-extra file:
# You do not like stays on top application
*FvwmNetHints: AcceptStaysOnTop False
# Then, you may want that kicker (and its goodies) be autoraised:
# for that you need to add the following in autoraise-extra:
#+ I Current (kicker) Raise
#+ I Current (gnome-panel) Raise
#Style "kicker" MouseFocus
#Style gnome-panel MouseFocus
### Number of desktop
# You want more than 4 desktops (here 6)
#*FvwmNetHints: NumberOfDesktops 6
# Or you prefer that the value of the previous option to be ignored and
# replaced by the number of desktops you got when you leave FVWM:
*FvwmNetHints: UsePersistentNumberOfDesktops True
# This is set automatically if you use ksmserver as variant for
# settings -> Session Manager. You should add this with gnome
#*FvwmNetHints: NoIconAction SendToModule FvwmAnimate animate
### For better windows names
*FvwmNetHints: UseExtendedName True
### For more custumization: man FvwmNetHints
Of course you can still use the $FVWM_USERDIR/.fnh-* files.
For running fvwm-themes with KDE (via ksmserver) or with GNOME (via
gnome-session) read the previous
sections. Moreover, you should select the following settings:
Current -> settings -> session-manager -> ksmserver (kde2)
with KDE and
Current -> settings -> session-manager -> gnome-session
with GNOME. Also you can disable fvwm-themes background
(for fvwm transparency):
Current -> settings -> background -> Disabled
and when you have choose your modules themes you should "disable"
(Current -> modules -> *) which are made not useful by your kicker
or GNOME panel
configuration (I use modules@olicha with all modules disabled but
Q: Why fvwm-ewmh is not incorporated in the FVWM source tree?
A: Because FVWM is/was under feature freeze when I wrote this module.
The current developpement version of fvwm (the 2.5.x series) has
native ewmh support. This support does not use a module, it is
fully incorpored in fvwm main module.
Q: Why a module?
A: Because I prefer to do as minimal change as possible to FVWM source.
Also, it is more easy for development, when I make a mistake
FVWM does not crash and I can restart FvwmNetHints. However,
using a module is not the perfect solution. So, when I wrote
the ewmh support for the fvwm 2.5 series I do not use a module.