| Crates.io | leenfetch |
| lib.rs | leenfetch |
| version | 1.1.0 |
| created_at | 2025-05-06 02:29:18.671685+00 |
| updated_at | 2025-12-06 09:08:55.282732+00 |
| description | Fast, minimal, customizable system info tool in Rust (Neofetch alternative) |
| homepage | |
| repository | https://github.com/drunkleen/leenfetch |
| max_upload_size | |
| id | 1661815 |
| size | 3,352,610 |
β οΈ LeenFetch is under active development. Expect bugs and improvements regularly!
Want to help? Contributions, testing, and feedback are always welcome!
Found a bug? Got a feature idea?
Head over to the issues or join the discussions page!







β‘ 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
π Fetch remote system info over SSH (--ssh <user>@<host>:<port>...) and reuse pretty output per host
π§Ύ Machine-readable JSON output via --format json for scripting and dashboards
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
If you're on Debian, Ubuntu, or a Debian-based distribution, you can download and install the .deb package from the GitHub Releases:
wget https://github.com/drunkleen/leenfetch/releases/download/v1.1.0/leenfetch-v1.1.0-debian-x86_64.deb
sudo dpkg -i leenfetch-*.deb
wget https://github.com/drunkleen/leenfetch/releases/download/v1.1.0/leenfetch-v1.1.0-debian-aarch64.deb
sudo dpkg -i leenfetch-*.deb
If you're using Fedora, RHEL, or another RPM-based distro, you can install LeenFetch using the .rpm file from GitHub Releases:
wget https://github.com/drunkleen/leenfetch/releases/download/v1.1.0/leenfetch-v1.1.0-REHL-x86_64.rpm
sudo rpm -i leenfetch-*.rpm
wget https://github.com/drunkleen/leenfetch/releases/download/v1.1.0/leenfetch-v1.1.0-REHL-aarch64.rpm
sudo rpm -i leenfetch-*.rpm
If you're on Windows, download the latest .zip from the GitHub Releases:
powershell:
Invoke-WebRequest -Uri "https://github.com/drunkleen/leenfetch/releases/download/v1.1.0/leenfetch-v1.1.0-windows-x86_64.zip" -OutFile "leenfetch-win.zip"
Expand-Archive .\leenfetch-win.zip -DestinationPath .
.\leenfetch-v1.1.0-windows-x86_64.exe
Invoke-WebRequest -Uri "https://github.com/drunkleen/leenfetch/releases/download/v1.1.0/leenfetch-v1.1.0-windows-aarch64.zip" -OutFile "leenfetch-win.zip"
Expand-Archive .\leenfetch-win.zip -DestinationPath .
.\leenfetch-v1.1.0-windows-aarch64.exe
Make sure you're in the same directory as
leenfetch.exewhen running the command.
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
If you prefer installing 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"
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.
Query other machines directly and render their info locally. LeenFetch runs leenfetch --format json over SSH, parses it, and prints a pretty block for each host.
# Pretty output for one host (leverages your SSH config/agent)
leenfetch --ssh user@server.example.com
leenfetch --ssh user@server.example.com:port
# Multiple hosts
leenfetch --ssh user@server1 --ssh user@server2:port ...
# Script-friendly JSON
leenfetch --ssh user@server --format json
leenfetch --ssh user@server:port --format json
Notes:
The remote host needs leenfetch installed and available in PATH.
ASCII logo and colors reflect the remote distro; each host renders separately using the local layout.
SSH options come from your standard SSH config/agent (no custom flags are parsed) and a short connect timeout is used.
You can mix --format json with --ssh to script against multiple hosts (one JSON object per host).
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 β Display and formatting toggles.modules (alias layout) β Output order, headings, and custom rows.logo β Override ASCII art source or padding. Omitted keys fall back to defaults.The flags object fine-tunes how each block is rendered. Values shown below match the generated defaults; unset keys fall back to the same defaults internally.
| Key | Allowed values | Default | What it controls |
|---|---|---|---|
ascii_distro |
"auto" or distro name |
"auto" |
ASCII art selection. Piped input always overrides this. |
ascii_colors |
"distro" or comma list of color indices |
"distro" |
Palette for ASCII art and color swatches. |
custom_ascii_path |
"" or path |
"" |
Custom ASCII art file. Leave empty for bundled art. |
battery_display |
"off", "bar", "infobar", "barinfo" |
"off" |
Battery meter style (or disable entirely). |
color_blocks |
string glyph | "β" |
Character(s) used for the 16-color preview. |
cpu_brand |
true / false |
true |
Prefix CPU model with the vendor name. |
cpu_cores |
true / false |
true |
Show total core/thread counts. |
cpu_frequency |
true / false |
true |
Include advertised CPU frequency. |
cpu_speed |
true / false |
true |
Include current CPU speed reading. |
cpu_temp |
"C" / "F" |
"C" |
Temperature unit. Any other value skips conversion. |
cpu_show_temp |
true / false |
false |
Toggle CPU temperature output entirely. |
de_version |
true / false |
true |
Append desktop-environment version. |
distro_display |
name, name_version, name_arch, name_model, name_model_version, name_model_arch, name_model_version_arch |
"name" |
Level of OS detail shown in the distro line. |
disk_display |
info, percentage, infobar, barinfo, bar |
"info" |
Disk usage presentation for each mount. |
disk_subtitle |
name, dir, none, mount |
"dir" |
Label used alongside disk usage. |
memory_percent |
true / false |
true |
Add percentage to the memory line. |
memory_unit |
kib, mib, gib |
"mib" |
Preferred memory units. |
package_managers |
off, on, tiny |
"tiny" |
Package counter verbosity. |
refresh_rate |
true / false |
true |
Append monitor refresh rate where available. |
shell_path |
true / false |
false |
Print full shell path instead of name only. |
shell_version |
true / false |
true |
Append shell version. |
uptime_shorthand |
full, tiny, seconds |
"tiny" |
Uptime formatting style. |
os_age_shorthand |
full, tiny, seconds |
"tiny" |
OS install age formatting style. |
βΉοΈ Piped input (for example
fortune | cowsay | leenfetch) replaces the ASCII logo regardless ofascii_distroorcustom_ascii_path.
Here is a compact example that shortens durations and hides temperature and refresh-rate extras:
{
"flags": {
"uptime_shorthand": "tiny",
"cpu_show_temp": false,
"refresh_rate": false,
"package_managers": "on"
}
}
Use the logo object to point to custom ASCII art or adjust how the bundled ASCII art is padded. When type is "file" the source path behaves just like custom_ascii_path.
{
"logo": {
"type": "file",
"source": "~/.config/leenfetch/branding/about.txt",
"padding": { "top": 2, "right": 6, "left": 0 }
}
}
The modules array (also accepted as layout) controls rendering order. Entries can be a literal string ("break" inserts an empty spacer) or an object describing a module. Objects accept a type (collector name 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.
config.jsonc in your favorite text editor.leenfetch to see your changes.For advanced details, see the comments in config.jsonc or check the wiki (if available).
Need a temporary tweak for screenshots or testing? LeenFetch now mirrors most flags settings on the CLI so you can adjust the output without touching config.jsonc.
--help, --version, --list-options, --init, --reinit, --config <path>, and --no-config (ignore files, use built-in defaults).--ascii_distro <name>, --ascii_colors <list>, --custom_ascii_path <file>, and --color-blocks <glyph>.--battery-display, --disk-display, --disk-subtitle, --memory-unit, --packages, --uptime, --os-age, --distro-display, --cpu-temp-unit, and --format <pretty|json> for output style.--ssh <host>[,<host>...] to fetch via SSH, --only cpu,memory,shell to render a subset, --hide gpu to drop modules from the current layout.--cpu-speed / --no-cpu-speed, --shell-path / --no-shell-path, --memory-percent / --no-memory-percent, etc., for quick on/off control of individual fields.Run leenfetch --help to see the complete list of overrides.
| 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 |
| Multi-Threading | β Done |
| CLI override options | π Basic |
| ASCII art & theming | π Basic |
| Plugin/module system | β Maybe |
| Fetch info over SSH | β Done |
git checkout -b feature/my-feature)git commit -m 'feat: add my feature')git push origin feature/my-feature)We welcome clean PRs and documented modules! β¨
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:
bc1qsmvxpn79g6wkel3w67k37r9nvzm5jnggeltxl60x8613aD01910d17Bc922D95cf16Dc233B92cd32d6TGNru3vuDfPh5zBJ31DKzcVVvFgfMK9J48D8U25FjxdxdQ7pEH37cMSw8HXBdY1qZ7n3Your generous contribution ensures the continued improvement and maintenance of LeenFetch. β€οΈ
Thank you for supporting the project! π