Blazingly fast, ultra-minimal system information tool for Linux
Features β’ Benchmarks β’ Installation β’ Usage β’ Configuration
zeptofetch is a minimal system information tool written in C. It executes in under 1ms* with a 32KB binaryβno dependencies, no shell scripts.
Compared to neofetch (~400ms) and fastfetch (~5ms, 200KB+ binary), zeptofetch prioritizes speed and minimal footprint.
*Performance varies by hardware and system configuration. See benchmarks for details.
Performance
- β‘ ~0.73 ms execution time (553Γ faster than neofetch)
- π¦ 32 KB binary size
- πΎ Zero external dependencies
Design
- π¨ Customizable colors via
config.hat compile time - π Security hardening with memory protection and resource limits
- π§ Pure C99 with efficient process scanning
- βοΈ Memory-mapped process cache with secure cleanup
Tested with hyperfine on the following system:
Test System Specifications
| Component | Specification |
|---|---|
| CPU | AMD Ryzen 5 5600 (6-core, 12-thread) |
| RAM | 32 GB DDR4 @ 3200MHz |
| Kernel | 6.17.7-lqx1-1-lqx |
| OS | Arch Linux |
| Desktop | KDE Plasma 6.5.2 (Wayland) |
| Tool | Runtime* | Binary Size | Speed vs neofetch |
|---|---|---|---|
| zeptofetch | 732.4Β΅s Β± 77.7Β΅s | 32 KB | 553x faster |
| fastfetch | 6.7ms Β± 1.0ms | ~200 KB | 61x faster |
| neofetch | 405.1ms Β± 21.0ms | ~50 KB | baseline |
*Performance varies based on hardware, system load, kernel, desktop environment, and terminal emulator. Benchmarks shown are from a statically-linked zeptofetch v1.9 binary.
To build the latest version from source:
git clone https://gitlab.archlinux.org/gurov/zeptofetch.git
cd zeptofetch
make
sudo make installThis builds from the main branch, which may include release candidates. For production use, download a tagged release from the releases page.
paru -S zeptofetch # Latest stable release
paru -S zeptofetch-git # Development version# Display system information
zeptofetch
# Show version and build information
zeptofetch --version
zeptofetch -vThe --version flag displays:
- Version number and license information
- Build date, time, and compiler used
- Compact configuration stats (Cache size, chain depth, PID max, timeouts)
Customize colors by editing config.h.
Note: Macros use concise naming to match the source code.
#define CR "\033[0m" // Reset
#define C1 "\033[1;34m" // Primary Color (Bold Blue)
#define C2 "\033[1;37m" // Secondary Color (Bold White)
#define C3 "\033[38;5;208m" // Accent Color (Bold Orange)Rebuild after changes:
make clean && make
sudo make install- Compact source with minimal symbol overhead
- mmap-based cache for process information (256 entry limit)
- Direct
/procreads without subprocess spawning - Pre-computed string lengths for O(1) prefix matching
- Stack allocations with compile-time size limits
- OS: Single-pass
/etc/os-releaseparsing withPRETTY_NAMEfallback - Shell: Process tree walk via
/proc/[pid]/exesymlinks with$SHELLfallback - Terminal: Ancestor scanning with
TERM_PROGRAM/TERMINALenvironment checks - WM:
/procscan (PIDs 300-100000, max 1000 checks) with result caching - WSL: Multi-method detection (
WSLENV,/mnt/wsl,binfmt_misc, kernel strings) - Kernel:
uname()syscall with error handling
- Platform: Linux (x86_64)
- Kernel: 2.6.32+ (any modern kernel)
- libc: glibc, musl, or compatible
- Build: GCC or Clang
Supported: Linux, WSL1, WSL2 (Native detection). Not supported: Android, BSD, macOS.
This project is developed on the Arch Linux GitLab:
π https://gitlab.archlinux.org/gurov/zeptofetch
The GitHub repository is a read-only mirror for visibility.
How to contribute:
- Report bugs or suggest features
- Improve documentation
- Submit merge requests
- Test on different distributions
All issues and merge requests should be submitted on the Arch Linux GitLab.
Licensed under GPL-3.0
Made with β‘ by Gurov
