Theme Package Specification (Draft)
This specification is designed to provide a desktop neutral way to package multiple themes inside a single 'metatheme', it does not explain where themes should go.
It should bring artists and users together, allow artists to create a collection of themes building a certain look and users can install that same collection at the touch of a button to get the look the artist designed.
Themes should be installed as specified by the DesktopThemeSpec.
Theme Package Structure
A theme-package is an archive containing several different kinds of themes and a themepackage file describing all the contents. The archive should be a gzip-compressed tarball with a .theme extension.
Individual themes are located in different folders, see below:
/ /ThemePackage.index /gtk-2.0/ /metacity/ /xfwm4/ /icons/ /cursors/
Theme Package Description
The Theme``Package.index file should be formatted as followed:
[ThemePackage Entry] Name=Example theme
The Name of the theme, it is required for identification-purposes.
The Desktop-file syntax version, this field must be present.
The mime-type, this field must be present and have the value X-Theme``Package.
Maintainer=John Doe <john DOT doe AT freedesktop DOT org>
The Theme``Package maintainer, this field should be present and formatted as followed
Name < email >
If for some reason this field is not available, Theme-manager implementations may choose to warn a user about this fact.
The Theme``Package version-number (increases with every update), this field should be present and formatted as followed
a[.b[.c[.d[.e]]]] Where a, b, c, d and e are numbers between 0 and 4294967296 (32 bits unsigned integers).
A list of themes contained within the, these strings MUST represent the folder-names inside the archive. However, since not every theme-category might be available, some of the items from this list could be missing. (eg, if it does not contain an icon-theme, just leave out the 'icons' entry from this list)
It is possible to include any theme-category to a theme-package, given it adheres to the following rules:
- the category should be unique (eg, it can't be called gtk-2.0 and conflict to existing gtk themes)
- the theme should be installed in $XDG_DATA_DIRS/themes
- This means that the theme data-files can be found in $XDG_DATA_DIRS/themes/THEME_NAME/COMPONENT_NAME/ where THEME_NAME equals the Name field from the Theme``Package.desktop file, and the COMPONENT_NAME equals the name of a theme-category. Applications which install themes may choose which components to install but it should also provide an option to install all available components.
You may add an individual section for certain package-components, this can be used to add additional information regarding the individual theme-author and license related to the specific themes.
Author(s) / Artist(s) name(s)
[gtk-2.0] Authors=Jane Doe <jane AT freedesktop DOT org>; John Doe <john AT freedesktop DOT org>
The author(s) of the component theme, this field may be present.
Name < email >[; Name < email >[; etc...]]
Theme Component Name
Name=Component Theme Name
The component's theme name, this is optional and overrides the Theme
Package name for a component. It is useful when a ThemePackage is filled with several pre-existing themes.
Theme Component Description
Description=This Example theme gives the User Interface an olive-greenish look.
This field provides a description about the specific component.
Theme Component License Information
The License under which the component is distributed, if this field is missing or empty a theme-manager may choose to notify the user about such fact.
[ThemePackage Entry] Name=Example theme Version=1.0 Type=X-ThemePackage Maintainer=John Doe <john AT freedesktop DOT org> Theme-Version=1.0 Contains=gtk-2.0,xfwm4,metacity,icons [gtk-2.0] Authors=Jane Doe <jane AT freedesktop DOT org>; John Doe <john AT freedesktop DOT org> Description=This Example theme gives the User Interface an olive-greenish look. License=GPL;Creative-Commons [xfwm4] Authors=John Doe Jr. <john_jr AT freedesktop DOT org> Description=This Example theme provides window-decoration with round borders. License=Creative-Commons [metacity] Name=Existing Theme Authors=John Doe Jr. <john_jr AT freedesktop DOT org> Description=This Example theme provides window-decoration with round borders. License=Creative-Commons [icons] Authors=John Doe <john AT freedesktop DOT org> License=Public Domain