# đŸ–„ïž Guide de l'application desktop (Tauri) ObsiGate Desktop est une application native construite avec [Tauri](https://tauri.app/) (Rust + webview systĂšme). Elle embarque le backend Python et le frontend dans un exĂ©cutable autonome — **zĂ©ro Docker, zĂ©ro ligne de commande**. > **Public :** tous les utilisateurs · **Statut :** version 2.x, binaires en > cours de stabilisation (build depuis les sources recommandĂ©) > **Fiche technique :** [`features/desktop-tauri.md`](../features/desktop-tauri.md) · > **Checklist E2E :** [`DESKTOP_E2E_CHECKLIST.md`](../DESKTOP_E2E_CHECKLIST.md) --- ## 1. FonctionnalitĂ©s natives | FonctionnalitĂ© | Web | Desktop | |---|---|---| | AccĂšs fichiers local | Via upload | Natif (sĂ©lecteur de dossier) | | ThĂšme systĂšme | Manuel | Auto (suit l'OS clair/sombre) | | Notifications | Service Worker | Natif OS | | Association `.md` | ❌ | ✅ « Ouvrir avec ObsiGate » | | IcĂŽne de barre des tĂąches (tray) | ❌ | ✅ | | Auto-update | ❌ | ✅ (vĂ©rifie les releases Gitea) | | Mode hors-ligne | LimitĂ© | Complet (backend local) | --- ## 2. TĂ©lĂ©chargement des binaires Les releases sont publiĂ©es sur [Gitea](https://git.dracodev.net/Projets/ObsiGate/releases) : | Plateforme | Formats | |---|---| | **Linux** | `.deb` + `.AppImage` | | **Windows** | `.msi` + `.exe` (NSIS) | ### Linux ```bash # .deb (Debian / Ubuntu / Deepin) sudo dpkg -i obsigate_2.0.0_amd64.deb # Lancer : ObsiGate depuis le menu applications, ou `obsigate-desktop` # .AppImage (toute distribution) chmod +x ObsiGate_2.0.0_amd64.AppImage ./ObsiGate_2.0.0_amd64.AppImage ``` ### Windows ```cmd :: Double-cliquer sur ObsiGate_2.0.0_x64.msi (ou le setup NSIS) :: Ou lancer ObsiGate depuis le menu DĂ©marrer ``` --- ## 3. DĂ©marrage 1. **Lancez l'application** depuis le menu ou la ligne de commande. 2. Le backend Python dĂ©marre automatiquement sur `127.0.0.1:17890` (splash « DĂ©marrage
 » pendant le boot). 3. La fenĂȘtre s'ouvre et charge l'interface ObsiGate. 4. **Premier lancement** : sĂ©lectionnez le dossier de vos vaults Obsidian via le sĂ©lecteur natif. 5. Pour fermer : icĂŽne tray → **Quitter** (arrĂȘt propre du backend). --- ## 4. Construire depuis les sources Guide dĂ©taillĂ© : [`desktop/README.md`](../../desktop/README.md). ### 4.1 PrĂ©requis communs | Outil | Version | Installation | |---|---|---| | Rust (cargo) | ≄ 1.75 | `rustup` | | Tauri CLI | ≄ 2.0 | `cargo install tauri-cli` | | Git | — | — | | DĂ©pendances systĂšme Linux | — | `sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev` | > **Important — staging :** `tauri.conf.json` embarque `backend/**` et > `frontend/**` **depuis le dossier `desktop/`**. Les scripts de build copient > automatiquement `../backend` et `../frontend` dans `desktop/` avant > `cargo tauri build`. Sans ce staging, le build Ă©choue avec > « glob pattern backend/**/* path not found ». ### 4.2 Windows — `build-windows.bat` ```cmd REM PrĂ©requis (via Scoop) : rustup, curl, git scoop install rustup curl git rustup default stable cargo install tauri-cli cd desktop build-windows.bat ``` Étapes du script : 1. Tue les processus Python rĂ©siduels (`taskkill /F /IM python.exe`). 2. TĂ©lĂ©charge **Python 3.11 embed** (python.org) → `desktop\python-embed\` + active pip (`python311._pth`). 3. `pip install -r ..\backend\requirements.txt` dans l'embed. 4. **Staging** : copie `..\backend` et `..\frontend` dans `desktop\`. 5. `cargo tauri build --target x86_64-pc-windows-msvc --bundles nsis`. 6. Copie `python-embed` Ă  cĂŽtĂ© de l'exĂ©cutable pour le mode dev local. 7. Nettoie les dossiers stagĂ©s. → **Artefact :** `desktop\target\x86_64-pc-windows-msvc\release\bundle\nsis\ObsiGate_2.0.0_x64-setup.exe` ### 4.3 Linux — `build-linux.sh` ```bash cd desktop chmod +x build-linux.sh ./build-linux.sh ``` Étapes du script : 1. VĂ©rifie Rust + Tauri CLI, installe les dĂ©pendances systĂšme (apt). 2. CrĂ©e un venv `desktop/python-embed/venv` + `pip install -r ../backend/requirements.txt`. 3. **Staging** : copie `../backend` et `../frontend` dans `desktop/`. 4. `cargo tauri build --target x86_64-unknown-linux-gnu --bundles deb,appimage`. 5. Copie le runtime (`python-embed/`, `backend/`, `frontend/`) Ă  cĂŽtĂ© de l'exĂ©cutable. → **Artefacts :** - `desktop/target/x86_64-unknown-linux-gnu/release/bundle/deb/obsigate_2.0.0_amd64.deb` - `desktop/target/x86_64-unknown-linux-gnu/release/bundle/appimage/ObsiGate_2.0.0_amd64.AppImage` --- ## 5. Builds CI/CD automatiques Le workflow [`.gitea/workflows/desktop-build.yml`](../../.gitea/workflows/desktop-build.yml) construit les binaires desktop Ă  chaque push sur `main` touchant `desktop/**`, `frontend/**` ou `backend/**` (et manuellement via `workflow_dispatch`), sur des **runners self-hosted** : | Job | Runner | Artefacts (30 jours) | |---|---|---| | `build-windows` | `[self-hosted, windows, desktop]` | `desktop/target/release/bundle/msi/*.msi` | | `build-linux` | `[self-hosted, linux, desktop]` | `*.AppImage` + `*.deb` | Les artefacts sont tĂ©lĂ©chargeables depuis la page **Actions** du run Gitea ; la publication en **Gitea Release** est prĂ©vue sur les tags `v*`. --- ## 6. Architecture desktop ``` ┌────────────────────────────────────────────┐ │ Tauri (Rust) │ │ ├─ Webview (webview systĂšme) │ │ │ └─ Frontend (HTML/JS/CSS) │ │ └─ Sidecar Python │ │ └─ uvicorn backend.main:app │ │ └─ port 127.0.0.1:17890 │ └────────────────────────────────────────────┘ ``` Cycle de vie : Tauri spawn le backend Python → health check → splash → webview. À la fermeture : arrĂȘt propre du backend (SIGTERM / kill). --- ## 7. Mises Ă  jour L'application vĂ©rifie les **releases Gitea** et propose la mise Ă  jour (updater Tauri signĂ©). Le manifeste `latest.json` est gĂ©nĂ©rĂ© automatiquement. > La **signature de code Windows** n'est pas retenue (pas de certificat) : le > binaire peut dĂ©clencher un avertissement SmartScreen. Alternatives possibles : > SignPath.io (OSS gratuit), Certum OSS, Azure Trusted Signing, certificat EV. --- ## 8. Logs & dĂ©pannage Les logs du backend sont Ă©crits dans : - **Windows** : `%APPDATA%\ObsiGate\logs\backend.log` - **Linux** : `~/.config/obsigate/logs/backend.log` | SymptĂŽme | Piste | |---|---| | « Backend ne rĂ©pond pas » | VĂ©rifier le port `17890` (conflit) et relancer | | Build « glob pattern backend/**/* not found » | Le staging n'a pas Ă©tĂ© fait — utiliser les scripts fournis | | Le sĂ©lecteur de dossier ne s'ouvre pas | Permissions systĂšme / dialogue natif bloquĂ© | | FenĂȘtre blanche | Consulter `backend.log` ; le backend a peut-ĂȘtre Ă©chouĂ© au boot | | Mise Ă  jour non proposĂ©e | VĂ©rifier la connectivitĂ© aux releases Gitea | Voir aussi [Prise en main](./PRISE_EN_MAIN.md) et [Authentification & sĂ©curitĂ©](./AUTHENTIFICATION_SECURITE.md).