This is the design document for the application Epidermis.
Please note that this is a work in progress.
Epidermis aims to make changing the look of your GNOME desktop complete, rapid, simple, automatic, customisable and shareable.
As a secondary mission, Epidermis wants to aid the user in creating their own look and sharing it to other Epidermis users, but without hindering those who consume exclusively.
Ubuntu (using GNOME) has the following customisable elements, which change its look and feel:
(Add anything else that you can think of here)
In order to keep Epidermis' customisations both customisable and complete, a structure involving pigments and skins was created.
A pigment is a customisation of a piece of the GNOME desktop. It contains the files necessary to activate the customisation, (with the exception of skins,) and the information describing it, including authorship, copyright, name, key words, description, main colours and a preview image.
A pigment type is a category of pigments sharing the same characteristics of the area of the GNOME desktop they affect using the same technology, for example, pigment types can include: Metacity, wallpaper, GDM login screen... Metacity and Emerald are seperate pigment types, because they use different technology.
A skin is a pigment of the type skin, it is unique in the fact that it includes links to other pigments required for the activation of the skin. It should link to (at least?) one pigment of every type (other than skin). The skin is the means through which both complete and rapid customisation occurs.
A pigment is one single file. It is a gzipped tar archive (.tar.gz) of other files, but it has the extension .pigment .
Its mime-type is application/x-pigment
The archive should contain:
(Should we allow a file to include several pigments? This would make it easier for people with no Internet access to distribute skins) (Implemented in packs)
Here's an example of a pigment's XML information file:
<?xml version="1.0" ?> <pigment> <pigmentVersion>0.1</pigmentVersion> <name lang="en">3LCD</name> <description lang="en">Just a different angle rendering of another wallpaper I did</description> <type>wallpaper</type> <codename>3lcd</codename> <copyright>Free</copyright> <author>Chris S</author> <preview>3lcd.png</preview> <filename>3lcd.jpg</filename> <pictureOptions>zoom</pictureOptions> <colorShadingType>solid</colorShadingType> <primaryColor>#87028e72ffff</primaryColor> </pigment>
Here's an example of pigment.xml for a skin pigment.
Note that Skin is the only type of pigment that doesn't require a preview image, for the time being.
<?xml version="1.0" ?> <pigment> <pigmentVersion>0.1</pigmentVersion> <name lang="en">Ubuntu Studio</name> <description lang="en">The default Ubuntu Studio theme</description> <type>skin</type> <codename>ubuntu-studio</codename> <copyright>Creative Commons and other</copyright> <author>Ubuntu Studio</author> <preview></preview> <primaryColors><color>Black</color></primaryColors> <secondaryColors><color>white</color></secondaryColors> <keyWords><keyWord lang="en">Studio</keyWord></keyWords> <version>unknown</version> <webPage></webPage> <link><codename type="wallpaper">3lcd</codename></link> <link><codename type="metacity">ubuntu-studio</codename></link> <link><codename type="gtk">ubuntu-studio</codename></link> <link><codename type="icons">ubuntu-studio</codename></link> <link><codename type="gnomeSplash">blue-ubuntu</codename></link> <link><codename type="cursors">ComixCursors-blue-regular</codename></link> <link><codename type="grub">debian-moreblue-swirl</codename></link> <link><codename type="gdm">blue-folder</codename></link> <link><codename type="usplash">splash</codename></link> </pigment>
In order to simplify accessing available pigments and sharing them, using shared repositories, preferably online, is a must for Epidermis.
Epidermis currently uses a variation of Get Hot New Stuff (http://ghns.freedesktop.org). Browse (http://download.tuxfamily.org/epidermis/ghns) for an example of an Epidermis repository.
The user interface has these requirements: it should include both a GUI and a command line interface, it should fit in with the customized GNOME desktop, it should keep its mission in focus and therefore hide secondary functionality. It should comply with the HIG and use GTK.
The 0.1p3 GUI was devided in two: the main app, and the creator app.
The main app
This window was devided into three: Installed, Find more and Settings.
Three dialogs are displayed at the appropriate times: (progress window not displayed)
Attached is the glade file.