Xfce at FOSDEM 2005

What is Xfce

A bit of history

The goals of the project

The basic design

The settings manager

The window manager internals

The future

What is Xfce

Yet another window manager?

A new desktop?

A development platform?

A set of tools?

A bit of History

December 1996 – Start of work!

Start playing with Xforms designer to build a simple launcher for fvwm.

1997 – Xfce 2.0

Includes a window manager and more configurability

1999 – Xfce 3.0

Totally rewritten using GTK+ 1.2

A bit of History

September 2004 – Xfce 4.0

Complete rewrite, new architecture

Conformance to freedesktop.org standards

Based on GTK 2.x

January 2005 – Xfce 4.2

Numerous improvements

New modules added

The goals of the project

Keep the desktop :

Lightweight when possible

Fast

Simple and easy to use

Modular

Compliant with standard

The basic design

Modular desktop, separate tools :

Panel (xfce4-panel)

Taskbar (xftaskar)

Desktop (xfdesktop)

Settings manager (xfce-mcs-manager)

Window manager (xfwm4)

Session manager (xfce4-session)

File manager (xffm)

The Settings Manager

Centralized setting manager

asynchronous 1-way broadcast

Simple and standard

Compatible with freedesktop.org XSETTINGS

Simple API

The Settings Manager

MCS

Manager

Daemon

Plug-in

Plug-in

Plug-in

Plug-in

Plug-in

Application

Application

Application

The Settings Manager

Simple design for developers :

Every “channel” is similar to XSETTINGS

Channel values are stored in an X atom, one per channel

Manager daemon can load and setup a channel directly from an XML file

Client applications may choose to listen to one or more channels

Plug-ins can have no channel at all

The Settings Manager

Simple design for packagers:

Plug-ins are responsible for initiating the channels

The plug-ins are usually included in the same package as the application they “drive”

The Settings Manager

Pro

Simple design

Simple API

1 single process

Cons

Buggy plug-ins can break the setting manager

Not designed as a general purpose key/value database.

The Window Manager

Omnipresent application

Must deal with many different applications

Inherently source of race conditions

Lot of graphics, shaped windows

Must be easy to configure

Simple yet powerful theming

The Window Manager

Themes are made of XPM files

Simple text based format

Almost any image editor in UNIX can read and load XPM

Supports transparency, useful for shaped windows

Support color substitution table, useful for changing colors on the fly

The Window Manager

Theme built from several images

The Window Manager

Themes are made of PNG files

Final image is made of the XPM composed with a PNG file

Backward and forward compatible between xfwm4 versions

Use techniques similar to layers in The GIMP

The Window Manager

XPM and PNG composition

The Window Manager

Theme images are stored once

Window decorations are built from the theme images

Decorations are cached:

Focused

Unfocused

Cache is refreshed when the window is resized

The Window Manager

Use the Xserver redraw routines

No flickering, reduced network usage

The Window Manager

Advanced features : embedded compositing manager,

Allows special effects like changing opacity while moving resizing windows

Helps keeping events in sync as there is just one event loop

The future

New “Xfce Foundation Classes”

C++ wrapper for GTK+ and Xfce base libs

New file manager

Xffm is too complex

We need a new simple and efficient file manager

New modular panel

Multiple panels

Out of process plug-ins

The future

The risks

GTK+ growth

Loose focus on the goals

Fragmentation

Questions?

?

Olivier Fourdan

2005-02-20T21:31:48