#fetch #pfetch #cli #system

bin+lib pfetch

A rewrite of the pfetch system information tool

10 stable releases

2.7.0 May 22, 2023
2.6.1 May 16, 2023
2.5.0 Apr 14, 2023
2.4.0 Mar 24, 2023
0.1.1 Feb 17, 2023

#409 in Command line utilities

Download history 240/week @ 2023-02-16 95/week @ 2023-02-23 30/week @ 2023-03-02 70/week @ 2023-03-09 74/week @ 2023-03-16 89/week @ 2023-03-23 45/week @ 2023-03-30 24/week @ 2023-04-06 75/week @ 2023-04-13 34/week @ 2023-04-20 32/week @ 2023-04-27 40/week @ 2023-05-04 117/week @ 2023-05-11 95/week @ 2023-05-18 101/week @ 2023-05-25

354 downloads per month

MIT and maybe GPL-3.0-only

712 lines


A rewrite of the pfetch system information tool by dylanaraps in Rust


If you are familiar with the pfetch system information tool by dylanaraps, this does the exact same thing, but with an about 10x faster runtime. pfetch is simple by design with some (but not many) configuration options and a minimalistic look.

Supported Platforms: Linux, Android, macOS, Windows, FreeBSD, NetBSD

Included Logos: Alma Linux (new), Alpine Linux, Android, AmogOS (new), Arch Linux, ArcoLinux, Artix Linux, Bedrock Linux, Buildroot, CelOS, CentOS, Crystal Linux, dahliaOS, Debian, Devuan, DietPi (new), DragonflyBSD, Elementary OS, EndeavourOS, Fedora, Fiwix (new), FreeBSD, Garuda Linux, Gentoo Linux, Gnu, Guix, Haiku, HydroOS, Hyperbola, instantOS, IRIX, KDE neon, Linux Lite, Linux, Mint, macOS, Mageia, Manjaro, Minix, MorphOS (new), MX Linux, NetBSD, NixOS, Nobara Project (new), OpenBSD, openSUSE Tumbleweed, openSUSE Leap, OpenWrt, Oracle Linux (new), Parabola, Pop!_OS (updated), PureOS, Raspbian, Rocky Linux (new), SerenityOS, Slackware, Solus, SteamOS (new), Solaris, Ubuntu, Vanilla OS (new), Void Linux, Windows (new), Xeonix Linux

For all other distributions, a penguin will be displayed.

Credit to the original pfetch and its contributors.

If you want a logo to be added, feel free to open an issue or a PR.


Note: On openSUSE, install the rpm-devel package for faster package count.


Download a binary from the latest release.


cargo install pfetch


brew install pfetch-rs


Install the pfetch-rs or pfetch-rs-bin AUR package.


Benchmarks performed on an AMD Ryzen 5 3600. Execution time is measured using hyperfine with -w 4 -m 500 -N flags

Implementation Mean [ms] Min [ms] Max [ms]
POSIX sh (bash) 23.7 ± 0.9 22.3 29.3
POSIX sh (dash) 15.9 ± 0.3 15.1 18.2
Rust (v2.3.0) 2.2 ± 0.2 1.8 3.9

Note: This is with pacman and flatpak being the only installed package managers. For more info, see Improving Performance.

Improving Performance

The by far slowest part of the pfetch execution time is counting the installed packages. For most package managers this is still very fast, but there are some (currently nix (and zypper, if rpm-devel is not installed)) that take ~500ms to report installed packages, which takes away all performance benefits of the Rust version. If you have one or more of these installed, you can skip counting them by setting the PF_FAST_PKG_COUNT environment variable to any value.


Like the original pfetch, pfetch-rs is configured through environment variables. Your existing config will probably still work, the only difference is how padding is configured.

If you want to display a custom logo, you will have to download the source code, make your changes to ./pfetch-extractor/logos.sh and build the binary with cargo b --release.

# Which information to display.
# Default: first example below
# Valid: space separated string
# OFF by default: shell editor wm de palette cpu
PF_INFO="ascii title os host kernel uptime pkgs memory"

# Example: Only ASCII.

# Example: Only Information.
PF_INFO="title os host kernel uptime pkgs memory"

# A file containing environment variables to source before running pfetch.
# Default: unset
# Valid: A shell script

# Separator between info name and info data.
# Default: unset
# Valid: string

# Enable/Disable colors in output:
# Default: 1
# Valid: 1 (enabled), 0 (disabled)

# Color of info names:
# Default: unset (auto)
# Valid: 0-9

# Color of info data:
# Default: unset (auto)
# Valid: 0-9

# Color of title data:
# Default: unset (auto)
# Valid: 0-9, COL1 (copies COL1 value)

# Alignment paddings (this is different to the original version).
# Default: unset (auto)
# Valid: int

# Which ascii art to use.
# Default: unset (auto)
# Valid: string

# The below environment variables control more
# than just 'pfetch' and can be passed using
# 'HOSTNAME=cool_pc pfetch' to restrict their
# usage solely to 'pfetch'.

# Which user to display.

# Which hostname to display.

# Skip package managers that take "long" to query package count (like nix)


~623K SLoC