2026-06-01 08:22:29 +02:00
2026-06-01 08:22:29 +02:00
2026-06-01 08:22:29 +02:00
2026-06-01 08:22:29 +02:00
2026-06-01 08:22:29 +02:00
2026-06-01 08:22:29 +02:00
2026-06-01 08:22:29 +02:00
2026-06-01 08:22:29 +02:00
2026-06-01 08:22:29 +02:00

Exile UI (native Linux)

Réécriture native pour Linux de 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).

Fonctionnalités

Socle + Act-Tracker / leveling, timer de run, profils de personnage et zone-layout viewer.

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).

Timer de run

  • Chronomètre de speedrun campagne : temps total + splits par acte, calqué sur le timer de l'outil d'origine.
  • Pause automatique en ville/hideout et sur inactivité (AFK) — la détection AFK se fait par polling de la souris via xdotool (les API d'idle sont absentes sous Wayland/XWayland).
  • Pause manuelle distincte de la pause automatique.

Profils de personnage

  • Profils créés manuellement, liés à un personnage in-game par son nom (reconnu dans le log) — pas d'API GGG (OAuth réservé).
  • Chaque profil garde sa propre progression, sa branche de guide et son timer (avec splits par acte).

Zone-layout viewer

  • Sélecteur de layouts de zone interactif, porté de l'act-decoder AHK : arbre de décision sur les images groupées par areaID, qu'on affine manuellement selon ce qu'on voit à l'écran (aucune capture d'écran — ToS).
  • Images de layouts PoE2 embarquées dans static/layouts/.

Réglages et profils 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).

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/StepView.svelte    rendu d'une étape du guide (lignes + optionnels)
  lib/Overlay.svelte     fenêtre overlay (label "overlay")
  lib/Settings.svelte    fenêtre principale / réglages / profils (label "main")
  lib/Layouts.svelte     fenêtre du zone-layout viewer (label "layout")
  lib/layouts.ts         arbre de décision des layouts (manifest areaID → chemins)
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
  timer.rs               timer de run (total + splits par acte, pauses auto/AFK)
  poe.rs                 détection du log + fenêtre active (X11/xdotool)
  config.rs              persistance config + profils de personnage
src-tauri/data/          données PoE2 embarquées (guide2, areas2, gems2)
static/layouts/          images de layouts de zone (zone-layout viewer)

Les fenêtres chargent le même bundle SPA ; la vue est choisie selon le label de la fenêtre (overlay, main, layout).

Crédits

Données de leveling, zones et gemmes dérivées du projet original Lailloken/Exile-UI. Ce fork n'est ni affilié ni approuvé par Grinding Gear Games.

Description
No description provided
Readme 10 MiB
Languages
Rust 58%
Svelte 29.5%
TypeScript 10.6%
JavaScript 1.2%
CSS 0.4%
Other 0.3%