refactor: renombra el paquet a jail_launcher i l'app a «Jail Launcher»

This commit is contained in:
2026-06-01 17:46:09 +02:00
parent 878c403654
commit fccbdc83d5
23 changed files with 78 additions and 77 deletions
+14 -14
View File
@@ -1,4 +1,4 @@
# jlauncher
# jail-launcher
Lanzador de juegos de **jailgames**. A partir de `games.toml`, lista los juegos, los
clona/actualiza desde sus repos Gitea, lee su icono y descripción, y los compila/ejecuta.
@@ -15,14 +15,14 @@ GUI en **Python + PySide6**, pensada para compilarse a binario nativo con **Nuit
```bash
pip install PySide6
python -m jlauncher
python -m jail_launcher
```
La app crea una carpeta `jlauncher_data/` junto al proyecto (o junto al binario, si está
La app crea una carpeta `jail_launcher_data/` junto al proyecto (o junto al binario, si está
compilado) con esta estructura **anidada (Versión 1)**:
```
jlauncher_data/
jail_launcher_data/
<id_juego>/
repo/ # git clone del juego
metadata/
@@ -40,7 +40,7 @@ jlauncher_data/
- icono desde `release/icons/icon.png`.
- **Juga**: si hay `build_cmd`, compila primero; luego ejecuta `run_cmd`. Para estos
juegos basta `run_cmd = "make run"` (compila y ejecuta), con `build_cmd` vacío.
- **Esborra**: elimina la descarga local (carpeta del juego en `jlauncher_data/`),
- **Esborra**: elimina la descarga local (carpeta del juego en `jail_launcher_data/`),
sin quitar el juego del `games.toml`.
Menú **Opcions**: *Amaga els jocs no descarregats* (filtro persistente) y
@@ -55,7 +55,7 @@ Una entrada `[[game]]` por juego. Campos:
| Campo | Obligatorio | Descripción |
|---------------|-------------|--------------------------------------------------------------------|
| `id` | sí | slug → nombre de carpeta en `jlauncher_data/` |
| `id` | sí | slug → nombre de carpeta en `jail_launcher_data/` |
| `name` | sí | nombre visible |
| `clone_url` | sí | URL de git clone / pull |
| `run_cmd` | sí | comando que ejecuta el juego (cwd = repo) |
@@ -68,16 +68,16 @@ Una entrada `[[game]]` por juego. Campos:
`build.sh` lo hace todo: crea el `.venv`, instala dependencias (PySide6 + Nuitka +
zstandard) y compila un único ejecutable comprimido, empaquetándolo en
`dist/jlauncher-v<versión>-<os>-<arch>.tar.gz` junto a `games.toml`.
`dist/jail-launcher-v<versión>-<os>-<arch>.tar.gz` junto a `games.toml`.
```bash
./build.sh
# binario: dist/jlauncher (+ dist/games.toml)
# binario: dist/jail-launcher (+ dist/games.toml)
```
El binario crea `jlauncher_data/` y `settings.json` **junto a sí mismo** (resuelto vía
El binario crea `jail_launcher_data/` y `settings.json` **junto a sí mismo** (resuelto vía
`NUITKA_ONEFILE_DIRECTORY`). El punto de entrada para empaquetar es `app.py` (desde
fuente se ejecuta con `python -m jlauncher`).
fuente se ejecuta con `python -m jail_launcher`).
### Prerequisitos del sistema (no los instala el script)
@@ -95,8 +95,8 @@ binario suelto sino una **app nativa**:
```bash
./build.sh
# -> dist/jlauncher.app
# -> dist/jlauncher-v<versión>-macos-<arch>.dmg (arrastrar la app a Aplicaciones)
# -> dist/Jail Launcher.app
# -> dist/jail-launcher-v<versión>-macos-<arch>.dmg (arrastrar la app a Aplicaciones)
```
El icono vive en `icon/`: el build usa `icon/icon.icns` para el bundle y copia
@@ -105,9 +105,9 @@ sustituye esos ficheros (regenerables con `icon/create_icons.py`).
A diferencia del onefile, la `.app` **no** escribe junto a sí misma (rompería al moverla a
`/Applications`): guarda sus datos en
`~/Library/Application Support/jailgames/jlauncher/` (`jlauncher_data/`, `settings.json` y
`~/Library/Application Support/jailgames/jail-launcher/` (`jail_launcher_data/`, `settings.json` y
una copia editable de `games.toml`, sembrada la primera vez desde el bundle).
La app va **sin firma Developer ID** (firma ad-hoc), así que Gatekeeper avisará la primera
vez: ábrela con **clic derecho → Abrir**, o ejecuta
`xattr -dr com.apple.quarantine /Applications/jlauncher.app`.
`xattr -dr com.apple.quarantine "/Applications/Jail Launcher.app"`.