LARP as any distro, hardware, or machine you want. Because reality is optional until you pass --real-shit.
Project description
larpfetch
LARP as any distro, hardware, or machine you want. Because reality is optional until you pass
--real-shit.
If you like this project, drop a ⭐ on GitHub — it helps others find it.
A cross-platform terminal fetch utility that detects real system information and lets you lie about it. Ships with 533 colored ASCII logos from fastfetch and 10 built-in LARP profiles.
Demo
Installation
uv tool install larpfetch
Or with pipx:
pipx install larpfetch
Note: If pipx installs an older version, it may have a stale cache. Fix with:
pipx uninstall larpfetch && pipx install --index-url https://pypi.org/simple/ larpfetch
Upgrade
uv tool upgrade larpfetch # uv
pipx upgrade larpfetch # pipx
Clear cache
uv cache clean # uv
pipx uninstall larpfetch && pipx install larpfetch # pipx
Usage
larpfetch # Show real system info with auto-detected logo
larpfetch -p nasa # LARP as NASA Linux
larpfetch -p hacker # Become a Parrot OS hacker
larpfetch --distro gentoo # LARP as a specific distro
larpfetch --small # Use small ASCII art
larpfetch --json # Output as JSON
larpfetch --diff-real # Show only what differs from reality
larpfetch --show-sources # Show where each value came from
larpfetch --shell-info # Show shell version
larpfetch --gpu-info # Show GPU driver details
larpfetch --disk-info # Show per-disk breakdown
larpfetch --minimal # Show a short field set
larpfetch --compact # Show standard fields without the logo
larpfetch --full # Show all fields
larpfetch --real-shit # Show only real detected values
larpfetch --list-profiles # List all available profiles
larpfetch --show-config # Show current configuration
larpfetch --generate-config # Print a starter config
Override any field
larpfetch --set cpu="Quantum Potato 9000"
larpfetch --set os="Windows 11 Pro" --set kernel="6.18.7-arch1-1"
larpfetch --distro fedora --set os="Fedora Linux"
Custom fields are supported. Unknown fields display with auto-formatted labels.
Built-in Profiles
| Profile | OS | Highlights |
|---|---|---|
nasa |
NASA Linux | Quantum Potato 9000, 69 PiB RAM, Classified GPU |
abomination |
Windows 11 Pro | Apple M7 Ultra, HolyC shell, GNOME 83 |
hacker |
Parrot OS | RTX 4090, 128 GiB, KDE Plasma 6 |
macbook |
macOS Sequoia | M4 Max, 40-core GPU, Aqua DE |
server |
Ubuntu Server 24.04 | EPYC 9654, 2 TiB RAM, headless |
retro |
Windows 98 SE | Pentium III, Voodoo3, 256 MiB |
gamer |
Windows 11 Pro | Ryzen 9 9950X3D, RTX 5090 |
minimal |
Alpine Linux | 512 MiB, ash shell |
templeos |
TempleOS | HolyC, 640x480 16-color |
haiku |
Haiku R1/beta4 | Haiku Desktop |
User-defined profiles in your config file override built-in ones with the same name.
Configuration
Default config location: ~/.config/larpfetch/config.toml
[default]
os = "Arch Linux"
distro = "Arch Linux"
hostname = "btw-i-use-arch"
kernel = "6.99.0-larp"
cpu = "AMD Ryzen 9 9950X3D"
gpu = "NVIDIA RTX 5090"
memory = "128 GiB"
shell = "zsh"
[profiles.custom]
os = "My Custom OS"
cpu = "Custom CPU"
logo = "arch" # Reference a built-in logo by name
[profiles.art]
os = "Artistic OS"
logo = """\
/\\
/ \\
/ \\
/ \\
/________\\
""" # Or inline custom ASCII art
[appearance]
color = true
show_authenticity = true
easter_eggs = true
small = true # Always use small ASCII art
[display]
fields = ["os", "kernel", "cpu", "memory"]
separator = " -> "
hide_unavailable = true
[display.labels]
memory = "RAM"
Platform-specific config locations
- Linux:
$XDG_CONFIG_HOME/larpfetch/config.tomlor~/.config/larpfetch/config.toml - macOS:
~/Library/Application Support/larpfetch/config.toml - Windows:
%APPDATA%\larpfetch\config.toml
For the full config reference (all fields, appearance options, profiles, inline logos), see docs/CONFIG.md.
Precedence
Normal mode:
CLI overrides > selected profile > default profile > real detected values
Reality mode (--real-shit):
Real values only — bypasses everything
Logos
533 ASCII logos adapted from fastfetch (MIT licensed), with full ANSI color support. Colors are applied automatically and respect NO_COLOR.
Logo selection is based on your displayed identity (or real identity in --real-shit mode). Profiles can override the logo by name or provide custom ASCII art.
Easter Eggs
The output may include occasional humorous lines:
Authenticity: N%— how much of your output is realSource: trust me bro— triggered by implausible memory valuesReality Leakage: 100.00%— absurdly high package countsDisappointment: immeasurable— shown in--real-shitmodeThe allegations were true.— deterministic, based on username hash
Easter eggs are deterministic, disableable via [appearance] easter_eggs = false or LARPFETCH_NO_EASTER_EGGS=1, and not offensive.
Not just a meme
larpfetch is funny on purpose, but it's a real daily-driver fetch tool underneath:
- Detects your actual system with
psutiland platform-specific probes - Clean, aligned, color-aware output that respects
NO_COLORand narrow terminals - Scriptable:
--json,--minimal,--compact,--full, and automatic pipe mode - Fully customizable: declarative
[display]config, named profiles, and CLI overrides - Cross-platform (Linux, macOS, Windows) with graceful degradation
Reality vs delusion
By default larpfetch shows your LARP identity. --real-shit shows only detected truth. The contrast is the whole point:
| Field | Real (--real-shit) |
Delusion (-p nasa) |
|---|---|---|
| OS | Arch Linux | NASA Linux |
| CPU | Ryzen 7 7840HS | Quantum Potato 9000 |
| Memory | 32 GiB | 69 PiB |
| GPU | Radeon 780M | Classified |
--diff-real prints exactly these differences inline, and --show-sources annotates where every value came from:
larpfetch -p nasa --diff-real # only the fields you're lying about
larpfetch -p nasa --show-sources # [real] / [default] / [profile] / [cli] per field
The Sacred Rule
The user's delusion is authoritative.
This is valid:
OS: Windows 11 Pro
Kernel: 6.18.7-arch1-1
CPU: Apple M7 Ultra
GPU: NVIDIA RTX 9090 Ti
Memory: 69 PiB
Shell: HolyC
DE: GNOME 83
Package Manager: apt btw
Impossible combinations are accepted. Profiles are display identities, not hardware simulations.
Cross-Platform Support
- Linux:
/etc/os-release,lspci, environment variables - macOS:
platform.mac_ver(),system_profiler - Windows:
platformAPIs, WMIC,COMSPEC
All platform-specific probes fail gracefully. A missing GPU detector doesn't crash the app.
CLI Reference
larpfetch # Default mode
larpfetch -p NAME # Select profile
larpfetch --profile NAME # Select profile (long form)
larpfetch --distro NAME # LARP as a specific distro
larpfetch --logo NAME # Pick a specific logo by name
larpfetch --small # Use small ASCII art
larpfetch --cols N # Force column width for logo
larpfetch --list-logos # List all available logos
larpfetch --list-logos --search ubuntu # Search logos
larpfetch --real-shit # Real system info only
larpfetch --json # Output as JSON
larpfetch --json --with-sources # JSON with per-field provenance
larpfetch --diff-real # Show only fields that differ from real
larpfetch --show-sources # Show where each value came from
larpfetch --shell-info # Show shell version
larpfetch --gpu-info # Show GPU driver details
larpfetch --disk-info # Show per-disk breakdown
larpfetch --minimal # Short field preset
larpfetch --compact # Standard fields, no logo
larpfetch --full # All available fields
larpfetch --export-profile [NAME] # Export real system as a shareable profile
larpfetch --profile-file PATH # Load a standalone profile file
larpfetch --inspect-profile NAME|PATH # Inspect a profile or profile file
larpfetch --list-profiles # List all profiles
larpfetch --show-config # Show current config
larpfetch --generate-config # Print a starter config
larpfetch --check-config # Validate the config file
larpfetch --config /path/to/config.toml # Custom config path
larpfetch --set key=value # Override a field (repeatable)
larpfetch --color # Force color output
larpfetch --no-color # Disable color output
larpfetch --version # Show version
larpfetch --help # Show help
Sharing profiles
Export your real system as a standalone profile, then share the file. Profiles are data-only TOML — loading one never executes code.
larpfetch --export-profile myrig > myrig.toml # capture your real system
larpfetch --profile-file myrig.toml # someone else LARPs as your rig
larpfetch --inspect-profile myrig.toml # see what a profile contains
Resources
- Configuration docs — full config reference
- Changelog — version history
- Roadmap — planned features
Development
git clone https://github.com/vaproh/larpfetch.git
cd larpfetch
uv sync
just test
just lint
Or with just:
just dev # install in dev mode
just test # run tests
just lint # ruff check
just fmt # ruff format
just check # lint + test
just all # format + lint + test
302 tests covering: config loading, display layout, profile resolution, provenance tracking, --real-shit invariant, CLI parsing, logo selection, ANSI alignment, easter egg determinism, collector degradation, and more.
Roadmap
| Release | Theme |
|---|---|
| v1.1 | --logo, --list-logos, --cols, --distro, --small ✨ |
| v1.2 | JSON output, package count, shell/GPU/disk details ✨ |
| v1.3 | Daily-driver customization — declarative display, density presets, terminal responsiveness ✨ |
| v1.4 | Reality vs delusion — --diff-real, --show-sources, shareable profiles ✨ |
| v1.5 | More system fields — battery, resolution, DE/WM, terminal, device model |
| v1.6 | Themes and visual polish — catppuccin, dracula, nord, gruvbox |
| v1.7 | Diagnostics — --explain, --diagnose, --timings, shell completions |
| v2.0 | Stability — stable JSON/config schemas, cross-platform CI, performance targets |
See ROADMAP.md for the full detailed roadmap.
💰 Support
If you found my work helpful, feel free to support:
One-time
Crypto
Ethereum (ERC-20) 0xD78C15C6932356e57c75a050a602474372804714
BNB Smart Chain (BEP-20) 0xD78C15C6932356e57c75a050a602474372804714
Solana CvAZzE6jTwxQq1npGzeoTBByj7Ap4REmuukf3BeiuyHi
Bitcoin (BTC) bc1q7tct80xelr57zdmvcux495dec8l4m2t8eqdzn4
Tron (TRC-20) TKvaQHMqvzeX2UAz6Cz2WRckRh28Hjd2Xy
Litecoin (LTC) LXYZJ754RdVXzLkoKVA91wTYjYfRyxQ9pA
Zcash t1bFWcooKThyQjQzrJACXXCYbNZLS7QUzmF
License
MIT — see LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file larpfetch-1.4.0.tar.gz.
File metadata
- Download URL: larpfetch-1.4.0.tar.gz
- Upload date:
- Size: 262.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59d872f0ab7bf82fb1c1c828d0b406c071b1d24df420833cbd2756d0dca2f475
|
|
| MD5 |
9cba0c5e16fd622e1b44cca013077f2f
|
|
| BLAKE2b-256 |
e68a797d76f2be1223cdd9ad11192a396ea2105f8f5c495dfade27f80c9720e8
|
File details
Details for the file larpfetch-1.4.0-py3-none-any.whl.
File metadata
- Download URL: larpfetch-1.4.0-py3-none-any.whl
- Upload date:
- Size: 132.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97175d0a4b03ed150f78a3fa4382ffc7220d90208e198abf2ca2324e53fd6cc6
|
|
| MD5 |
b3156978c38a3f593c5328bb3c8c00f8
|
|
| BLAKE2b-256 |
7758884f1257d97b696c4c6cc3672f8a0dc5ab547634c8513038f9737db053a0
|