Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.


To avoid losing a custom set of enabled plugins and plugin-settings compiz needs to support profiles. This support has to be provided via libcompizsettings. In addition to that profile-support will simplify the task of tweaking the other two sets of effect-levels "normal" and "extra", which can be implemented as two additional profiles. In the end changing an effect-level will just select a different profile.

See also:

Release Note

Once a user has selected the "Custom" effect-level and made changes to the set of enabled plugins and their settings via the dedicated frontend, s/he is now able to switch back and forth between any of the four possible effect-levels "None", "Normal", "Extra" and "Custom" without loosing any settings done for the "Custom" effect-level.


It is unacceptable to have a user loose their made set of enabled plugins and plugin-settings. This is against Ubuntu's principle to always respect and preserve a users made preferences.

Having support for profiles storing a list of enabled plugins and their settings makes future tweaking of the "Normal" and "Extra" effect-levels easier for Ubuntu-developers.

Use Cases

  • Sam had a graphics-card failure and had to replace his powerful pixel-pushing beast with less capable one. He used a custom set of plugins and settings for "Visual Effects". For the meantime - until he gets a new powerful graphics-card - he needs to switch back the effect-level for the less capable graphics-card to be able to run a composited desktop still. Once he get the new graphics card he will be easily able to switch back to his custom settings with just one mouse-click.
  • Petra considers herself to be a power-user and tweaker. Not content with the shipped set of effect-levels "Normal" or "Extra" she creates her own custom one. When she gets a new additional computer, she wants to simply copy her settings for "Visual Effects" in order to avoid making the changes all over again on the new machine.


simple-ccsm is expected to be compliant with the GNOME-HIG and act as the replacement for ccsm.


simple-ccsm is meant to be the dedicated frontend for creating and changing profiles. In order to do so simple-ccsm has to use libcompizsettings to load and save profiles.


A profile is an ini-file supported by libcompizconfig. Loading such has a file by compiz itself is done with the ini-plugin. So this plugin has to be the default one to be loaded at startup. The appearance-capplet ("Visual Effects"-tab) of gnome-appearance-properties has to provide a button allowing the user to start the graphical front-end for creating such a profile. That front-end is expected to be simple-ccsm. simple-ccsm is meant to create such a profile/ini-file, depending on the choices a user made with it.

Two string gconf-keys...

  • /apps/gnome-appearance-properties/selected-effect-level
  • /apps/gnome-appearance-properties/effect-level-ini-file

... have to be introduced for storing the selected effect-level...

  • "None"
  • "Normal"
  • "Extra"
  • "Custom"

and the full path to the ini-file itself. The default path for storing the system-wide ini-files for "Normal" and "Extra" should be...

  • /usr/share/gnome-control-center/normal-effect-level.ini
  • /usr/share/gnome-control-center/extra-effect-level.ini

The default path for storing the custom ini-file should be...

  • ~/.custom-effect-level.ini

Effect-level descriptions...

  • None: no compiz running, metacity is used
  • Normal: animation, annotate, dbus, decoration, gconf, glib, ini, inotify, move, place, png, regex, resize, scale, screenshot, svg, switcher, video, wall, zoom
  • Extra: animation, annotate, dbus, decoration, expo, gconf, glib, ini, inotify, move, place, png, regex, resize, scale, screenshot, shift, svg, video, wall, wobbly, zoom
  • Custom: anything the user defined using simple-ccsm

UI Changes

The graphical front-end ccsm has to be replaced with simple-ccsm.

Code Changes

gnome-appearance-properties needs to be changed to test for (and call if installed) simple-ccsm.


The only current migration action that needs to happen is, if the user is running the "Custom" effects-level. During the upgrade to the new release from Ubuntu 7.10 to Ubuntu 8.04 LTS some one-time script needs to generate a libcompizconfig ini-profile of the users plugin-settings and save that as the "Custom" effect-level profile. This needs to be hooked up in the configure-step of the package-install.

This script also needs to take care of avoiding a purge of metacity's keyboard-shortcuts from gconf should metacity be purged from the system.

Test/Demo Plan

It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during CD testing, and to show off after release.

This need not be added or completed until the specification is nearing beta.


DesktopTeam/Specs/HardyDesktopEffectsProfiles (last edited 2008-08-06 16:27:39 by localhost)