KKFetch

September 1, 2026 · View on GitHub

A fast, lightweight, zero-subprocess system information fetch tool written in Rust for Linux, Windows, and macOS.

             .',;::::;,'.                kk376@fedora
         .';:cccccccccccc:;,.            ------------
      .;cccccccccccccccccccccc;.         OS: Fedora Linux 44 (Workstation Edition) x86_64
    .:cccccccccccccccccccccccccc:.       Host: Thin A15 B7UCX REV:1.0
  .;ccccccccccccc;.:dddl:.;ccccccc;.     Kernel: 7.1.10-200.fc44.x86_64
 .:ccccccccccccc;OWMKOOXMWd;ccccccc:.    Installed: 23 Aug 2026, 10:53 PM (6 days ago)
.:ccccccccccccc;KMMc;cc;xMMc;ccccccc:.   Uptime: 45 mins
,cccccccccccccc;MMM.;cc;;WW:;cccccccc,   Packages: 2890 (rpm), 4 (flatpak), 1 (cargo), 1 (pip)
:cccccccccccccc;MMM.;cccccccccccccccc:   Shell: zsh 5.9
:ccccccc;oxOOOo;MMM0OOk.;cccccccccccc:   Display (AUOD0A2): 1920x1080 in 15", 144 Hz [Built-in]
cccccc;0MMKxdd:;MMMkddc.;cccccccccccc;   Desktop: GNOME 50.4 (Wayland)
ccccc;XM0';cccc;MMM.;cccccccccccccccc'   WM: Mutter
ccccc;MMo;ccccc;MMW.;ccccccccccccccc;    WM Theme: Adwaita
ccccc;0MNc.ccc.xMMd;ccccccccccccccc;     Terminal: kitty 0.48.2
cccccc;dNMWXXXWM0:;cccccccccccccc:,      Terminal Font: Fira Code (12.5pt)
cccccccc;.:odl:.;cccccccccccccc:,.       CPU: AMD Ryzen 5 7535HS (6c 12t) @ 4.393GHz [4.60GHz max]
:cccccccccccccccccccccccccccc:'.         GPU0: AMD Radeon 680M (512 MiB) [Integrated]
.:cccccccccccccccccccccc:;,..            GPU1: NVIDIA GeForce RTX 2050 (4 GiB) [Discrete]
  '::cccccccccccccc::;,.                 Memory: 7.00 GiB / 14.82 GiB (47%)
                                         Swap: 0.00 GiB / 14.82 GiB (0%) - ZSTD
                                         Disk0: (/) 42.5 GiB / 215.6 GiB (20%) - btrfs
                                         Disk1: (/boot) 0.9 GiB / 1.9 GiB (47%) - ext4
                                         Disk2: (/boot/efi) 52 MiB / 196 MiB (26%) - vfat
                                         Disk3: (/home) 42.5 GiB / 215.6 GiB (20%) - btrfs
                                         Disk4: (/media/Backup) 444.8 GiB / 931.5 GiB (48%) - fuseblk
                                         Disk5: (/media/Windows) 133.5 GiB / 258.4 GiB (52%) - fuseblk
                                         Battery: 94% [AC Connected]
                                         Local IP: 192.168.29.219
                                         Theme: Adwaita (dark) [GTK/GNOME]
                                         Icons: Adwaita [GTK/GNOME]
                                         Cursor: Adwaita (24px) [GTK/GNOME]

Why KKFetch?

Most fetch tools either spawn multiple shell child processes (neofetch) or dynamically link heavy C runtime libraries (fastfetch). KKFetch is built with a different design philosophy:

  • Sub-3ms Latency: Queries virtual filesystems (/proc, /sys), POSIX syscalls, and Win32 APIs directly with zero child process spawning (fork/execve). In statistical benchmarks, it is 6x faster than Fastfetch on raw data collection across all 27 active modules.
  • Native OS Install Date: Probes root filesystem creation timestamp (statx birth time) and installer logs, showing exact installation date and relative age (6 days ago).
  • GPU Memory & Classification: Probes dedicated VRAM and classifies graphics hardware into [Integrated] and [Discrete] tiers with sequential indexing.
  • Zero-Fork Display EDID Parsing: Probes monitor name, refresh rate, physical diagonal size, and panel type directly from DRM sysfs without spawning xrandr or display server queries.
  • Declarative Configuration & Plugins: Supports ~/.config/kkfetch/config.toml and custom executable plugin modules with parallel execution.
  • Standalone Static Binary: Zero libc runtime dependencies when using the musl build. Drop the binary into any Linux system and it runs.

Benchmarks

Benchmarked against Fastfetch across 100 iterations (20 warmup runs) on Fedora Linux 44 (AMD Ryzen 5 7535HS with 6 physical cores and 12 threads):

Results

CommandMean RuntimeMedian LatencyMin LatencyMax LatencyRelative Speedup
fastfetch17.93 ms15.66 ms14.67 ms118.12 ms1.00 (Baseline)
kkfetch (All 27 Modules)3.00 ms2.72 ms2.36 ms12.91 ms5.97x faster
kkfetch (Pure sysfs/drm)2.53 ms2.48 ms2.26 ms4.11 ms7.08x faster

KKFetch achieves lower CPU time and syscall overhead by reading /proc and sysfs directly in Rust, executing active module collectors concurrently in parallel using std::thread::scope, and compiling with Fat Link-Time Optimization (LTO).

Benchmark Commands

1. Built-in Module Latency Profiler: Runs KKFetch with the internal microsecond latency profiler, displaying precise wall-clock execution time for every active information collector (CPU, GPU, Memory, EDID Display, Packages, etc.):

kkfetch --timings

2. Comparative Statistical Benchmark (via hyperfine): Executes 100 statistical test runs (preceded by 20 warmup cycles) to calculate the mean runtime, median latency, standard deviation, and relative speedup between KKFetch and Fastfetch:

hyperfine --warmup 20 --runs 100 'kkfetch' 'fastfetch'

3. Pure Sysfs / Accelerated Mode Benchmark: Measures the core sub-3ms performance of KKFetch with external bus latency disabled, highlighting zero-fork /proc, sysfs, and DRM kernel prober throughput against Fastfetch:

hyperfine --warmup 20 --runs 100 'kkfetch -d battery' 'fastfetch'

Supported Operating Systems & Logos

KKFetch includes high-contrast ASCII art logos with distro brand signature colors for 26 operating systems and distributions:

Family / EcosystemSupported Distributions & Targets
Debian / Ubuntu FamilyUbuntu, Debian, Linux Mint, Pop!_OS (4)
Red Hat FamilyFedora, RHEL, Rocky Linux, AlmaLinux, CentOS Stream (5)
Arch FamilyArch Linux, EndeavourOS, Manjaro, Artix Linux (4)
Independent LinuxAlpine Linux, Gentoo Linux, Void Linux, openSUSE, NixOS (5)
BSD FamilyFreeBSD, OpenBSD, NetBSD (3)
WindowsWindows 11, Windows 10 (native Win32 x86_64) (2)
Android / MobileAndroid (via Termux aarch64 & x86_64) (1)
Mascots & GenericFerris the Rust Crab (ferris), Linux Penguin (tux) (2)

Installation

Ubuntu / Debian / Linux Mint / Pop!_OS

Via Personal Package Archive (PPA):

sudo add-apt-repository -y ppa:kushagra376/kkfetch
sudo apt update && sudo apt install -y kkfetch

Via Pre-built .deb:

curl -LO https://github.com/kk376/kkfetch/releases/download/v0.11.7/kkfetch_0.11.7-1_amd64.deb
sudo dpkg -i kkfetch_0.11.7-1_amd64.deb

Fedora / RHEL / Rocky Linux / AlmaLinux

Via Fedora Copr:

sudo dnf copr enable -y kk376/kkfetch
sudo dnf install -y kkfetch

Arch Linux / Manjaro / EndeavourOS

Via Pre-built Pacman Package:

curl -LO https://github.com/kk376/kkfetch/releases/download/v0.11.7/kkfetch-0.11.7-1-x86_64.pkg.tar.zst
sudo pacman -U kkfetch-0.11.7-1-x86_64.pkg.tar.zst

macOS

Via Homebrew:

brew tap kk376/tap
brew install kkfetch

Android (Termux)

curl -LO https://github.com/kk376/kkfetch/releases/download/v0.11.7/kkfetch_0.11.7-1_termux_aarch64.deb
dpkg -i kkfetch_0.11.7-1_termux_aarch64.deb

Windows (Native Win32 CLI)

No dependencies, pure standalone executable:

# 1. Download
curl.exe -LO https://github.com/kk376/kkfetch/releases/download/v0.11.7/kkfetch-windows-x86_64.zip

# 2. Extract
tar.exe -xf kkfetch-windows-x86_64.zip

# 3. Run
.\kkfetch.exe

Alpine Linux / Musl / Static Binary

Statically linked with musl (zero external dependencies):

curl -LO https://github.com/kk376/kkfetch/releases/download/v0.11.7/kkfetch-linux-musl-x86_64
chmod +x kkfetch-linux-musl-x86_64
sudo mv kkfetch-linux-musl-x86_64 /usr/local/bin/kkfetch

Pre-built Tarball Archive

curl -LO https://github.com/kk376/kkfetch/releases/download/v0.11.7/kkfetch-0.11.7-x86_64-unknown-linux-gnu.tar.gz
tar -xzf kkfetch-0.11.7-x86_64-unknown-linux-gnu.tar.gz
sudo ./install.sh

Build from Source

Requires Rust 1.75.0+ and gcc.

git clone https://github.com/kk376/kkfetch.git
cd kkfetch
cargo build --release
sudo cp target/release/kkfetch /usr/local/bin/

CLI Options

Flag / OptionDescription
-m, --modules <LIST>Select and order specific modules (e.g. os,kernel,cpu,memory)
-d, --disable <LIST>Disable specific modules from output (e.g. gpu,disk)
-l, --logo <NAME>Override ASCII logo (e.g. arch, debian, ferris, ubuntu, fedora, tux, none)
--no-logoSuppress the ASCII logo and print only system telemetry
--no-colorDisable ANSI color escapes
--disk-path <PATH>Target filesystem path for disk statistics (default: /)
--list-modulesPrint all available information modules and exit
--jsonOutput system information in structured JSON format
--timingsShow execution latency breakdown per module in microseconds
-h, --helpPrint help information
-V, --versionPrint version information

Examples

Custom module ordering:

kkfetch -m os,cpu,memory,disk

Profile execution timings per module:

kkfetch --timings

JSON output for scripts and status bars:

kkfetch --json

Disable specific modules:

kkfetch -d gpu,packages

Override logo with the Ferris mascot:

kkfetch --logo ferris

Information Modules & Detection Strategies

ModulePrimary SourceFallback Strategy
Title$USER / getpwuid and uname(2)"user@localhost"
OS/etc/os-release and /usr/lib/os-release parsing/etc/debian_version, /etc/redhat-release, uname
Host/sys/devices/virtual/dmi/id/product_name and devicetree modelDMI board name or omitted
KernelPOSIX libc::uname release and machine fieldsNone required
InstalledRoot filesystem creation timestamp via statx(2) (stx_btime)Distribution install log birth times
UptimeFloating-point parse of /proc/uptimelibc::sysinfo uptime
PackagesLocal DB scans: /var/lib/dpkg/status, pacman/local, RPM, APK, flatpak, snap, cargo, npm, pipdpkg-query, rpm -qa, xbps-query
Shell/proc/<pid>/status & comm ancestor inspection$SHELL environment variable
DisplayDRM sysfs EDID binary parser (name, refresh rate, size in inches, built-in/external)xrandr / wlr-randr
Desktop$XDG_CURRENT_DESKTOP, desktop metadata files, session typeOmitted if headless
WMActive window manager detection (Mutter, KWin, Sway, Hyprland, WSLg)Process scan
WM ThemeWindow manager decoration theme (Adwaita, Breeze, xfwm, DWM)Omitted if not detected
TerminalEnvironment signatures (WT_SESSION, TERM_PROGRAM), /proc process ancestry$TERM variable
Terminal FontDotfile parser for Kitty, Alacritty, Foot, WezTerm, Ghostty, and GNOMEMonospace fallback
CPU/proc/cpuinfo parsing (model, physical cores vs threads, live clock + boost max)Sanitized model string
GPUSysfs PCI class scan (0x03xxxx), local pci.ids lookup, VRAM calculationlspci -mm query
Memory/proc/meminfo active memory calculation (MemTotal - MemAvailable)Traditional buffer/cache calculation
Swap/proc/meminfo swap statistics and ZRAM algorithm detectionOmitted if swap is 0
DiskSequential filesystem partition discovery via statvfs (NTFS mapping on WSL)Target mount path
BatteryDirect /sys/class/power_supply capacity and charging statusOmitted if AC-only desktop
Local IPPOSIX getifaddrs active interface address enumerationOmitted if offline
ThemeGTK 3/4 settings.ini, KDE kdeglobals, XFCE xsettings.xml, $GTK_THEMEOmitted if not configured
IconsGTK 3/4 settings.ini, KDE kdeglobals, XFCE xsettings.xmlOmitted if not configured
FontSystem desktop interface font from GTK, KDE, and GSettingsOmitted if not configured
CursorDesktop cursor theme and size in pixels from GTK, KDE, GSettings, and XcursorOmitted if not configured
PluginParallel custom script & command executor from config.toml or plugins/Omitted if none configured

Shell Completions

KKFetch includes completions for Bash, Zsh, and Fish:

Bash

source completions/kkfetch.bash
# System-wide: sudo cp completions/kkfetch.bash /usr/share/bash-completion/completions/kkfetch

Zsh

# Add to ~/.zshrc before compinit:
fpath=(/path/to/kkfetch/completions $fpath)
autoload -Uz compinit && compinit
# System-wide: sudo cp completions/_kkfetch /usr/share/zsh/site-functions/_kkfetch

Fish

cp completions/kkfetch.fish ~/.config/fish/completions/
# System-wide: sudo cp completions/kkfetch.fish /usr/share/fish/vendor_completions.d/

Distribution Packaging

Package definitions and build specifications are organized in packaging/:


Development & Testing

# Run the full test suite (unit, integration, and CLI snapshot tests)
cargo test

# Run strict linter with zero warnings allowed
cargo clippy --all-targets --all-features -- -D warnings

# Verify code formatting conforms to Rust standards
cargo fmt --check

Community Acknowledgements

Special thanks to community contributors for architectural recommendations and security research:

  • @Laynsb:
    • Comprehensive Security Audit & Vulnerability Reporting (v0.11.7): Conducted the independent security review across all 20 modules, identifying the plugin directory auto-execution vector (F2), privilege escalation boundaries under sudo (F1), canonical $PATH subprocess resolution (F3), user-isolated private cache permissions (F4), terminal OSC control sequence sanitization (F5), and JSON serializer key escaping.
    • System Installation Date Module (Installed): Suggested adding OS installation date detection via root filesystem statx birth time (stx_btime) with relative time deltas.
    • Localized Installation Timestamps: Suggested local timezone conversion for wall-clock consistency.
    • Filesystem Type Detection (Disk): Suggested partition filesystem labeling.
    • ZRAM Compression Algorithm Discovery (Swap): Suggested detecting active swap compression algorithms from /sys/block/zram*/comp_algorithm.
    • Integrated GPU Classification (GPU): Reported false discrete classification on AMD Radeon 610M (Mendocino APU) single-GPU machines, leading to comprehensive mobile APU iGPU classification across RDNA and Intel Arc architectures.

Contributing & Security

  • Contributing: Pull requests, feature ideas, and packaging recipes are welcome! Please review CONTRIBUTING.md for architectural guidelines, coding standards, and PR workflows.
  • Security Policy: For reporting security vulnerabilities or policy questions, please refer to SECURITY.md.
  • Changelog: Complete release history across versions is tracked in CHANGELOG.md.

Credits & License

  • KKFetch is authored by Kushagra Kumar (kk376) and open-source software licensed under the MIT License.
  • ASCII Art Outlines: Distribution ASCII art boundary outlines are based on the classic art from Neofetch by Dylan Araps (also licensed under the MIT License, Copyright © 2016-2022 Dylan Araps), customized and enhanced in KKFetch with high-contrast white structural framing and distribution brand signature colors.