Llançador inicial amb GUI PySide6: descàrrega i execució de jocs
This commit is contained in:
@@ -1,3 +1,67 @@
|
||||
# jlauncher
|
||||
|
||||
Llançador de jailgames desde gitea
|
||||
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.
|
||||
|
||||
GUI en **Python + PySide6**, pensada para compilarse a binario nativo con **Nuitka**.
|
||||
|
||||
## Requisitos
|
||||
|
||||
- Python 3.11+ (usa `tomllib` de la stdlib)
|
||||
- `git` en el PATH
|
||||
- `pip install PySide6`
|
||||
|
||||
## Ejecutar desde fuente
|
||||
|
||||
```bash
|
||||
pip install PySide6
|
||||
python -m jlauncher
|
||||
```
|
||||
|
||||
La app crea una carpeta `jlauncher_data/` junto al proyecto (o junto al binario, si está
|
||||
compilado) con esta estructura **anidada (Versión 1)**:
|
||||
|
||||
```
|
||||
jlauncher_data/
|
||||
<id_juego>/
|
||||
repo/ # git clone del juego
|
||||
metadata/
|
||||
info.json # descripción, versión, rama por defecto, fecha de actualización
|
||||
icon.png # copiado desde repo/release/icons/icon.png
|
||||
```
|
||||
|
||||
## Botones
|
||||
|
||||
- **Download**: si no existe el clone, hace `git clone`. Si existe, trae el remoto
|
||||
**forzado** (`git fetch` + `git reset --hard origin/<rama>` + `git clean -fd`),
|
||||
descartando cualquier cambio local. Después refresca la metadata:
|
||||
- descripción desde la API de Gitea (`/api/v1/repos/<org>/<repo>`),
|
||||
- versión ejecutando `version_cmd` (por defecto `git describe --tags --always`),
|
||||
- icono desde `release/icons/icon.png`.
|
||||
- **Run**: 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.
|
||||
|
||||
Las operaciones corren en segundo plano (QThreadPool); el log aparece en el panel inferior.
|
||||
|
||||
## Configuración: `games.toml`
|
||||
|
||||
Una entrada `[[game]]` por juego. Campos:
|
||||
|
||||
| Campo | Obligatorio | Descripción |
|
||||
|---------------|-------------|--------------------------------------------------------------------|
|
||||
| `id` | sí | slug → nombre de carpeta en `jlauncher_data/` |
|
||||
| `name` | sí | nombre visible |
|
||||
| `clone_url` | sí | URL de git clone / pull |
|
||||
| `run_cmd` | sí | comando que ejecuta el juego (cwd = repo) |
|
||||
| `build_cmd` | no | comando de compilado; vacío = `run_cmd` ya compila |
|
||||
| `version_cmd` | no | comando que imprime la versión (def. `git describe --tags --always`)|
|
||||
| `info_url` | no | API Gitea del repo (def. derivada de `clone_url`) |
|
||||
| `icon_rel` | no | ruta del icono dentro del repo (def. `release/icons/icon.png`) |
|
||||
|
||||
## Compilar a binario (Nuitka)
|
||||
|
||||
```bash
|
||||
pip install nuitka PySide6
|
||||
./build.sh
|
||||
# binario en dist/jlauncher.dist/jlauncher
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user