Files
jail-launcher/README.md
T

2.7 KiB

jlauncher

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

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 slug → nombre de carpeta en jlauncher_data/
name nombre visible
clone_url URL de git clone / pull
run_cmd 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)

pip install nuitka PySide6
./build.sh
# binario en dist/jlauncher.dist/jlauncher