From f7bc80c86bd345416ed646fcca8058d20dda858f Mon Sep 17 00:00:00 2001 From: Blomios Date: Mon, 1 Jun 2026 08:16:08 +0200 Subject: [PATCH] first commit --- README.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..4dde99e --- /dev/null +++ b/README.md @@ -0,0 +1,80 @@ +# Exile UI (native Linux) + +Réécriture native pour Linux de [Lailloken/Exile-UI](https://github.com/Lailloken/Exile-UI) +(à l'origine un overlay AutoHotkey v1.1, Windows uniquement). + +Cible : **Path of Exile 2**, **X11 et Wayland** (KDE Plasma 6 testé). +Stack : **Tauri v2** (backend Rust) + **SvelteKit/TypeScript** (frontend), livré en **AppImage**. + +### Wayland + +Un overlay de jeu a besoin de capacités que Wayland interdit aux clients +(se positionner soi-même, rester au-dessus, hotkeys globaux, détection de la +fenêtre active). L'app **force donc le backend XWayland** au démarrage quand un +serveur X (réel ou XWayland) est joignable — PoE2 tournant lui-même en XWayland +(Proton), les deux partagent le même espace X11 et tout fonctionne. Rien à +configurer. Pour les sessions X11 c'est sans effet. + +> Si le compositeur replace/ne garde pas l'overlay au-dessus, créer une **règle +> de fenêtre KWin** pour « Exile UI Overlay » : *Garder au-dessus = Oui*, +> position/taille forcées, *ignorer la barre des tâches*. Jouer en **plein écran +> fenêtré** (borderless). + +## Périmètre actuel (v1) + +Socle + **Act-Tracker / leveling** : + +- Lecture en continu du `Client.txt` du jeu (détection de zone et de niveau via + les lignes `Generating level … area "…"` et `… is now level N`). +- Détection automatique du chemin du log (installations Steam courantes + + `libraryfolders.vdf`), ou saisie manuelle. +- **Overlay transparent, click-through, toujours au-dessus** du jeu, affichant + le guide de leveling pas-à-pas (données PoE2 du projet d'origine), avec rendu + du langage de balisage (`(img:)`, `(color:)`, `(quest:)`, `areaid… ;; nom`, `||`). +- **Progression automatique** : le guide avance quand on entre dans la zone + cible d'une étape ; resynchronisation si on dévie. +- **Hotkeys globaux** configurables (suivant / précédent / afficher-masquer). +- Branche **league-start** vs non-league-start du guide. +- L'overlay n'apparaît que lorsque le jeu est au premier plan (optionnel). +- Réglages persistés dans `~/.config/exile-ui/config.json`. + +## Développement + +Prérequis : Rust, Node 18+, et les libs Tauri (`webkit2gtk-4.1`, `gtk3`, +`libsoup-3.0`), plus `xdotool` (détection de la fenêtre active). + +```bash +cd exile-ui +npm install +npm run tauri dev # lancement en mode dev +npm run tauri build # produit l'AppImage + .deb dans src-tauri/target/release/bundle/ +``` + +> Sur certains systèmes le bundling AppImage nécessite +> `APPIMAGE_EXTRACT_AND_RUN=1 npm run tauri build` (FUSE). + +## Architecture + +``` +src/ frontend (SvelteKit, SPA) + lib/api.ts pont commandes/events Tauri + lib/markup.ts parseur du langage de balisage du guide → HTML + lib/Overlay.svelte fenêtre overlay (label "overlay") + lib/Settings.svelte fenêtre principale / réglages (label "main") +src-tauri/src/ + lib.rs état partagé, commandes, fenêtres, hotkeys + logwatch.rs tail du Client.txt → parsing → events + progression + leveltracker.rs chargement du guide/zones, logique de progression + poe.rs détection du log + fenêtre active (X11/xdotool) + config.rs persistance de la configuration +src-tauri/data/ données PoE2 embarquées (guide, zones, gemmes) +``` + +Les deux fenêtres chargent le même bundle SPA ; la vue est choisie selon le +label de la fenêtre (`overlay` vs `main`). + +## Crédits + +Données de leveling, zones et gemmes dérivées du projet original +[Lailloken/Exile-UI](https://github.com/Lailloken/Exile-UI). Ce fork n'est ni +affilié ni approuvé par Grinding Gear Games.