Codex skill for development added. Tested by using it to set up Play Palace.
This commit is contained in:
76
.codex/skills/linux-game-manager-dev/references/core-map.md
Normal file
76
.codex/skills/linux-game-manager-dev/references/core-map.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# Linux Game Manager Core Map
|
||||
|
||||
Last refreshed: 2026-02-21
|
||||
|
||||
## Top-Level Structure
|
||||
|
||||
- `linux-game-manager.sh`: Main orchestrator, UI wrappers, CLI option handling, install/remove/update flows, cache and settings behavior.
|
||||
- `.install/`: Per-game installer scripts sourced by `game_installer`.
|
||||
- `.launch/`: Per-game launch scripts (`.game`) and runnable entries (`.sh`, usually symlinks).
|
||||
- `.update/`: Optional per-game update scripts expected to define `run_update()`.
|
||||
- `speech/speak_window_title.sh`: Accessibility helper for announcing focused window titles.
|
||||
- `README.md`: Project summary and high-level behavior notes.
|
||||
- `.files/`: Game-specific auxiliary assets/scripts used by some installers or launchers.
|
||||
|
||||
## Catalog Snapshot
|
||||
|
||||
- Installers: 38 (`.install/*.sh`)
|
||||
- Launcher definitions: 38 (`.launch/*.game`)
|
||||
- Launcher runnable entries: 26 (`.launch/*.sh`, both symlinks and files)
|
||||
- Update scripts: 5 (`.update/*.sh`)
|
||||
|
||||
Regenerate this snapshot with:
|
||||
|
||||
```bash
|
||||
python3 .codex/skills/linux-game-manager-dev/scripts/audit_game_catalog.py
|
||||
```
|
||||
|
||||
## Main Runtime Flows
|
||||
|
||||
1. **Install flow**
|
||||
- `game_installer` builds menu from `.install/*.sh`.
|
||||
- Selected installer is sourced in the current shell.
|
||||
- If `.launch/<game>.game` exists and `.launch/<game>.sh` does not, the manager creates a symlink.
|
||||
|
||||
2. **Launch flow**
|
||||
- `game_launcher` enumerates `.launch/*.sh` entries.
|
||||
- Entries with first line `#//` are skipped.
|
||||
- Selected launcher is sourced/executed.
|
||||
|
||||
3. **Removal flow**
|
||||
- `game_removal` resolves launcher entry to real script.
|
||||
- It extracts the first `installPath`-containing line from launcher script to infer directory to remove.
|
||||
- If no `installPath` reference is found, only launcher entry is removed.
|
||||
|
||||
4. **Update flow**
|
||||
- `game_update` lists `.update/*.sh`.
|
||||
- Selected updater is sourced.
|
||||
- `run_update()` is called and must exist.
|
||||
|
||||
## CLI Surface
|
||||
|
||||
- `-i`: install game
|
||||
- `-r`: remove game
|
||||
- `-u`: update game
|
||||
- `-t`: show number of available games
|
||||
- `-C`: clear cache
|
||||
- `-D`: create desktop launcher
|
||||
- `-L`: show license
|
||||
- `-h`: show help
|
||||
- `-N`: enable no-cache mode
|
||||
- `-R`: force redownload mode
|
||||
|
||||
## Config and State
|
||||
|
||||
- Cache: `${XDG_CACHE_HOME:-$HOME/.cache}/linux-game-manager`
|
||||
- Config base: `${XDG_CONFIG_HOME:-$HOME/.config}/storm-games/linux-game-manager`
|
||||
- Settings overrides: `settings.conf` in config base
|
||||
- Default install root: `${HOME}/.local/games`
|
||||
|
||||
## Contributor Pitfalls
|
||||
|
||||
- Mismatched `.install/<Game>.sh` vs `.launch/<Game>.game` names create orphaned or invisible entries.
|
||||
- Missing `installPath` reference in launcher prevents full uninstall.
|
||||
- Missing `run_update()` in `.update` scripts breaks update flow.
|
||||
- Bypassing shared download helpers risks cache and validation regressions.
|
||||
- For `uv`-based Python games that use `accessible-output2`, include a host copy of `libspeechd.so.2` and export `LD_LIBRARY_PATH` from the launcher to avoid distro packaging differences.
|
||||
Reference in New Issue
Block a user