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, DragonflyBSD, FreeBSD, NetBSD, OpenBSD, WSL, Haiku, MacOS, Minix, Solaris, IRIX, SerenityOS
Disclaimer: Aside from Linux, all of these platforms are untested. If you run into problems, please open an issue.
Included Logos: Alpine Linux, Android, Arch Linux, ArcoLinux, Artix Linux, Bedrock Linux, Buildroot, CelOS, CentOS, Crystal Linux, dahliaOS, Debian, Devuan, DragonflyBSD, Elementary OS, EndeavourOS, Fedora, FreeBSD, Garuda Linux, Gentoo Linux, Gnu, Guix, Haiku, HydroOS, Hyperbola, instantOS, IRIX, KDE neon, Linux Lite, Linux, Mint, macOS, Mageia, Manjaro, Minix, MX Linux, NetBSD, NixOS, OpenBSD, openSUSE Tumbleweed, openSUSE Leap, OpenWrt, Parabola, Pop!_OS (updated), PureOS, Raspbian, SerenityOS, Slackware, Solus, Solaris, Ubuntu, Void Linux, Xeonix Linux, Fiwix (new), MorphOS (new), AmogOS (new), Aperio (new)
For all other distributions, a penguin will be displayed.
Credit to the original pfetch and its contributors.
If you want to add a logo, feel free to make a Pull Request.
This project is still in early development, expect things to not work properly. Please open issues for bugs you are encountering.
Download a binary from the latest release.
sh
cargo install pfetch
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) | 27.3 ± 0.9 | 25.3 | 23.2 |
| POSIX sh
(dash) | 19.3 ± 0.6 | 18.3 | 24.0 |
| Rust | 2.1 ± 0.2 | 1.8 | 3.6 |
Note: This is with pacman
being the only installed package manager.
Especially having nix
installed will have a big impact on performance, as
querying installed nix
packages is very costly. If you want to skip slow
package managers from being counted, you can set the PF_FAST_PKG_COUNT
environment variable.
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
.
```sh
#
PF_INFO="ascii title os host kernel uptime pkgs memory"
PF_INFO="ascii"
PF_INFO="title os host kernel uptime pkgs memory"
PF_SOURCE=""
PF_SEP=":"
PF_COLOR=1
PF_COL1=4
PF_COL2=9
PF_COL3=1
PFPAD1="" PFPAD2="" PF_PAD3=""
PF_ASCII="openbsd"
USER=""
HOSTNAME=""
EDITOR=""
SHELL=""
XDGCURRENTDESKTOP=""
PFFASTPKG_COUNT=1
```