Files
pythoninthegrass 3e5e436f19 ci (AGENTS.md): add llm instructions
- AGENTS.md: generated with claude + serena mcp
- settings.json: claude-specific permissions
- .gitignore: add exclusions/inclusions

Closes #779
2025-09-02 12:54:41 -05:00

3.4 KiB

AGENTS.md

This file provides guidance to LLMs when working with code in this repository.

Project Overview

NonSteamLaunchers is a tool that installs various game launchers (Epic Games, EA App, GOG Galaxy, etc.) under a single Proton prefix on Steam Deck and Linux systems. It automatically adds these launchers to the Steam Library and can scan for installed games in real-time.

Development Commands

Python Environment Setup

# Create and activate virtual environment using UV
uv venv --python ">=3.11,<3.13"
source .venv/bin/activate

# Install dependencies
uv pip install -r pyproject.toml --all-extras

Code Quality

# Format Python code
ruff format .

# Check Python linting
ruff check .

# Fix linting issues automatically
ruff check . --fix

# Run pre-commit hooks manually
pre-commit run --all-files

Running the Project

# Main installer script
./NonSteamLaunchers.sh

# Game scanner service
python NSLGameScanner.py

# Install specific launcher via command line
/bin/bash -c 'curl -Ls https://raw.githubusercontent.com/moraroy/NonSteamLaunchers-On-Steam-Deck/main/NonSteamLaunchers.sh | nohup /bin/bash -s -- "Epic Games"'

Architecture

Core Components

  • NonSteamLaunchers.sh: Main Bash script that handles launcher installation, Steam integration, and UI
  • NSLGameScanner.py: Python service that monitors installed launchers and automatically adds games to Steam library
  • config.py: Configuration management for paths and settings
  • Modules/: Vendored Python dependencies (steamgrid, requests, vdf, etc.)

Key Paths

  • Compatdata directory: ~/.local/share/Steam/steamapps/compatdata/
  • NonSteamLaunchers prefix: ~/.local/share/Steam/steamapps/compatdata/NonSteamLaunchers/
  • Logs: /home/deck/Downloads/NonSteamLaunchers-install.log
  • Game saves backup: /home/deck/NSLGameSaves

Integration Points

  • Steam: Adds shortcuts via Steam's shortcuts.vdf file
  • Proton: Uses UMU Launcher and GE-Proton for Windows compatibility
  • Decky Loader: Plugin available for Steam Deck Game Mode
  • Ludusavi: Pre-configured for game save backups

Code Style

Python

  • Formatter: Ruff (Black-compatible, 130 char line length)
  • Python version: 3.11-3.12
  • Indentation: 4 spaces
  • Follow PEP 8 with exceptions defined in ruff.toml

Shell Scripts

  • Indentation: Tabs
  • Follow shellcheck rules (see .shellcheckrc)
  • Use bash shebang: #!/bin/bash

Pre-commit Hooks

Pre-commit is configured with:

  • Ruff for Python formatting and linting
  • File checks (YAML, JSON, large files, private keys)
  • End-of-file fixing and line ending normalization

Testing

Currently, there is no formal test suite. When implementing new features:

  • Test installation of launchers manually
  • Verify Steam library integration
  • Check game scanner functionality
  • Test on both Desktop and Game Mode

Command Line Arguments

The main script supports:

  • Launcher names: "Epic Games", "EA App", "GOG Galaxy", etc.
  • Uninstall: "Uninstall Epic Games"
  • Utilities: "Start Fresh", "Update Proton-GE", "Stop NSLGameScanner"
  • SD Card: "Move to SD Card" "LauncherName"

Important Notes

  • The script modifies Steam configuration files - handle with care
  • Game scanner runs as a systemd service
  • Community notes feature uses #nsl hashtag
  • MicroSD card support requires proper mount points
  • Cloud saves via Ludusavi are backed up to /home/deck/NSLGameSaves