Metisse home page Running Metisse

The Metisse window system follows a compositing approach, making a clear distinction between the rendering of windows and the interactive compositing process. The Metisse server is a modified X server that renders windows off-screen. The Metisse compositor is a combination of a slightly modified version of FVWM with an OpenGL-based interactive viewer called FvwmCompositor. FvwmCompositor runs as an FVWM module connected to both the Metisse server and your native window system (a traditional X server or the OS X WindowServer). Among other things, FvwmCompositor displays window images received from the Metisse server and forwards to it native input device events (Figure 1).


Figure 1: The Metisse architecture

Starting the server

The Metisse server can be started from a terminal with the Xmetisse command:

Xmetisse -geometry 1024x768 -ac :1

In this example, the server is configured to emulate a 1024x768 desktop, disable X access control restrictions and listen for incoming X clients on the first X display (i.e. listen on TCP port 6001).

Xmetisse -help will give you the full list of supported options.

The -depth 16 -pixelformat rgb565 options, for example, allow to switch the internal pixel format to a 16 bits encoding (instead of a default 24), reducing network bandwidth when the server and the compositor run on different machines.

The -rfbauth option allows you to specify a VNC password file to be used to authenticate Metisse compositors that connect to the server (e.g. -rfbauth $HOME/.vnc/passwd).

Starting the compositor

As a result of the system architecture, starting the compositor actually consists in attaching to the Metisse server a properly-configured instance of FVWM that will in turn execute the FvwmCompositor module. The metisse-start-fvwm will do just that. It will also create a default FVWM configuration for you in ~/.fvwm-metisse if it doesn't find one the first time you run it. To connect to the server launched in the previous step, just type:

metisse-start-fvwm -wd :1

The metisse-start-fvwm -help will give you the list of options supported by the script. The general syntax is the following:

metisse-start-fvwm [options] -- [FvwmCompositor options] -- [fvwm options]

FvwmCompositor options include:

-t disables the use of OpenGL's stencil buffer to render shaped windows. This may slow down the compositor but it might also solve problems with applications like xeyes, xine or xmms.

-C enables a software cursor. This might solve some rendering problems and allows to create screenshots that show the cursor.

-p enables the use of OpenGL's mipmapping functions. This will use more memory but might produce better renderings of transformed windows.

-n enables non-power-of-two texture support. This might improve performance and reduce memory usage but might also cause rendering problems on some graphics hardware.

-m disables shared memory communication with the server

-s disables window shadows

Using Metisse as your default environment

Running Metisse inside your usual desktop environment is likely to cause problems at some point because of conflicting mouse or key bindings. Once a convinced Metisse user, you might want to replace your original desktop with a Metisse-based one.

A simple way of doing this for old-style people who still use startx is to put something like this in your .xinitrc file (rxvt could be replaced by xterm or any other terminal application):

Xmetisse -ac -depth 16 -geometry 1680x1050 :1 >& .Xmetisse-log &
metisse-start-fvwm >& .compositor-log &
rxvt # this will allow you to terminate this session by typing "exit" and to
     # restart the compositor using metisse-start-fvwm if it ever crashes
killall Xmetisse

Your local X11 guru might be able to figure out a similar solution if you're using a display manager (e.g. KDM or GDM).

Note that although the Metisse compositor is currently implemented as an FVWM module, the system is desktop agnostic. People interested in using a particular environment (e.g. GNOME, KDE) are invited to contribute the necessary configuration files or scripts.