Thanks for contributing to the xfetch theme registry. 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 the user's config.
- Fork the repository and create a feature branch.
- Create the theme file at
colors/<name>.jsonc. - Add the matching entry to
index.json(and extendschema.jsononly if you add a new field). -
Run the validation CI locally before opening the PR:
bash scripts/ci.sh(Linux/macOS) or./scripts/ci.ps1(Windows). It parsesindex.jsonand every theme file. - Test end-to-end:
xfetch theme set <name>or install it with thetheme-managerplugin. - Add an entry to CHANGELOG.md.
- Open a pull request. PRs that fail validation are rejected.
- No
iconsblock. Icons are a per-user font choice; the core fills them from defaults. A theme withiconsis rejected. - Only visual fields are allowed:
colors,logo_color,logo_colors,layout,palette_style,show_colors,header_icons,footer_text,logo_path. - Declare only what the theme changes — themes are merged over the user's config and must not set module lists or other non-visual keys.
- Color values use the supported names (
Black–White,Grey/Gray, dark variants) — any module key works, includingplugin:<name>entries. logo_coloris the theme's primary accent for the ASCII logo;logo_colorsoptionally colors the logo per row (array of colors, cycled by row).- Use
tagsconsistently (e.g.dark,light,minimal,popular) sotheme-managersearch keeps working.
{
"name": "my-theme",
"author": "you",
"version": "1.0.0",
"description": "One-line description for listings.",
"layout": "section", // optional; must be a valid layout name
"palette_style": "circles", // optional; squares | circles | triangles | lines
"tags": ["dark", "minimal"],
"source": "https://raw.githubusercontent.com/xfetch-cli/themes/main/colors/my-theme.jsonc"
}
The source URL must point at the theme file in this repository
(colors/<name>.jsonc), and every index entry must have a
matching file on disk.
Be respectful, constructive, and collaborative. Harassment, trolling, and personal attacks are not tolerated.