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.
| NAME |
TYPE |
DESCRIPTION |
| 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
($EROOT/config/fonts.xfg.cfg)
|
| fonts.pango.cfg |
base config file |
If present, overrides system Pango configuration
($EROOT/config/font.pango.cfg)
|
| 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 |