• Immutable Page
  • Info
  • Attachments

Settings Upgrades

Libcompizconfig provides a framework for distributors to ship post-hoc settings upgrades which will run once and modify user configuration according to a set of rules. Along with a set of distribution defaults shipped in SYSCONFDIR, distributions can use upgrades to match and replace existing settings that the user has changed, either adding new values, resetting them to the default, or removing items from lists (eg plugins).

Distribution

Store settings upgrades in SYSCONFDIR/compizconfig/upgrades with the name format

org.freedesktop.domain.profile.num.upgrade

Where org.freedesktop.domain is a freedesktop.org reverse domain name: eg org.freedesktop.compiz, num is a base 10 number indicating the upgrade series (listed in incremental order) and profile is the name of the profile which should be active when changing settings.

Upgrades will be processed in alphabetical order and then written to a file in XDG_CONFIG_DIR/compiz-1/compizconfig/done_upgrades so that they will be skipped in the future.

File Format

The upgrade file format follows something along the lines of a diff file inlined into the ini file configuration format, for example

[plugin]
+s0_option_name = foo;
-s0_other_option_name = bar;

The following is the syntax of the upgrade file:

  • + with a value will replace the existing value with the specified one
  • - with a value will clear the existing value to the default value if the value specified in the value section of the key matches the actual value that the user has set.
  • both + and - for a particular option key name will replace the value if the value that the user has set matches the value section specified in the - value field

For lists, + and - will not overwrite or clear to default, but rather append and subtract from list themselves.

  • + with a value will append all non-duplicate entries to the existing list
  • - with a value will subtract all matched entries from the existing list both + and - for a particular list will replace the list only if the entire list matches what was specified in the - field

Note there that you must use the same key format as is used in the ini backend, namely

s(screenum)_option_name = foo

List entries must be delimited with ';'

Development/zero-nine/Upgrades (last edited 2011-09-14 01:48:32 by 203-206-60-73)