leenfetch 1.0.1

Fast, minimal, customizable system info tool in Rust (Neofetch alternative)
leenfetch-1.0.1 is not a library.
Visit the last successful build: leenfetch-1.1.0

๐Ÿง  LeenFetch

Crates.io License: MIT Build and Release

A fast, minimal, and customizable system information tool built in Rust โ€” your alternative to Neofetch, for real power users.

โš ๏ธ LeenFetch is under active development. Expect bugs and improvements regularly!

Want to help? Contributions, testing, and feedback are always welcome!

๐Ÿ’ฌ Feedback & Issues

Found a bug? Got a feature idea?
Head over to the issues or join the discussions page!

๐Ÿ“š Table of Contents

๐Ÿ“ธ Screenshots

๐Ÿš€ Features

  • โšก Blazing fast startup thanks to Rust
  • ๐ŸŽจ Customizable output layout with colorized terminal output
  • ๐Ÿงฉ Modular design โ€” enable or disable components via config
  • ๐Ÿ’พ Smart defaults but easily extendable
  • ๐Ÿ“ฆ Detects installed packages, shell, GPU, DE/WM, and more
  • ๐Ÿ–ผ๏ธ Custom ASCII art support and override via config
  • ๐ŸŽจ Supports theme-based color profiles (ascii_colors=distro, etc.)
  • ๐Ÿ”Œ Single JSONC config: ~/.config/leenfetch/config.jsonc
  • ๐Ÿงต Accepts piped ASCII input โ€” use fortune | cowsay | leenfetch for dynamic text logos

โ–จ Packaging Status

Repository status

๐Ÿ“ฆ Installation

Install on Arch Linux (via AUR)

If you're on Arch Linux or an Arch-based distribution (like Manjaro), you can install LeenFetch from the AUR using an AUR helper like yay:

yay -S leenfetch

or

git clone https://aur.archlinux.org/leenfetch.git
cd leenfetch
makepkg -si

Install on Debian / Ubuntu (via .deb)

If you're on Debian, Ubuntu, or a Debian-based distribution, you can download and install the .deb package from the GitHub Releases:

  • AMD64 (x86_64)
wget https://github.com/drunkleen/leenfetch/releases/download/v0.2.1/leenfetch-v0.2.1-debian-x86_64.deb
sudo dpkg -i leenfetch-*.deb
  • AArch64 (ARM64)
wget https://github.com/drunkleen/leenfetch/releases/download/v0.2.1/leenfetch-v0.2.1-debian-aarch64.deb
sudo dpkg -i leenfetch-*.deb

Install on Fedora / RHEL (via .rpm)

If you're using Fedora, RHEL, or another RPM-based distro, you can install LeenFetch using the .rpm file from GitHub Releases:

  • AMD64 (x86_64)
wget https://github.com/drunkleen/leenfetch/releases/download/v0.2.1/leenfetch-v0.2.1-REHL-x86_64.rpm
sudo rpm -i leenfetch-*.rpm

Install on Windows (via .zip)

If you're on Windows, download the latest .zip from the GitHub Releases:

powershell:

  • AMD64 (x86_64)
Invoke-WebRequest -Uri "https://github.com/drunkleen/leenfetch/releases/download/v0.2.1/leenfetch-v0.2.1-windows-x86_64.zip" -OutFile "leenfetch-win.zip"
Expand-Archive .\leenfetch-win.zip -DestinationPath .

.\leenfetch-v0.2.1-windows-x86_64.exe

Make sure you're in the same directory as leenfetch.exe when running the command.


Install from crates.io

Make sure you have Rust & Cargo installed:

cargo install leenfetch

After that, just run:

leenfetch

If you hit issues with PATH, try adding ~/.cargo/bin to your shell:

export PATH="$HOME/.cargo/bin:$PATH"

๐Ÿ› ๏ธ Manual Installation (Build from Source)

git clone https://github.com/drunkleen/leenfetch.git
cd leenfetch
cargo build --release

Add to PATH:

cp target/release/leenfetch ~/.local/bin/

Then run:

leenfetch

๐Ÿ“ฅ Using Piped Input

LeenFetch can accept piped input to use as the ASCII logo.

This allows you to create dynamic, fun logos on the fly using other command-line tools.

Examples:

echo "Rustacean" | leenfetch
fortune | cowsay | leenfetch

LeenFetch will detect piped input via stdin and render the ASCII art above your system information.

If no piped input is provided, it will fall back to your configured or auto-detected ASCII art.


โš™๏ธ Configuration

On first run, LeenFetch writes a single config.jsonc file to your configuration directory:

# Linux
~/.config/leenfetch/config.jsonc

# Windows
C:\Users\<username>\AppData\Roaming\leenfetch\config.jsonc

The file uses JSON with comments (JSONC), so you can keep inline explanations next to your settings. It combines the previous trio of files into a single document with clear sections:

  • flags โ€” Controls display and formatting options for each block.
  • modules (alias layout) โ€” Controls the order, headings, and custom rows in the output.
  • (optional) logo โ€” Override ASCII art source, colors, and padding.

flags section

The flags object lets you fine-tune how each block of information is displayed. Pick ASCII art, choose units, and decide how detailed each line should be. Notable options include distro_display for OS formatting, package_managers for package summaries, uptime_shorthand and os_age_shorthand for duration formatting, plus boolean switches for CPU details, shell paths, and refresh rates.

If input is piped into leenfetch, the ASCII logo from ascii_distro or custom_ascii_path is ignored and the piped content is used instead.

{
  "flags": {
    // Select which distribution's ASCII art to display at the top.
    "ascii_distro": "auto",
    // How to show battery info: "off", "bar", "infobar", or "barinfo".
    "battery_display": "barinfo",
    // Include shell version in the output.
    "shell_version": true
  }
}

logo section (optional)

Use the logo object to point to custom ASCII art, tweak padding, or override colors. When source is set, it behaves like custom_ascii_path. Padding adds blank lines or spaces around the art.

{
  "logo": {
    "type": "file",
    "source": "~/.config/leenfetch/branding/about.txt",
    "padding": { "top": 2, "right": 6 }
  }
}

modules array

The modules array controls the rendering order. Entries can be a literal string (use "break" for a blank line) or an object describing a module. Objects accept a type (matching LeenFetch modules such as titles, distro, os_age, uptime, etc.) and optional properties like key for the label or format for custom text.

{
  "modules": [
    "break",
    { "type": "custom", "format": "== System ==" },
    { "type": "titles", "key": "User" },
    { "type": "distro", "key": "Distro" },
    { "type": "cpu", "key": "CPU" },
    { "type": "memory", "key": "Memory" },
    { "type": "colors", "key": "" }
  ]
}

Rearrange, duplicate, or remove entries to customize your output. Insert "break" wherever you want an empty spacer line.


How to Edit

  • Open config.jsonc in your favorite text editor.
  • Read the inline comments for a full explanation of every option.
  • Change values as you like, save, and re-run leenfetch to see your changes.

For advanced details, see the comments in config.jsonc or check the wiki (if available).

๐ŸŽฏ Roadmap

Feature Status
Base module system โœ… Done
Config file loader โœ… Done
Custom layout tags โœ… Done
GPU/CPU/Mem/DE/WM detection โœ… Done
Linux support โœ… Done
Windows support โœ… Done
CLI override options ๐Ÿ” Basic
ASCII art & theming ๐Ÿ” Basic
Multi-Threading ๐Ÿ”„ Planned
macOS support ๐Ÿ”„ Planned
OpenBSD support ๐Ÿ”„ Planned
Plugin/module system โ“ Maybe
Fetch info over SSH โ“ Maybe

๐Ÿค Contributing

  1. Fork the repo
  2. Create your branch (git checkout -b feature/my-feature)
  3. Commit your changes (git commit -m 'feat: add my feature')
  4. Push to the branch (git push origin feature/my-feature)
  5. Create a Pull Request

We welcome clean PRs and documented modules! โœจ


โ˜• Support LeenFetch

If you have found LeenFetch valuable and would like to contribute to its ongoing development, your support is greatly appreciated. You can show your appreciation by making a donation through PayPal or any of the following cryptocurrency networks:

  • Bitcoin (BTC): bc1qsmvxpn79g6wkel3w67k37r9nvzm5jnggeltxl6
  • ETH/BNB/MATIC (ERC20, BEP20): 0x8613aD01910d17Bc922D95cf16Dc233B92cd32d6
  • USDT/TRON (TRC20): TGNru3vuDfPh5zBJ31DKzcVVvFgfMK9J48
  • Dogecoin (DOGE): D8U25FjxdxdQ7pEH37cMSw8HXBdY1qZ7n3

Your generous contribution ensures the continued improvement and maintenance of LeenFetch. โค๏ธ

Thank you for supporting the project! ๐Ÿ™


๐Ÿ“„ License

MIT License ยฉ DrunkLeen


๐Ÿ’ก Inspiration