This book is to help theme designers get familiar with the syntax and capabilities of e16.
I have just begun writing this book. Content will be added gradually as time permits.
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.
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 |
The syntax of e16's configuration files are primarily nothing but keywords and macros. Otherwise you would be looking at a lot of numbers without much insight as to what's going on.
A keyword represents the numerical instructions e16 uses to operate and a macro groups keywords together. A macro can also be similar to a function, in that you can pass in parameters.
The file that defines these keywords and macros is located at [INSTALL_BASE]/share/e16/config/definitions where [INSTALL_BASE] is primarily /usr but may vary depending on your installation or distribution.
You'll be learning many of them throughout this howto but if you'd like to see what they all are, go crack open that file.
The first line in any e16 base configuration file needs to include the definitions file like this:
#include <definitions>
Files that are included by a base configuration file do not need to include the definitions again.
Just about every keyword and macro you will see in a theme's configuration, comes from this file. There are a few exceptions in which some themes define their own macros, however, if it's worth being defined then it should be in this file for all themes to take advantage of and standardize on.
The second line in any base config file should be:
__E_CFG_VERSION X
Where X is an integer (currently either 0 [zero] or 1 [one]) that defines which version of configuration data e16 is reading from the file.
(need to find exact version that "__E_CFG_VERSION 1" is valid in)
As the name suggests, actionclasses are used when clicking on borders and buttons to initiate some type of action, such as moving or maximizing a window. They are primarily used within border configurations.
Historically, enlightenment relied upon the actionclasses.cfg file provided in a theme. Unfortunately this led to dramatic differences in mouse button and keyboard controls between themes. A user switching from one theme to the next would need to retrain their fingers based on theme design choices rather than the consistency of window manager settings.
Eventually enlightenment added a default actionclasses.cfg file (currently located in [INSTALL_BASE]/share/e16/config/actionclasses.cfg). It is used unless one exists within a theme.
The following is a table of the default actionclass names and the operations they preform.
| NAME | ACTIVATOR | DESCRIPTION |
|---|---|---|
| ACTION_AUTOSHADE | Cursor movement | Automatically shade window when mouse cursor enters and exits |
| ACTION_BUTTON_DRAG | Button 1,2,3 | Move desktop buttons |
| ACTION_GOTO_DESK_NEXT | Button 1,2,3 | Go to the next desktop |
| ACTION_GOTO_DESK_PREV | Button 1,2,3 | Go to the previous desktop |
| ACTION_ICONIFY | Button 1 Button 3 |
Iconify (or minimize) window Show the window operations menu |
| ACTION_KILL | Button 1 Button 3 |
Close window Forcibly destroy window |
| ACTION_LOWER | Button 1,2,3 | Lower window (push behind other windows) |
| ACTION_MAX | Button 1 Button 2 Button 3 |
Toggle between maximum screen size and normal size Toggle between maximum screen width and normal width Toggle between maximum screen height and normal height |
| ACTION_MAXH | Button 1,2,3 | Toggle between maximum screen height and normal height |
| ACTION_MAXW | Button 1,2,3 | Toggle between maximum screen width and normal width |
| ACTION_MENU | Button 1,2,3 | Show window options menu |
| ACTION_MOVE | Button 1 Button 2 Button 3 Button 4 (mousewheel up) Button 5 (mousewheel down) SHIFT Button 1 CTRL Button 1 CTRL-SHIFT Button 1 SHIFT Button 2 |
Move this window Shade/Unshade this window Show the Window Options menu Shade window Unshade window Start a group Add to current group Break window's group Show/Hide group borders |
| ACTION_RAISE | Button 1,2,3 | Raise window (place in front of other windows) |
| ACTION_RESIZE | Button 1 Button 3 |
Resize window Move window |
| ACTION_RESIZE_H | Button 1 Button 3 |
Resize window horizontally Move window |
| ACTION_RESIZE_V | Button 1 Button 3 |
Resize window vertically Move window |
| ACTION_SEND_NEXT | Button 1,2,3 | Send to next desktop |
| ACTION_SEND_PREV | Button 1,2,3 | Send to previous desktop |
| ACTION_SHADE | Button 1,2,3 | Shade/unshade window |
| ACTION_SNAPSHOT | Button 1,2,3 | Remember all window/border settings |
| ACTION_STICK | Button 1,2,3 | Toggle the Omnipresent (visible on all Desktops) state |
| ACTION_WINDOW_SLIDEOUT | Button 1,2,3 | Show more buttons |
If your theme has an actionclass.cfg base configuration file, then by default it overrides the system one and you would need to redefine all the default actionclasses over again. If you did this then your theme would not inherit any changes made to the system actionclasses.cfg file that may occur in the future.
To be able to extend the system actionclasses you will need to use the include_next directive in your themes actionclasses.cfg file like this:
#include_next "actionclasses.cfg"
This will include the system actionclasses.cfg file into your themes's actionclasses.cfg file. Then you'll just need to create any custom actionclasses.
In order to cover imageclasses best it will be covered in two parts. The first part will discuss the syntax and options. The second part will show how e16 uses them.
Let's start by covering just the required syntax for an imageclass.
__ICLASS __BGN __NAME IMAGE-1 __NORMAL "artwork/image-1.png" __END
Line 1 begins the imageclass
Line 2 gives it a name
Line 3 identifies the image to be used and in which state (explained more below)
Line 4 ends the imageclass
Each of those words beginning with two underscores is actually a keyword (remember those things we talked about back in the definitions part of the howto?). As you can see some keywords do not require arguments and others do.
Consider the following "my-image.png".
Now lets setup an e16 imageclass with that image to be used in the title bar of a border.
__ICLASS __BGN __NAME IMAGE-1 __NORMAL "artwork/my-image.png" __END
Hmph. So much for basics. See how the scaling process stretched out the beveled edge.
In order to get the desired affect we need to apply some imageclass properties. Below is a list of what's available.
__EDGE_SCALING __PADDING __FILLRULE __TILE __FILLRULE __STRETCH __FILLRULE __TILE_H __FILLRULE __TILE_V __FILLRULE __INTEGER_TILE_H __FILLRULE __INTEGER_TILE_V __FILLRULE __INTEGER_TILE __BEVEL __BEVEL_AMIGA __BEVEL __BEVEL_MOTIF __BEVEL __BEVEL_NEXT __BEVEL __BEVEL_DOUBLE __BEVEL __BEVEL_WIDEDOUBLE __BEVEL __BEVEL_THINPOINT __BEVEL __BEVEL_THICKPOINT __ROTATE __ROTATE_90 __ROTATE __ROTATE_180 __ROTATE __ROTATE_270 __FLIP __FLIP_HORIZONTAL __FLIP __FLIP_90 __FLIP __FLIP_VERTICAL __FLIP __FLIP_270
In order to fix our border we need to use __EDGE_SCALING and __PADDING.
Edge scaling identifies pixels from the edge of an image that are to be left "as is" when scaling the image. Its purpose is to preserve things like beveled edges so that the scaling/stretching process doesn't distort them as seen in the first example. In the example below, 3 pixels on both sides and 2 pixels on the top and bottom are not scaled in order to leave us our nice beveled look.
Padding is needed when you don't want text (or other images) to begin at the very edges of your image, similar to margins in a text document. See below how the "Eterm-0.9.4" text is positioned away from the edges of the image now? Text justification is done in the textclasses.
The values for both of these options impact the edges of an image in the following order: left, right, top, bottom.
Here's an example of what happens when we apply those properties.
__ICLASS __BGN __NAME IMAGE-1 __NORMAL "artwork/my-image.png" __EDGE_SCALING 3 3 2 2 __PADDING 10 10 4 4 __END
The default fill rule stretches the image. However, its possible to tile an image rather than stretch it.
Below is an image designed for tiling and how how e16 processes the tile directive for that same Eterm border. We maintain a nice pattern look as apposed to the distortion that would occur during any stretching of that image.
__ICLASS __BGN __NAME TILE-1 __NORMAL "artwork/tile-image.png" __FILLRULE __TILE __PADDING 10 10 4 4 __END
So far the only images we've used are declared using the '__NORMAL' keyword. This keyword controls image state. This is the only image state directive that's required in an imageclass. If you'd like to have more visual feedback when using your theme, however, then you need to create and include other images declared with the appropriate image state name.
The table below will help you understand the possible image states.
| Image State Name | Usage |
|---|---|
| __NORMAL | Always, unless a more specific image declaration overrides it |
| __HILITED | When mouse pointer hovers over the image |
| __CLICKED | When image is clicked on |
| __NORMAL_ACTIVE | When the window is currently focused |
| __HILITED_ACTIVE | Window is focused and pointer hovers the image |
| __CLICKED_ACTIVE | Window has focus and pointer is clicking the image |
| __NORMAL_STICKY | When window has been set to sticky (on all desktops) |
| __HILITED_STICKY | Window is sticky and pointer hovers the image |
| __CLICKED_STICKY | Window is sticky and pointer is clicking the image |
| __NORMAL_ACTIVE_STICKY | When window is sticky and focused |
| __HILITED_ACTIVE_STICKY | Window is sticky/focused and pointer is hovering image |
| __CLICKED_ACTIVE_STICKY | Window is sticky/focused and pointer is clicking the image |
Below is an example of using several image states in one image class. Edge scaling follows each image state to address any differences required for each image, but padding is only needed once.
__ICLASS __BGN __NAME IMAGE-1 __NORMAL "artwork/image-normal.png" __EDGE_SCALING 4 4 4 4 __HILITED "artwork/image-hilited.png" __EDGE_SCALING 4 4 4 4 __CLICKED "artwork/image-clicked.png" __EDGE_SCALING 4 4 4 4 __PADDING 8 8 8 8 __END
Imageclasses can be grouped into two categories. Those that are used directly by e16 (static) and those that are used in other parts of your theme configuration (dynamic).
Static imageclasses required a specific name. Dynamic imageclasses can be named anything. But, sticking with names that are found in this documentation helps when working on a lot of e16 themes.
Not all static imageclasses are required. As a matter of fact e16 defaults back to a generic gray image if you don't have something defined, but your theme probably wont look right if that happens. There are a few that can safely be ignored without this gray image being applied. They are identified in the below tables with an asterisk * next to their name.
The following syntax is used to depict how images are scaled in (width)x(height).
(-) image size is used
(*) scales as needed
(c) configuration defined
(c+) configuration defined to scale as needed
(25) image is scaled to (n) fixed pixels
For example:
(-)x(*) would use the image width but scale height as needed.
(*)x(25) would scale an image width as needed but force height to be 25 pixels.
(c)x(c+) both width and height are configuration controlled but width is fixed and height is scalable.
As noted in the structure part of the documentation, all imageclass configuration files are placed in the directory [THEME]/imageclasses/ and are included by the base config file [THEME]/imageclasses.cfg.
All imagery around your windows including the action buttons (ie. minimize, maximize, close, etc.)

| NAME | Category | Size |
|---|---|---|
| DEFAULT_TITLEBAR | dynamic | (c+)x(c) |
| DEFAULT_BOTTOMBAR | dynamic | (c+)x(c) |
| DEFAULT_SIDE_LEFT | dynamic | (c)x(c+) |
| DEFAULT_SIDE_RIGHT | dynamic | (c)x(c+) |
| DEFAULT_CORNER_TL | dynamic | (c)x(c) |
| DEFAULT_CORNER_TR | dynamic | (c)x(c) |
| DEFAULT_CORNER_BL | dynamic | (c)x(c) |
| DEFAULT_CORNER_BR | dynamic | (c)x(c) |
| DEFAULT_KILL | dynamic | (c)x(c) |
| DEFAULT_ICONIFY | dynamic | (c)x(c) |
| DEFAULT_MAXIMIZE | dynamic | (c)x(c) |
| DEFAULT_LOWER | dynamic | (c)x(c) |
The names for border imageclasses are all flexible because you call them from borderclasses. Try to be descriptive, it helps when working on your theme. If you have imageclasses that are only used for a particular border then prepend them with the border name like above (DEFAULT_).
The image used to displaying positional coordinates during window movement or resizing.

| NAME | Category | Size |
|---|---|---|
| COORDS | static | (*)x(*) |
The images used in the configuration and pop-up dialogs of e16.

| NAME | Category | Size |
|---|---|---|
| DIALOG | static | (*)x(*) |
| DIALOG_BUTTON | static | (*)x(*) |
| DIALOG_WIDGET_AREA | static | (*)x(*) |
| DIALOG_WIDGET_BUTTON | static | (*)x(*) |
| DIALOG_WIDGET_CHECK_BUTTON | static | (-)x(-) |
| DIALOG_WIDGET_RADIO_BUTTON | static | (-)x(-) |
| DIALOG_WIDGET_SEPARATOR | static | (*)x(c+) |
| DIALOG_WIDGET_SLIDER_BASE_HORIZONTAL | static | (*)x(-) |
| DIALOG_WIDGET_SLIDER_BASE_VERTICAL | static | (-)x(*) |
| DIALOG_WIDGET_SLIDER_KNOB_HORIZONTAL | static | (-)x(-) |
| DIALOG_WIDGET_SLIDER_KNOB_VERTICAL | static | (-)x(-) |
| SETTINGS_AREADESK_AREA | static | (*)x(*) |
| SETTINGS_AREA_AREA | static | (*)x(*) |
| SETTINGS_DESKTOP_AREA | static | (*)x(*) |
The image used for dockapps. See http://web.cs.mun.ca/~gstarkes/wmaker/dockapps/ for more information on these utility/monitoring programs.

| NAME | Category | Size |
|---|---|---|
| DEFAULT_DOCK_BUTTON | static | (64)x(64) |
Dragbar images. When you have multiple desktops configured, it allows you to slide back the current desktop and expose the one underneath. It sits on either the top, bottom, left, or right edge of the screen. The RAISE and LOWER buttons switch to previous and subsequent desktops.

| NAME | Category | Size |
|---|---|---|
| DESKTOP_DESKRAY_HORIZ | static | (-)x(-) |
| DESKTOP_DESKRAY_VERT | static | (-)x(-) |
| DESKTOP_DRAGBUTTON_HORIZ | static | (*)x(16) |
| DESKTOP_DRAGBUTTON_VERT | static | (16)x(*) |
| DESKTOP_LOWERBUTTON_HORIZ | static | (16)x(16) |
| DESKTOP_LOWERBUTTON_VERT | static | (16)x(16) |
| DESKTOP_RAISEBUTTON_HORIZ | static | (16)x(16) |
| DESKTOP_RAISEBUTTON_VERT | static | (16)x(16) |
The images needed for e16's custom utility and system monitoring programs.
| NAME | Category | Size |
|---|---|---|
| EPPLET_ARROW_DOWN | static | |
| EPPLET_ARROW_LEFT | static | |
| EPPLET_ARROW_RIGHT | static | |
| EPPLET_ARROW_UP | static | |
| EPPLET_BACKGROUND_HORIZONTAL | static | |
| EPPLET_BACKGROUND_VERTICAL | static | |
| EPPLET_BUTTON | static | |
| EPPLET_CLOSE | static | |
| EPPLET_CONFIGURE | static | |
| EPPLET_DRAWINGAREA | static | |
| EPPLET_EJECT | static | |
| EPPLET_FAST_FORWARD | static | |
| EPPLET_HBAR_BAR | static | |
| EPPLET_HBAR_BASE | static | |
| EPPLET_HELP | static | |
| EPPLET_HSLIDER_BASE | static | |
| EPPLET_HSLIDER_KNOB | static | |
| EPPLET_NEXT | static | |
| EPPLET_PAUSE | static | |
| EPPLET_PLAY | static | |
| EPPLET_POPUP_BASE | static | |
| EPPLET_POPUP_ENTRY | static | |
| EPPLET_PREVIOUS | static | |
| EPPLET_REPEAT | static | |
| EPPLET_REWIND | static | |
| EPPLET_SKIP | static | |
| EPPLET_STOP | static | |
| EPPLET_TOGGLEBUTTON_OFF | static | |
| EPPLET_TOGGLEBUTTON_ON | static | |
| EPPLET_VBAR_BAR | static | |
| EPPLET_VBAR_BASE | static | |
| EPPLET_VSLIDER_BASE | static | |
| EPPLET_VSLIDER_KNOB | static |
The image used when selecting running applications via "Alt-TAB". Each program listed repeats this image.

| NAME | Category | Size |
|---|---|---|
| WARPFOCUS | static | (*)x(*) |
The iconbox holds minimized applications. The images defined in here are also used for the SysTray that recent versions of e16 support.
| NAME | Category | Size |
|---|---|---|
| DEFAULT_ICON_BUTTON | static | (*)x(*) |
| ICONBOX_ARROW_DOWN | static | (12)x(12) |
| ICONBOX_ARROW_LEFT | static | (12)x(12) |
| ICONBOX_ARROW_RIGHT | static | (12)x(12) |
| ICONBOX_ARROW_UP | static | (12)x(12) |
| ICONBOX_COVER_HORIZONTAL * | static | (*)x(*) |
| ICONBOX_COVER_VERTICAL * | static | (*)x(*) |
| ICONBOX_HORIZONTAL | static | (*)x(*) |
| ICONBOX_SCROLLBAR_BASE_HORIZONTAL | static | (*)x(12) |
| ICONBOX_SCROLLBAR_BASE_VERTICAL | static | (12)x(*) |
| ICONBOX_SCROLLBAR_KNOB_HORIZONTAL | static | (*)x(8) |
| ICONBOX_SCROLLBAR_KNOB_VERTICAL | static | (8)x(*) |
| ICONBOX_SCROLLKNOB_HORIZONTAL | static | (8)x(8) |
| ICONBOX_SCROLLKNOB_VERTICAL | static | (8)x(8) |
| ICONBOX_VERTICAL | static | (*)x(*) |
The images defined here are used for the application menus and window/border menus.

| NAME | Category | Size |
|---|---|---|
| MENU_BG | dynamic | (*)x(*) |
| MENU_SEL | dynamic | (*)x(*) |
| MENU_SUB | dynamic | (*)x(*) |
The images used when the desktop pager is not drawing your active desktop(s).

| NAME | Category | Size |
|---|---|---|
| PAGER_BG | dynamic | (*)x(*) |
| PAGER_SEL * | dynamic | (*)x(*) |
| PAGER_WIN | dynamic | (*)x(*) |
The images needed for e16's pop-up help windows.

| NAME | Category | Size |
|---|---|---|
| TT_MAIN | dynamic | (*)x(*) |
| TT_LOGO | dynamic | (-)x(-) |
| TT_CLOUD1 | dynamic | (8)x(8) |
| TT_CLOUD2 | dynamic | (16)x(16) |
| TT_CLOUD3 | dynamic | (24)x(24) |
| TT_CLOUD4 | dynamic | (32)x(32) |
Enlightenment text processing can be broken into two components. Font selection
(known as font-aliases) and textclasses that define properties and location.
Font-aliases first appeared in version 16.8.4(?) to provide a more flexible way of changing theme fonts according to user needs. Prior to that, all font selection was specified by the theme in textclasses.cfg. Unfortunatly most themes didn't take into account the many locales that enlightenment was being ran in. The result was that many characters outside the standard ASCII set were not displayed properly -- if at all.
The reason they're called aliases is that instead of defining the font and size (such as "Vera/8") in a textclass item, you assign it a name and then just reference that "alias name" rather than the font itself.
By doing this, separate config files can now override font and size selection without disturbing text properties such as color and direction.
Without setting a custom file name, the font alias configuration files searched for are:
fonts.cfg
fonts.xft.cfg
fonts.pango.cfg
fonts.theme.cfg
Which one is used depends on compilation options and user settings. See the "post by Kim" in the "Font standards" forum thread for details.
What this means for themers is that by default the enlightenment [system wide] configuration is in control of theme fonts and will use either fonts.xft.cfg or fonts.pango.cfg depending on compilation options. Both Xft and Pango configurations use a well rounded Sans font installed on all modern systems. If for some reason your theme doesn't work well with the font sizes defined there, than you might want to copy the Xft and Pango font config files to your theme and modify the font sizes. Your copies will then take precidence and your theme will display properly. It's still best to use the "Sans" font though for good character support in all locales.
If you would like to do something more unique, however, then that's when fonts.theme.cfg should be used. If you have a specific TrueType font, place it in THEME/ttfont and then define your custom font configuration in THEME/fonts.theme.cfg. This file is used when e16 is set to use the theme font rather than system font.
Users override both theme and system fonts by defining what they want in either fonts.xft.cfg, fonts.pango.cfg, fonts.cfg or any other name they setup e16 to look for in ~/.e16/.
In order for a theme to work well with pre 1.0.0 versions of enlightenment, create a symbolic link fonts.cfg -> fonts.theme.cfg.
In order for users to have their own font alias config file in ~/.e16/ and have it affect all themes, there needs to be a standard in font alias names. Otherwise what a user defines may not match the font-aliasses defined in each themes textclasses.cfg file.
Below is a list of names used by fonts.xft.cfg and fonts.pango.cfg from the EROOT/config directory. Defining all of these (especially if you don't use them in textclasses.cfg) is not necessary, but using the names found in this list is most appropriate.
font-default
font-border
font-border-small
font-coords
font-dialog
font-dialog-hilite
font-epplet
font-epplet-small
font-epplet-medium
font-epplet-large
font-focus
font-iconbox
font-init
font-menu
font-pager
font-tooltip
Syntax for a font-aliases file is quite simple.
__FONT __BGN font-default "xft:sans-8:bold" __END
Line 1 begins the font alias definition
Line 2 defines the font alias
Line 3 ends the font alias definition
Other than defining more font aliases, this is all the syntax there is. There aren't any advanced or additional options.
There are a number of sources that e16 can use fonts from. Below is a list of sources and the syntax required for the font alias definition.
Fnlib - no longer supported, don't use it.
TrueType - Theme embedded TrueType font file located in the THEME/ttfont directory. FontForge is a good program to display and edit TrueType fonts.
font-default "Arial/12"
X Font - Old school (Type 1) X font selection. Use xfontsel, xlsfonts and xfd to view and capture the syntax for these fonts.
font-default "-*-helvetica-*-r-*-*-10-*-*-*-*-*-*-*" /* normal */
font-default "-*-helvetica-*-r-*--10-*-*-*-*-*-*-*,-*-*-*-r-*--10-*-*-*-*-*-*-*" /* multibyte */
Xft - Modern X font rendering system. Supports Type 1, TrueType, OpenType, and others. fc-list and xfd can be used to display fonts on the system.
font-default "xft:sans-8:bold"
Pango - GTK based font rendering system.
font-default "pango:sans bold 8"
The required syntax for textclasses is:
__TCLASS __BGN __NAME TEXT __NORMAL "*font-border" __END
Line 1 begins the textclass
Line 2 gives it a name
Line 3 identifies the font-alias and in which state (explained more below)
Line 4 ends the textclass
__FORGROUND_COLOR 255 255 255 __BACKGROUND_COLOR 0 0 0 __JUSTIFICATION 512 __DRAWING_EFFECT __EFFECT_NORMAL __DRAWING_EFFECT __EFFECT_SHADOW __DRAWING_EFFECT __EFFECT_OUTLINE __ORIENTATION __FONT_TO_UP __ORIENTATION __FONT_TO_DOWN __ORIENTATION __FONT_TO_LEFT __ORIENTATION __FONT_TO_RIGHT
| Text State Name | Usage |
|---|---|
| __NORMAL | Always, unless a more specific text declaration overrides it |
| __HILITED | When mouse hovers over the image |
| __CLICKED | When image is clicked on with the mouse |
| __NORMAL_ACTIVE | When the window is currently active |
| __HILITED_ACTIVE | Window is active and mouse hovers the image |
| __CLICKED_ACTIVE | Window is active and mouse is clicking the image |
| __NORMAL_STICKY | When window has been set to sticky (on all desktops) |
| __HILITED_STICKY | Window is sticky and mouse hovers the image |
| __CLICKED_STICKY | Window is sticky and mouse is clicking the image |
| __NORMAL_ACTIVE_STICKY | When window is sticky and currently active |
| __HILITED_ACTIVE_STICKY | Window is sticky/active and mouse is hovering image |
| __CLICKED_ACTIVE_STICKY | Window is sticky/active and image is being clicked |
COORDS
DIALOG
DIALOG_BUTTON
DIALOG_WIDGET_AREA
DIALOG_WIDGET_BUTTON
DIALOG_WIDGET_CHECK_BUTTON
DIALOG_WIDGET_RADIO_BUTTON
DIALOG_WIDGET_TABLE
DIALOG_WIDGET_TEXT
EPPLET_BUTTON
EPPLET_LABEL
EPPLET_POPUP
EPPLET_TEXT_LARGE
EPPLET_TEXT_MEDIUM
EPPLET_TEXT_TINY
EPPLET_TOGGLEBUTTON_OFF
EPPLET_TOGGLEBUTTON_ON
WARPFOCUS
/* Native cursor definitions */
XC_NONE
XC_x_CURSOR
XC_ARROW
XC_BASED_ARROW_DOWN
XC_BASED_ARROW_UP
XC_BOAT
XC_BOGOSITY
XC_BOTTOM_LEFT_CORNER
XC_BOTTOM_RIGHT_CORNER
XC_BOTTOM_SIDE
XC_BOTTOM_TEE
XC_BOX_SPIRAL
XC_CENTER_PTR
XC_CIRCLE
XC_CLOCK
XC_COFFEE_MUG
XC_CROSS
XC_CROSS_REVERSE
XC_CROSSHAIR
XC_DIAMOND_CROSS
XC_DOT
XC_DOTBOX
XC_DOUBLE_ARROW
XC_DRAFT_LARGE
XC_DRAFT_SMALL
XC_DRAPED_BOX
XC_EXCHANGE
XC_FLEUR
XC_GOBBLER
XC_GUMBY
XC_HAND1
XC_HAND2
XC_HEART
XC_ICON
XC_IRON_CROSS
XC_LEFT_PTR
XC_LEFT_SIDE
XC_LEFT_TEE
XC_LEFTBUTTON
XC_LL_ANGLE
XC_LR_ANGLE
XC_MAN
XC_MIDDLEBUTTON
XC_MOUSE
XC_PENCIL
XC_PIRATE
XC_PLUS
XC_QUESTION_ARROW
XC_RIGHT_PTR
XC_RIGHT_SIDE
XC_RIGHT_TEE
XC_RIGHTBUTTON
XC_RTL_LOGO
XC_SAILBOAT
XC_SB_DOWN_ARROW
XC_SB_H_DOUBLE_ARROW
XC_SB_LEFT_ARROW
XC_SB_RIGHT_ARROW
XC_SB_UP_ARROW
XC_SB_V_DOUBLE_ARROW
XC_SHUTTLE
XC_SIZING
XC_SPIDER
XC_SPRAYCAN
XC_STAR
XC_TARGET
XC_TCROSS
XC_TOP_LEFT_ARROW
XC_TOP_LEFT_CORNER
XC_TOP_RIGHT_CORNER
XC_TOP_SIDE
XC_TOP_TEE
XC_TREK
XC_UL_ANGLE
XC_UMBRELLA
XC_UR_ANGLE
XC_WATCH
XC_XTERM
Cover border definitions here.
Cover menustyles here.
Cover tooltips here.
ADD_BACKGROUND_CENTERED
ADD_BACKGROUND_SCALED
ADD_BACKGROUND_SCALED_RETAIN_ASPECT
ADD_BACKGROUND_SCALED_RETAIN_ASPECT_ALIGN_BOTTOM
ADD_BACKGROUND_SCALED_RETAIN_ASPECT_ALIGN_LEFT
ADD_BACKGROUND_SCALED_RETAIN_ASPECT_ALIGN_RIGHT
ADD_BACKGROUND_SCALED_RETAIN_ASPECT_ALIGN_TOP
ADD_BACKGROUND_TILED
ADD_BACKGROUND_TILED_CENTER
ADD_BACKGROUND_TILED_SCALED_HORIZONTALLY
ADD_BACKGROUND_TILED_SCALED_RETAIN_ASPECT
ADD_BACKGROUND_TILED_SCALED_VERTICALLY
ADD_OVERLAY_IMAGE_ASPECT
ADD_OVERLAY_IMAGE_BOTTOM_LEFT
ADD_OVERLAY_IMAGE_BOTTOM_MIDDLE
ADD_OVERLAY_IMAGE_BOTTOM_RIGHT
ADD_OVERLAY_IMAGE_CENTERED
ADD_OVERLAY_IMAGE_LEFT_MIDDLE
ADD_OVERLAY_IMAGE_RIGHT_MIDDLE
ADD_OVERLAY_IMAGE_SCALED
ADD_OVERLAY_IMAGE_TOP_LEFT
ADD_OVERLAY_IMAGE_TOP_MIDDLE
ADD_OVERLAY_IMAGE_TOP_RIGHT
SOUND_ALERT
SOUND_BUTTON_CLICK
SOUND_BUTTON_RAISE
SOUND_DEICONIFY
SOUND_DESKTOP_LOWER
SOUND_DESKTOP_RAISE
SOUND_DESKTOP_SHUT
SOUND_ERROR_IPC
SOUND_EXIT
SOUND_FOCUS_SET
SOUND_GROUP_SETTINGS_ACTIVE
SOUND_ICONIFY
SOUND_INSERT_KEYS
SOUND_LOGOUT
SOUND_LOWER
SOUND_MENU_SHOW
SOUND_MOVE_AREA_DOWN
SOUND_MOVE_AREA_LEFT
SOUND_MOVE_AREA_RIGHT
SOUND_MOVE_AREA_UP
SOUND_MOVE_RESIST
SOUND_MOVE_START
SOUND_MOVE_STOP
SOUND_NEW_ICONBOX
SOUND_RAISE
SOUND_RESIZE_START
SOUND_RESIZE_STOP
SOUND_SCANNING
SOUND_SETTINGS_ACTIVE
SOUND_SETTINGS_AREA
SOUND_SETTINGS_AUDIO
SOUND_SETTINGS_AUTORAISE
SOUND_SETTINGS_BG
SOUND_SETTINGS_DESKTOPS
SOUND_SETTINGS_FOCUS
SOUND_SETTINGS_FX
SOUND_SETTINGS_GROUP
SOUND_SETTINGS_MOVERESIZE
SOUND_SETTINGS_PAGER
SOUND_SETTINGS_PLACEMENT
SOUND_SETTINGS_TOOLTIPS
SOUND_SHADE
SOUND_SLIDEOUT_SHOW
SOUND_STARTUP
SOUND_UNSHADE
SOUND_WAIT
SOUND_WINDOW_BORDER_CHANGE
SOUND_WINDOW_CHANGE_LAYER_DOWN
SOUND_WINDOW_CHANGE_LAYER_UP
SOUND_WINDOW_CLOSE
SOUND_WINDOW_SLIDE
SOUND_WINDOW_SLIDE_END
SOUND_WINDOW_STICK
Cover the init.cfg file.