Les thèmes ont une certaine structure de dossiers et de fichiers. Tout vous est décrit ci-dessous.
Tous les fichiers qui composent un thème sont au format XML. C'est un langage simple à utiliser. Il utilise des balises classiques comme <balise></balise> ou des balises auto-fermantes <balise />.
: nouveau
: déprécié, à ne plus utiliser, supprimé dans une future version
Tout thème est composé de pleins de dossiers.
Pour chaque système disponible dans Recalbox, vous avez un dossier contenant tous les images correspondantes au système.
Liste des systèmes virtuels par genre
Liste des systèmes virtuels arcade
A la racine de n'importe quel thème, vous avez un fichier nommé theme.xml. Celui-ci contient des informations concernant les objets généraux tel que la configuration du menu, de la barre d'aide, etc.
Dans chaque système vu dessus, vous aurez un fichier xml (le nom du fichier dépendra de votre envie) qui contiendra les informations du système comme les textes d'informations et les couleurs des 4 barres verticales à droite de votre écran avec le thème par défaut.
Recalbox accepte 2 façons d'écrire les fichiers XML des thèmes.
Ancienne façon :
<theme>
<include>chemin/a/inclure1</include>
<include>chemin/a/inclure2</include>
...
<include>chemin/a/inclureX</include>
<view name="...">
<object>
<property1>valeur</property1>
<property2>valeur</property2>
...
<propertyX>valeur</propertyX>
</object>
...
</view>
...
<view name="...">
<object>
...
</object>
...
</view>
</theme>
Nouvelle façon :
<theme>
<include>chemin/a/inclure1</include>
<include>chemin/a/inclure2</include>
...
<include>chemin/a/inclureX</include>
<view name="...">
<object property1="valeur" property2="valeur" propertyX="valeur" />
...
</view>
...
<view name="...">
<object>
...
</object>
...
</view>
</theme>
La documentation ici présente se focalisera sur la nouvelle façon de concevoir les thèmes. Le contenu exact est décrit dans les autres tutoriels concernant les thèmes.
Chaque système charge et re-interprête le thème. Il faut considérer le thème comme une entité qui va être chargé et totalement re-interprété dans les cas suivants :
<theme> et <view><theme>Concernant cet exemple, tout fichier xml du thème commence se trouve entre les balises <theme></theme>.
Cette balise peut contenir 5 propriétés :
nameLa propriété name indique le nom du thème. Celui-ci peut être différent du nom du dossier du thème. Ce nom sera visible dans la liste des thèmes disponibles.
Exemple :
name="Mon propre thème"
Sans cette propriété, le nom du dossier du thème sera utilisé.
recalboxLa propriété recalbox indique la version minimale de Recalbox auquel le thème peut être utilisé. Ceci vous permet d'indiquer si le thème est compatible avec la version de Recalbox installée.
Exemple :
recalbox="9.2"
Sans cette propriété, le thème pourra être utilisée sur n'importe quelle version de Recalbox.
versionL'attribut version indique la version du thème. Si cette information existe, elle sera visible dans la liste des thèmes disponibles.
Exemple :
version="3.1"
Sans cette propriété, la version du thème ne sera pas affichée dans la liste des thèmes.
compatibilityL'attribut compatibility indique le type d'écran auquel le thème est compatible. Le thème peut être compatible avec un seul type d'écran ou plusieurs.
Liste des valeurs possibles :
hdmi : écrans HDMIcrt : écrans CRTjamma : écrans JAMMAtate : écrans verticaux TATEExemple :
compatibility="hdmi,jamma"
Sans cette propriété, le thème sera considéré comme compatible uniquement hdmi.
resolutionsL'attribut resolutions permet d'indiquer les tranches de résolutions avec lesquelles le thème est compatible. Il peut contenir plusieurs valeurs, séparés par une virgule.
Liste des valeurs possibles :
qvga : résolutions QVGA (<= 288p)vga : résolutions VGA (<= 576p)hd : résolutions HD (<= 920p)fhd : résolutions Full HD (> 920p)Exemple :
resolutions="hd,fhd"
Sans cette propriété, le thème sera considéré comme compatible uniquement hd, fhd.
formatVersion 
La balise formatVersion permet d'indiquer la version du format du contenu régissant le thème.
formatVersion="5"
<view>La balise <view></view> ainsi que les objets enfants sont décrit dans la page des objets.