****** 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 freedesktop group. This allows, for example, running FVWM with KDE version >=2 and GNOME version 2.
Please report bugs to olivier.chapuis@free.fr. Patches against the English of the web pages, this README 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 2.4 versions.
**** Table Of Contents ****
- What is this?
- Installation
- Running
- Running with KDE >=2
- Running with GNOME 2
- Running with FVWM Themes
- FAQ
- WWW Links
**** WHAT IS THIS? ****
From the EWMH specification:
- "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 manual page where it is continued).
**** INSTALLATION ****
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: fvwm-2.4.8.tar.gz or fvwm- 2.4.8.tar.bz2. 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 Imlib library and headers (only optional for fvwm-2.4.8 for FvwmGtk) or the Imlib2 library and headers. You should do the following:
- 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:
cd fvwm-ewmh-0.7/
./apply-patch
You can recover the original FVWM source tree by typing:
./apply-patch reverse
- Then, go back to the top of the FVWM source tree and proceed as
- usual
cd ../
./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
FvwmNetHints (only).
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:
make
and as the good user:
make install
If you get a problem, try first to compile FVWM without fvwm-ewmh. If this work fine, please send me a bug report.
**** RUNNING ****
There is a manual page: man FvwmNetHints and a configuration sample. For new or unexperimented FVWM users I recommend the use of FVWM Themes. 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 section. 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:
- 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 focus problems.
- 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 .fnh-desktopstart file).
- 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 (as ksmserver).
All these are explained with a lot of details in the sample. REALLY, YOU SHOULD READ IT.
**** 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 "fvwmthemes -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:
export WINDOW_MANAGER="fvwm2"
gnome-session --choose-session=fvwm2
The argument to the --choose-session is just a key name as the first line define the window manager executable.In fact the first line in only necessary the first time you startgnome-session with a given argument to the --choose-session option. 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:
export WINDOW_MANAGER="fvwm2"
fvwm-themes-start --session gnome2 --no-start
gnome-session --choose-session=fvwm-themes
**** 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:
### Layer
# 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:
#AddToFunc FuncFvwmModulesAutoRaise
#+ 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
### Animation
# 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<br>
with GNOME. Also you can disable fvwm-themes background (for fvwm transparency):
Current -> settings -> background -> Disabled<br>
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 the pager).
**** WWW Links ****
fvwm-ewmh Home Page: http://fvwm-themes.sourceforge.net fvwm-ewmh Devel Page: https://sourceforge.net/projects/fvwm-ewmh
FVWM Home page: http://www.fvwm.org FVWM FTP: ftp://ftp.fvwm.org/pub/fvwm/version-2 FVWM Themes: http://fvwm-themes.sourceforge.net
freedesktop group: http://www.freedesktop.org EWMH Specification: http://www.freedesktop.org/standards/wm-spec.html
KDE Home page: http://www.kde.org GTK+ Home page: http://www.gtk.org GNOME Home page: http://www.gnome.org GNOME Developer: http://developer.gnome.org
Imlib: http://freshmeat.net/projects/imlib
Imlib2: http://enlightenment.org/pages/imlib2.html
olivier.chapuis@free.fr, 2002-06-12
