The header: the <theme> tag
What identifies your theme — and belongs ONLY in theme.xml.
<theme> is the root of every XML file in a theme. But its identity attributes only make sense in theme.xml: that is the file the theme manager reads to know what it is dealing with.
Remember In
theme.xml, fill them all in: without them, your theme shows up with no name, no version, and the manager does not know which screens it works on. In the other files, write a bare<theme>: repeating them brings nothing and can sow confusion.
The attributes
| Attribute | Role | Example | If missing |
|---|---|---|---|
name | Name shown in the theme list | name="My Theme" | the folder name |
version | Theme version | version="1.2" | not shown |
author | The author | author="Benoît" | not shown |
recalbox | Minimum Recalbox version required | recalbox="10.0" | all versions |
compatibility | Supported screen types: hdmi, crt, jamma, tate | compatibility="hdmi,crt" | hdmi |
resolutions | Supported resolutions: qvga, vga, hd, fhd | resolutions="hd,fhd" | fhd,hd |
compatibility and resolutions are exactly the pictograms shown by the theme manager: HDMI / CRT / JAMMA / TATE on one side, SD 240p / SD+ 480p / HD 720p / FULLHD 1080p on the other. Announcing them wrong is promising what the theme does not deliver.
⚠️ Without them, your theme cannot be published in the theme manager: the official repository requires a name, a version and an author. See Sharing your theme.
The two cases
In theme.xml — the full tag:
<theme name="My Theme" version="1.2" author="Benoît"
recalbox="10.0" compatibility="hdmi,crt" resolutions="hd,fhd">
…
</theme>
In every other file of the theme — the bare tag:
<theme>
<view name="system"> … </view>
</theme>