This project is open and welcoming. Be respectful, constructive, and collaborative. Harassment, trolling, and personal attacks are not tolerated.
- Fork the repository on GitHub.
- Clone your fork locally.
- Create a feature branch (
git checkout -b feature/my-change). - Make your changes following the project conventions.
- Run
cargo buildandcargo testto verify everything works. - Commit your changes with a clear message.
- Push to your fork.
- Open a Pull Request from your branch to the main repository.
Plugins are standalone executables that extend xfetch's functionality. To add a new plugin to the repository, follow this process:
Fork the repository on GitHub and clone your fork locally:
git clone https://github.com/YOUR_USERNAME/xfetch.git
cd xfetch
git checkout -b plugin-my-pluginCreate your plugin under the plugins/ directory following the naming convention:
plugins/my-plugin/
├── Cargo.toml # name = "xfetch-plugin-<name>"
├── README.md # Documentation (HTML format, centered titles)
└── src/
└── main.rs # Plugin implementationYour plugin must communicate with xfetch via stdin/stdout using JSON:
- Read exactly one JSON object from stdin.
- Write exactly one JSON response object to stdout.
- Write errors to stderr and exit with non-zero status on failure.
See plugins/docs/README.md for the full protocol specification.
# Build your plugin
cargo build --release --manifest-path plugins/my-plugin/Cargo.toml
# Install it locally
xfetch plugin install ./plugins/my-plugin
# Run xfetch and verify it appears
xfetch- Add a
README.mdfor your plugin documenting its features, configuration, and output. - Add an entry for your plugin in plugins/README.md under the "Available Plugins" table.
git add plugins/my-plugin/ plugins/README.md
git commit -m "feat(plugins): add my-plugin"
git push origin plugin-my-plugin
Open a PR from your branch to the main repository's main branch.
In the PR description, include:
- A brief description of what your plugin does.
- The kind of plugin (
info_providerorlogo_animation). - Any dependencies required (e.g.,
curl,dockerCLI). - Screenshot or example output (optional but recommended).
- Use
cargo buildandcargo testbefore submitting. - Follow existing code style — no trailing whitespace, consistent indentation.
- Write all code, comments, and documentation in English.
- Keep plugins focused on a single responsibility.
- Minimize dependencies to keep build times fast.
- Do not add network calls or file I/O to animation plugins — they should be pure transformations.
Open an issue on GitHub with a clear description of the problem, steps to reproduce, and your environment (OS, terminal emulator, xfetch version).
By contributing, you agree that your contributions will be licensed under the project's LICENSE.