Themes are partial JSONC configs: they declare only what they want to change (colors, logo color, layout, palette style), and the core merges them over your config. Icons are not part of themes — they are a per-user font choice.
themes/
├── index.json # Registry index: metadata + source for every theme
├── schema.json # JSON schema for the index
├── colors/ # The theme files themselves (*.jsonc)
├── README.md
└── CHANGELOG.md- xfetch loads
"theme": "<name>"from your config and merges the theme over the defaults. xfetch theme list|set|remove|exportmanage installed themes locally.- The
theme-managerplugin (see xfetch-cli/plugins) lists, searches, inspects and installs themes from this registry.
{
"themes": [
{
"name": "dracula",
"author": "xscriptor",
"version": "1.0.0",
"description": "Dark magenta, red, and cyan palette ...",
"layout": "section",
"palette_style": "circles",
"tags": ["dark", "dracula", "popular"],
"source": "https://raw.githubusercontent.com/xfetch-cli/themes/main/colors/dracula.jsonc"
}
]
}- Create
colors/<name>.jsoncwith only the fields you want to change (colors,logo_color,layout,palette_style,show_colors, ...). - Add an entry to
index.jsonwith the metadata above; tag itdarkorlightso users can pick for their terminal. - Add a note in
CHANGELOG.mdand open a PR.
{
"layout": "section",
"show_colors": true,
"palette_style": "circles",
"logo_color": "Magenta",
"colors": {
"os": "Magenta",
"cpu": "Red",
"memory": "Yellow",
"shell": "Green"
}
}