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: ``` 0000FF 00FF00 image ./theme/background.png 0 0 1 1 0 0 ``` All themes must be enclosed in a `` 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. Components are rendered in the order they are defined - that means you'll want to define the background first, a header image second, etc. The "image" component ===================== Used to display an image. `` - path to the image file. Most common file types are supported, and . and ~ are properly expanded. `` - the position, as two screen percentages, at which to display the image. `` - the dimensions, as two screen percentages, that the image will be resized to. Make one axis 0 to keep the aspect ratio. `` - the point on the image that `` defines, as an image percentage. "0.5 0.5", the center of the image, by default. `` - if present, the image is tiled instead of resized. Tiling isn't exact at the moment, but good enough for backgrounds. 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. `` - the hex font color to use for games on the GuiGameList. `` - the hex font color to use for folders on the GuiGameList. `` - the hex font color to use for the description on the GuiGameList. `` - the hex color to use for the "selector bar" on the GuiGameList. `` - if present, the games list names will be left aligned to $infoWidth. `` - if present, the system name header won't be displayed (useful for replacing it with an image). `` - 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. Bugs ==== Hexidecimal colors might be read in backwards. Woops. I'll get around to fixing this eventually. -Aloshi http://www.aloshi.com