81 lines
3.6 KiB
Markdown
81 lines
3.6 KiB
Markdown
# 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.
|