xfetch is a highly customizable, cross-platform system information fetching tool written in Rust. Inspired by tools like fastfetch and neofetch, it prioritizes performance, flexibility, and extensive styling options. It supports Linux, Windows, and macOS, and allows users to define custom layouts, logos (text and image), icons, and color schemes via a JSONC configuration file.
The primary goal of xfetch is to provide a unified and visually appealing way to display system information across different operating systems. It aims to be:
- Fast: Minimal execution time.
- Flexible: Users should be able to make it look exactly how they want.
- Portable: Single binary deployment for ease of use.
- Language: Rust (for safety and performance).
- System Info: Uses
sysinfocrate for gathering hardware and OS details. - Configuration: Uses
serdeandjson_commentsto parse JSONC config files. - UI/Terminal: Uses
crosstermfor cross-platform TUI operations andviuerfor image rendering in supported terminals.
- Core Infrastructure: Initialized Rust project with necessary dependencies (
sysinfo,clap,crossterm,serde,viuer). - Cross-Platform Support: Implemented detection and fetching logic for Linux, Windows, and macOS.
- System Information Modules:
- OS Name & Architecture
- Kernel Version
- Uptime
- Shell Detection
- CPU Model & Frequency
- GPU Detection (Discrete/Integrated)
- Memory Usage
- Disk Usage
- Battery Status
- Package Count (pacman, dpkg, scoop)
- Configuration System:
- JSONC file support (
config.jsonc). - Custom module ordering.
- Toggleable ANSI colors.
- Custom icons per module (Nerd Fonts support).
- Custom colors per module.
- JSONC file support (
- Visual Customization:
- Custom ASCII art support via text files.
- Image/SVG logo support via
viuer. - Pac-Man Layout: Dedicated layout mode with custom header/footer borders and icons.
- Side-by-side layout logic (Logo + Info).
- Assets & Examples:
- Created 20+ example configurations (
configs/). - Created sample logos (
logos/- txt and svg).
- Created 20+ example configurations (
- Documentation:
- Installation Guide (
INSTALLATION.md). - Configuration Guide (
CONFIGURATION.md). - Quick Install Script (
install.sh).
- Installation Guide (
- Expanded Package Manager Support: Add support for
rpm,apk,nix,brew,chocolatey. - Network Module: Display local/public IP (optional/privacy-focused).
- Music Player Info: Fetch currently playing song (MPD, Spotify, etc.).
- Weather Module: Fetch local weather.
- More Layouts: Add "bottom", "compact", or "horizontal" layouts.
- Performance Optimization: Parallelize slow hardware probes.
- CI/CD: Automated builds and binary releases on GitHub Actions.
- Themes Repository: A way to easily download community themes.