Metadata-Version: 2.4
Name: larpfetch
Version: 1.3.0
Summary: LARP as any distro, hardware, or machine you want. Because reality is optional until you pass --real-shit.
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: psutil>=5.9
Provides-Extra: dev
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Description-Content-Type: text/markdown

# 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](https://github.com/vaproh/larpfetch) — it helps others find it.

[![PyPI - Version](https://img.shields.io/pypi/v/larpfetch?style=flat-square&logo=pypi&logoColor=white)](https://pypi.org/project/larpfetch/)
[![GitHub License](https://img.shields.io/github/license/vaproh/larpfetch?style=flat-square)](LICENSE)
[![GitHub last commit](https://img.shields.io/github/last-commit/vaproh/larpfetch?style=flat-square&logo=git&logoColor=white)](https://github.com/vaproh/larpfetch/commits/main)
[![Built with Python](https://img.shields.io/badge/Python-3.11+-3776AB?style=flat-square&logo=python&logoColor=white)](https://python.org)
[![Powered by psutil](https://img.shields.io/badge/powered%20by-psutil-00ADD8?style=flat-square)](https://github.com/giampaolo/psutil)
[![Logos from fastfetch](https://img.shields.io/badge/logos-fastfetch-FF6B6B?style=flat-square)](https://github.com/fastfetch-cli/fastfetch)

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

<p align="center">
  <img src="assets/demo.gif" alt="larpfetch demo" width="816">
</p>

## Installation

```bash
uv tool install larpfetch
```

Or with pipx:

```bash
pipx install larpfetch
```

> **Note:** If pipx installs an older version, it may have a stale cache. Fix with:
> ```bash
> pipx uninstall larpfetch && pipx install --index-url https://pypi.org/simple/ larpfetch
> ```

### Upgrade

```bash
uv tool upgrade larpfetch           # uv
pipx upgrade larpfetch              # pipx
```

### Clear cache

```bash
uv cache clean                      # uv
pipx uninstall larpfetch && pipx install larpfetch  # pipx
```

## Usage

```bash
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 --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

```bash
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`

```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.toml` or `~/.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](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](https://github.com/fastfetch-cli/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 real
- `Source: trust me bro` — triggered by implausible memory values
- `Reality Leakage: 100.00%` — absurdly high package counts
- `Disappointment: immeasurable` — shown in `--real-shit` mode
- `The 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.

## 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**: `platform` APIs, 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 --shell-info                 # Show shell version
larpfetch --gpu-info                   # Show GPU driver details
larpfetch --disk-info                  # Show per-disk breakdown
larpfetch --list-profiles              # List all profiles
larpfetch --show-config                # Show current config
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
```

## Resources

- [Configuration docs](docs/CONFIG.md) — full config reference
- [Changelog](CHANGELOG.md) — version history
- [Roadmap](ROADMAP.md) — planned features

## Development

```bash
git clone https://github.com/vaproh/larpfetch.git
cd larpfetch
uv sync
just test
just lint
```

Or with just:

```bash
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
```

207 tests covering: config loading, profile resolution, `--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](ROADMAP.md) for the full detailed roadmap.

## 💰 Support

If you found my work helpful, feel free to support:

### One-time

[![Ko-fi](https://img.shields.io/badge/Ko--fi-F16061?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/vaproh)
[![PayPal](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://paypal.me/vaproh)

### 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](LICENSE)
