Skip to main content

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.

A cross-platform fetch-style terminal system-information utility with one defining gimmick: users can LARP as any operating system, distro, kernel, hardware configuration, hostname, shell, desktop environment, package manager, or arbitrary machine identity.

Demo

        /\          user@btw-i-use-arch
       /  \         --------------------
      /    \        OS: Arch Linux
     /      \       Kernel: 6.99.0-larp
    /   ,,   \      CPU: AMD Ryzen 9 9950X3D
   /   |  |  -\     GPU: NVIDIA RTX 5090
  /_-''    ''-_\   Memory: 4.2 GiB / 128.0 GiB
                  Shell: zsh
                  Authenticity: 3%

Installation

pipx install .

Or with pip:

pip install .

Usage

larpfetch                          # Use default profile
larpfetch -p nasa                  # Select a named profile
larpfetch --real-shit              # Show real system info only
larpfetch --list-profiles          # List available profiles
larpfetch --show-config            # Show current configuration
larpfetch --config /path/to/config.toml
larpfetch --set cpu="Quantum Potato 9000"
larpfetch --set os="Windows 11 Pro" --set kernel="6.18.7-arch1-1"
larpfetch --version
larpfetch --help

Profiles

Create a ~/.config/larpfetch/config.toml (or $XDG_CONFIG_HOME/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.nasa]
os = "NASA Linux"
hostname = "mainframe-01"
cpu = "Quantum Potato 9000"
gpu = "Classified"
memory = "69 PiB"

[profiles.abomination]
os = "Windows 11 Pro"
kernel = "6.18.7-arch1-1"
cpu = "Apple M7 Ultra"
gpu = "NVIDIA RTX 9090 Ti"
shell = "HolyC"
de = "GNOME 83"
package_manager = "apt btw"

[appearance]
color = true
show_authenticity = true
easter_eggs = true

Configuration

Default config locations:

  • Linux: $XDG_CONFIG_HOME/larpfetch/config.toml or ~/.config/larpfetch/config.toml
  • macOS: ~/Library/Application Support/larpfetch/config.toml
  • Windows: %APPDATA%\larpfetch\config.toml

Precedence (normal mode):

CLI overrides > selected custom profile > default profile > real detected values

Reality mode (--real-shit):

Real detected values only

The user's delusion is authoritative. Impossible combinations are accepted. Windows 11 with an Arch kernel and Apple M7 Ultra CPU? Valid. You do you.

CLI Overrides

Override any field temporarily:

larpfetch --set cpu="Quantum Potato 9000"
larpfetch --set os="Windows 11 Pro" --set kernel="6.18.7-arch1-1"

Custom fields are supported. Unknown fields display with auto-formatted labels.

--real-shit

Bypasses all LARP layers and shows real detected system information:

larpfetch --real-shit

This ignores the default profile, selected profile, and CLI --set overrides. It does not modify your configuration.

Cross-Platform Support

  • Linux: Reads /etc/os-release, environment variables, lspci for GPU
  • macOS: Uses platform.mac_ver(), system_profiler for GPU
  • Windows: Uses platform APIs, WMIC for GPU

All platform-specific probes fail gracefully. A missing GPU detector doesn't crash the app.

Easter Eggs

The output may include occasional humorous lines. Easter eggs are:

  • Deterministic (same input = same output)
  • Disableable via [appearance] easter_eggs = false or NO_COLOR
  • Not offensive
  • Not random (unless testable)

Some are triggered by specific profile values. Discover them yourself.

Development

git clone <repo>
cd larpfetch
uv venv
uv pip install -e ".[dev]"
pytest
ruff check src/ tests/

Testing

pytest
pytest --cov=larpfetch

Tests cover:

  • Config loading and parsing
  • Profile resolution and precedence
  • --real-shit invariant (ignores all fake inputs)
  • CLI argument parsing and behavior
  • Logo selection
  • Renderer output
  • Easter egg determinism
  • Collector failure degradation
  • ANSI-safe alignment
  • NO_COLOR compliance

Limitations

  • GPU detection is best-effort and platform-dependent
  • Package counting is not implemented in v1 (no safe universal method)
  • Battery detection requires psutil sensor support
  • No network calls (by design)
  • No hardware benchmarking

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

larpfetch-0.1.0.tar.gz (49.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

larpfetch-0.1.0-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file larpfetch-0.1.0.tar.gz.

File metadata

  • Download URL: larpfetch-0.1.0.tar.gz
  • Upload date:
  • Size: 49.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for larpfetch-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6c4701440be410978b5348125588da0b9ba7ef7dc6b9263ab7555a34df3dc15f
MD5 48a5dcebe8e37096f8043f377f47fe04
BLAKE2b-256 03abb2a67585186902c354da83a81929847d01f58b114ee29962acf3875f808f

See more details on using hashes here.

File details

Details for the file larpfetch-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: larpfetch-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for larpfetch-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ab33d6130f6ae36a22794103f36d60deaef463bc89316743c0727598b0749612
MD5 52399ec6c10ff98d463c333692d39ebe
BLAKE2b-256 d4beccae65e9fe39ec34c048f214d17054047f9ea3ed8e1b5bae70e5bc3049c5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page