ES-DE/THEMES.md
Aloshi 06dd1a9f60 Bug fixes and a few minor requested changes.
See changelog.txt (August 13, part 2) for specifics.
2012-08-13 20:27:39 -05:00

3.1 KiB

Themes

EmulationStation allows each system to have its own "theme." A theme is a collection of display settings and images defined in an XML document.

ES will check two places for a theme: first, the system's search directory for theme.xml. Then, if that's not found, $HOME/.emulationstation/es_theme.xml.

Almost all positions, dimensions, etc. work in percentages - that is, they are a decimal between 0 and 1, representing the percentage of the screen on that axis to use. This ensures that themes look similar at every resolution.

Example

Here's a simple theme that defines some colors and displays a background:

<theme>
	<listPrimaryColor>0000FF</listPrimaryColor>
	<listSecondaryColor>00FF00</listSecondaryColor>

	<component>
		<type>image</type>
		<path>./theme/background.png</path>
		<pos>0 0</pos>
		<dim>1 1</dim>
		<origin>0 0</origin>
	</component>
</theme>

All themes must be enclosed in a <theme> tag.

Components

A theme is made up of components, which have various types. At the moment, the only type is image. Components can be nested for your own organization. In the future, you may be able to get data from a parent.

The "image" component

Used to display an image.

<path> - path to the image file. Most common file types are supported, and . and ~ are properly expanded.

<pos> - the position, as two screen percentage, at which to display the image.

<dim> - the dimensions, as two screen percentages, that the image will be resized to. Make one axis 0 to keep the aspect ratio.

<origin> - the point on the image that defines, as an image percentage. "0.5 0.5", the center of the image, by default.

<tiled /> - if present, the image is tiled instead of resized. Tiling isn't exact at the moment, but good enough for backgrounds.

<useAlpha /> - if present, the image will not be stripped of its alpha channel. It will render much slower, but should have transparency.

Display tags

Display tags must be at the root of the tree - for example, they can't be inside a component tag. They are not required.

<listPrimaryColor> - the hex font color to use for games on the GuiGameList.

<listSecondaryColor> - the hex font color to use for folders on the GuiGameList.

<descColor> - the hex font color to use for the description on the GuiGameList.

<listSelectorColor> - the hex color to use for the "selector bar" on the GuiGameList.

<listLeftAlign /> - if present, the games list names will be left aligned to $infoWidth.

<hideHeader /> - if present, the system name header won't be displayed (useful for replacing it with an image).

<hideDividers /> - if present, the divider between games on the detailed GuiGameList won't be displayed.

List of variables

Variables can be used in position and dimension definitions. They can be added, subtracted, multiplied, and divided. Parenthesis are valid. They are a percentage of the screen.

$headerHeight - height of the system name header. $infoWidth - where the center of the horizontal divider is drawn.

-Aloshi http://www.aloshi.com