xfetch banner

A cross-platform system information fetching tool written in Rust.

Installation

Choose your platform. The quick installer handles everything — including Rust setup if needed.

# One-liner (curl)
curl -fsSL https://raw.githubusercontent.com/xscriptor/xfetch/main/install.sh | bash

# Custom prefix
bash <(curl -fsSL ...) --prefix /usr/local

After install, just run:

$ xfetch
$ xfetch --version
$ xfetch --gen-config

Features

From OS detection to animated ASCII art — xfetch packs a punch in a single binary.

System information

OS, kernel, CPU, GPU, memory, disk, battery, uptime, packages, shell, terminal, WM/DE and more.

Cross-platform

Works on Linux, Windows, and macOS. Same tool, same config — everywhere.

Multiple layouts

Classic side-by-side, Pac-Man, tree, section, side-block, box, lines, dots, and bottom-line.

JSONC config

Full customization via config.jsonc — modules, icons, colors, logos, and layouts.

Color palette

Built-in ANSI color palette display with square, circle, triangle, and line styles.

Plugin system

Extend with external plugins via JSON over stdin/stdout. Animate logos, fetch GitHub stats, and more.

Logo animation

Animate ASCII logos with sweep, wave, rainbow, sparkle, breathing, and frame-by-frame styles.

N

NERD Font icons

Customizable Nerd Font icons per module. Use emojis, text, or any Unicode glyph.

ASCII & image logos

Display text logos with ANSI colors or image files (png, jpg, svg) via viuer.

● Live demo

See it in action

Watch xfetch display your system information in real time. This is a simulated terminal session.

xfetch — bash

Click to replay

Available modules

Every piece of information xfetch can display. Mix, match, and reorder them in your config.

osOperating system name, version & architecture
kernelKernel version
hostnameMachine hostname
uptimeSystem uptime
packagesPackage count (pacman, dpkg, scoop, brew, etc.)
shellCurrent shell (bash, zsh, powershell)
terminalTerminal emulator
wmWindow Manager / Desktop Environment
cpuCPU model, cores & frequency
gpuGPU model(s) — integrated & discrete
memoryRAM used / total with percentage
swapSwap usage
diskDisk usage
batteryBattery level & status (charging/discharging)
userCurrent username
datetimeCurrent date & time
local_ipLocal IP address
paletteANSI color palette (squares, circles, triangles, lines)

Layout showcase

xfetch ships with 9 built-in layouts. Each has a distinct visual style for different preferences.

{
  "layout": null
}

Default (Classic)

Logo on the left, info on the right. Clean and familiar.

{
  "layout": "pacman"
}

Pac-Man

Boxed layout with Pac-Man header and footer. Fun and retro.

{
  "layout": "section",
  "modules": [
    { "type": "group", "title": "Hardware",
      "modules": ["cpu","gpu","memory"] },
    { "type": "group", "title": "Software",
      "modules": ["os","shell"] }
  ]
}

Section

Grouped modules with clear section headers.

{
  "layout": "side-block"
}

Side Block

Keys and values in separate side-by-side boxes.

{
  "layout": "tree",
  "modules": [
    { "type": "group", "title": "OS",
      "modules": ["os","kernel","packages"] },
    { "type": "group", "title": "PC",
      "modules": ["cpu","gpu","memory"] }
  ]
}

Tree

Hierarchical tree with nested groups. Great for organizing.

{
  "layout": "box"
}

Box

All info enclosed in a rounded box.

Configuration

Toggle modules and pick a layout to generate a config.jsonc.

Modules

Layout

Generated config.jsonc

{
  "modules": [
    "os",
    "kernel",
    "uptime",
    "packages",
    "shell",
    "wm",
    "cpu",
    "gpu",
    "memory",
    "disk",
    "palette"
  ],
  "show_colors": true
}

Use a custom config file:

xfetch --config path/to/my_config.jsonc

Plugin system

xfetch communicates with external plugins via JSON over stdin/stdout. Install, list, and remove plugins with simple CLI commands.

# Install from local path
xfetch plugin install ./plugins/animate-logo

# List installed
xfetch plugin list

# Remove
xfetch plugin remove animate-logo

animate-logo

Animates ASCII logos with multiple color effects via JSON protocol.

sweepwaverainbowsparklebreathingframe

github-stats

Fetches GitHub user stats via the public API.

githubapi

custom

Any executable reading JSON from stdin and writing JSON to stdout works.

JSON protocolany language

Plugin discovery: explicit path → xfetch-plugin-<name> in PATH → ~/.config/xfetch/plugins/./plugins/<name>/target/release

Usage

Simply run xfetch in your terminal:

xfetch

Roadmap

What's planned for xfetch — from additional package managers to a daemon mode. Contributions welcome!

Phase 0-3 — Foundation & modules

Core system, all info modules, 20+ example configs, install scripts, layouts, documentation.

Phase 4 — Package manager expansion

RPM, APK (Alpine), Nix, Homebrew, Chocolatey, multi-manager detection, performance optimization.

Phase 5 — Network & connectivity

Local/public IP (with privacy toggle), IPv6, network interface display.

Phase 6 — Enhanced modules

Music player (MPD), Spotify, weather, timezone, user info, display resolution, theme detection.

Phase 7 — Additional layouts

Compact, horizontal, bottom, minimal (text-only), layout preview documentation.

Phase 8 — Performance

Parallel probing, caching, lazy loading, benchmarking, profiling, modularized files.

Phase 9 — CI/CD & distribution

GitHub Actions, macOS/Windows binaries, Homebrew tap, AUR, install scripts, changelog automation.

Phase 10 — Community & ecosystem

Themes registry, plugin system, theme download manager, community contributions, theme preview tool.

Phase 11 — Testing & QA

Unit/integration tests, clippy, rustfmt, platform-specific tests, cross-platform suite, coverage.

Phase 12 — Advanced features

Custom scripting, conditional modules, theme variables, daemon mode, hot-reload, telemetry (opt-in).

Phase 13 — Marketing

User manual, video tutorials, project website, blog posts, comparison guide, community channel.

Uninstall

Quick uninstall

curl -fsSL https://raw.githubusercontent.com/xscriptor/xfetch/main/uninstall.sh | bash

Manual uninstall

rm ~/.local/bin/xfetch
rm -rf ~/.config/xfetch