Skip to content

Latest commit

 

History

History
62 lines (52 loc) · 3.07 KB

File metadata and controls

62 lines (52 loc) · 3.07 KB

Contributing Themes

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.

Workflow

  1. Fork the repository and create a feature branch.
  2. Create the theme file at colors/<name>.jsonc.
  3. Add the matching entry to index.json (and extend schema.json only if you add a new field).
  4. Run the validation CI locally before opening the PR: bash scripts/ci.sh (Linux/macOS) or ./scripts/ci.ps1 (Windows). It parses index.json and every theme file.
  5. Test end-to-end: xfetch theme set <name> or install it with the theme-manager plugin.
  6. Add an entry to CHANGELOG.md.
  7. Open a pull request. PRs that fail validation are rejected.

Theme Rules

  • No icons block. Icons are a per-user font choice; the core fills them from defaults. A theme with icons is 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 (BlackWhite, Grey/Gray, dark variants) — any module key works, including plugin:<name> entries.
  • logo_color is the theme's primary accent for the ASCII logo; logo_colors optionally colors the logo per row (array of colors, cycled by row).
  • Use tags consistently (e.g. dark, light, minimal, popular) so theme-manager search keeps working.

The index entry (index.json)

{
    "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.

Code of Conduct

Be respectful, constructive, and collaborative. Harassment, trolling, and personal attacks are not tolerated.