Metadata-Version: 2.4
Name: vaporcli
Version: 1.1.0
Summary: CLI utility for launching game executables directly from the terminal, bypassing Steam.
Author-email: Elouan <hello@elouan.xyz>
Maintainer: Elouan
License: GPL-3.0-or-later
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: argcomplete>=3.0
Provides-Extra: yaml
Requires-Dist: pyyaml>=6.0; extra == "yaml"
Dynamic: license-file

```
██╗   ██╗ █████╗ ██████╗  ██████╗ ██████╗  ██████╗██╗     ██╗
██║   ██║██╔══██╗██╔══██╗██╔═══██╗██╔══██╗██╔════╝██║     ██║
██║   ██║███████║██████╔╝██║   ██║██████╔╝██║     ██║     ██║
╚██╗ ██╔╝██╔══██║██╔═══╝ ██║   ██║██╔══██╗██║     ██║     ██║
 ╚████╔╝ ██║  ██║██║     ╚██████╔╝██║  ██║╚██████╗███████╗██║
  ╚═══╝  ╚═╝  ╚═╝╚═╝      ╚═════╝ ╚═╝  ╚═╝ ╚═════╝╚══════╝╚═╝
Launch your game binaries straight from the terminal, bypassing Steam
```

`vaporcli` is a fast CLI utility that finds and launches game executables directly from your Steam library folders (`steamapps/common/`) without needing to boot up the Steam client.

---

## Features

- **Direct Binary Launching:** Automatically scans library `.acf` manifests, locates the game directory in `steamapps/common/`, picks the correct executable (`.x86_64`, `.exe`, etc.), and runs it directly.
- **Automatic Game Discovery (`--scan` / `--sync`):** Walks every Steam install and library folder on your machine (native packages, Flatpak, extra drives) to keep your game library indexed.
- **Terminal Integration:** Launch games instantly by name or AppID, with full shell tab-completion support.
- **Lightweight:** No required third-party dependencies (Python 3.10+).

---

## Attribution & Fork Notice

`vaporcli` is a fork and direct evolution of **[steamcli-launcher](https://pypi.org/project/steamcli-launcher/)** originally created by **REvDl**, rearchitected to focus entirely on direct binary execution instead of triggering Steam protocols. Licensed under the GNU General Public License v3 (GPLv3).

---

## Installation

### Using pipx (Recommended)
```bash
pipx install vaporcli

```

### From PyPI

```bash
pip install vaporcli

```

---

## CLI Usage

```bash
vaporcli --scan                     # Scan and cache installed games
vaporcli --list                     # List all available games
vaporcli "Game Name"                # Launch game binary directly
vaporcli <AppID>                    # Launch by AppID

```

---

## Configuration

`vaporcli` automatically creates its configuration file on first run:
- **Linux:** `~/.config/vaporcli/config.json`[cite: 6]
- **macOS:** `~/Library/Application Support/vaporcli/config.json`[cite: 6]
- **Windows:** `%APPDATA%\vaporcli\config.json`[cite: 6]

Example content after running `vaporcli --scan`:

```json
{
  "steam_path": {
    "windows": "C:\\Program Files (x86)\\Steam\\steam.exe",
    "linux": "steam",
    "macos": "/Applications/Steam.app/Contents/MacOS/steam_osx"
  },
  "launch_method": "executable",
  "games": {
    "IGTAP: an Incremental Game That's Also a Platformer": { 
      "app_id": 4364730, 
      "source": "scan" 
    }
  }
}

```

* `launch_method`: `"executable"` (default) scans your Steam library folders (`steamapps/common/`) and executes the game binary directly without opening the Steam client.
* `launch_method`: `"steam"` uses standard Steam `-applaunch` execution.
* `source`: Marks whether an entry came from `"scan"` (auto-detected via `.acf` files) or `"manual"` (added via `--add`).



---

## CLI Usage Options

```
usage: vaporcli [-h] [-l] [-c] [-s] [-S] [-v] [--add NAME APP_ID] [--remove NAME_OR_APPID] [--steam-path PATH] [game]

positional arguments:
  game                  Game name or AppID to launch directly

options:
  -h, --help            Show this help message and exit[cite: 2]
  -l, --list            Show the list of available games[cite: 2]
  -c, --config-path     Print the path to the config file[cite: 2]
  -s, --scan            Auto-detect installed Steam games and add/update them[cite: 2]
  -S, --sync            Like --scan, but also removes games no longer installed[cite: 2]
  -v, --version         Show program's version number[cite: 2]

  --add NAME APP_ID     Manually add a game to the config[cite: 2]
  --remove NAME_OR_APPID Remove a game from the config by name or AppID[cite: 2]
  --steam-path PATH     Manually specify a Steam install folder if auto-detection fails[cite: 2]

```

---

## Tech Stack & Project Structure

* **Python 3.10+**

* **`argparse`** for command-line parsing


* Built-in lightweight VDF/KeyValues parser (zero third-party dependencies for discovery)



```
vaporcli/
├── vaporcli/
│   ├── __init__.py         # Package init & version[cite: 1, 17]
│   ├── __main__.py       # Module entry point[cite: 7, 17]
│   ├── cli.py             # Argparse & command definitions[cite: 2, 17]
│   ├── config.py          # JSON/YAML config loading & saving[cite: 6, 17]
│   ├── launcher.py        # Direct binary & Steam execution logic[cite: 4, 17]
│   ├── steam_scanner.py   # VDF parser & .acf manifest scanner[cite: 5, 17]
│   └── ui.py              # Terminal colors, banners & styling[cite: 3, 17]
├── pyproject.toml         # Build system & metadata[cite: 16, 17]
├── LICENSE                # GPLv3 License[cite: 17]
└── README.md

```
