The Importance of structure and standardization

Structure is a good thing. Two benefits are predictability and control. It's even better when you standardize on the best way of doing something. Then you get efficiency and scalability.

The early days of enlightenment saw a wide degree of them layouts. This must have been problematic at best for theme designers to learn from and make changes to as well as application maintainers to code for. I'm sure that's why rasterman documented an "imposed" standard and included it as a README in all the themes available at the time.

While this was a good step in the right direction, I found that standard to be a bit mundane to cope with on a large scale (ie. when doing search and replacing, adding syntax, etc. on all themes at once). So from my personal experience in working with e16 themes, I've come up with a slightly more elegant layout.

Themes from this site should follow this structure.

Walking through a theme

Not every component of e16 is necessarily required (for example if your theme doesn't make use of slideouts then you won't need the slideouts.cfg or buttons.cfg base config file) but for documentation purposes, I'll cover all the files and directories.

ABOUT directory Used to produce a theme description by edox
Required files: MAIN
artwork directory Contains images used by the theme (including mouse cursors)
May or may not contain subdirectories for categorization
audio directory Contains sound bits used by the theme
borders directory Contains border configuration files
Files that belong in here: default.cfg, borderless.cfg, pager.cfg, dialog.cfg, shaped.cfg, transient.cfg, etc.. (any border that you'd like to define).
These files are included by the borders.cfg base config file
imageclasses directory Contains imageclass configuration files
Files that belong in here: borders.cfg, coords.cfg, dialogs.cfg, dock.cfg, dragbar.cfg, focuslist.cfg, iconbox.cfg, menustyles.cfg, pager.cfg, tooltips.cfg
These files are included by the imageclasses.cfg base config file
ttfonts directory Contains any custom TrueType fonts used in the theme
actionclasses.cfg base config file Defines window manager actions
Ties buttons/mouse events to actions such as moving, minimizing and closing windows. Also defines the popup/tooltip "help" text.
borders.cfg base config file Defines all borders available for the theme
This typically just includes files located in the borders directory
buttons.cfg base config file Defines buttons that are used for slideouts
cursors.cfg base config file Cursors (mouse pointer) definition file
desktops.cfg base config file Desktop backgrounds definition file
fonts.theme.cfg base config file Defines the font(s) to be used when a user has elected to use the themes's fonts.
fonts.cfg base config file Symbolic link pointing to fonts.theme.cfg.
Needed only for backwards compatibility with older e16 releases. Originally, this was the only font-alias file that e16 looked for.
fonts.xft.cfg base config file If present, overrides system XFT configuration
fonts.pango.cfg base config file If present, overrides system Pango configuration
imageclasses.cfg base config file Defines *almost* all imagery used in the theme
Should just include the files located in the imageclasses directory
init.cfg base config file Initialization file
menustyles.cfg base config file Defines images and text options used for enlightenments menus
slideouts.cfg base config file Defines a slideout panel of buttons
sound.cfg base config file Sound definition file
textclasses.cfg base config file Defines text properties such as direction and color.
tooltips.cfg base config file Defines images and positioning of enlightenment help popups
windowmatches.cfg base config file Configures certain borders to be used with certain window types