Files
ObsiGate/desktop/README.md
T
bruno 23fdc4d8f2
CI / lint (push) Successful in 25s
CI / security (push) Successful in 14s
CI / test (push) Successful in 28s
CI / build (push) Successful in 6s
CI / e2e (push) Failing after 25s
Desktop Build / build-windows (push) Has been cancelled
Desktop Build / build-linux (push) Has been cancelled
docs: utiliser Scoop pour les prérequis Windows dans les README desktop
- desktop/README.md: section Windows réécrite avec scoop install rustup curl git
- README.md: build from source Windows mis à jour avec Scoop
2026-07-26 10:10:48 -04:00

7.3 KiB

ObsiGate Desktop

Application desktop native pour ObsiGate — construite avec Tauri (Rust + webview système).

🚧 Version 2.0.0 — les binaires sont en cours de stabilisation. Le build depuis les sources est la méthode recommandée pour le moment.

Table des matières


Installation (binaires pré-buildés)

Les releases sont publiées sur Gitea.

Linux

# .deb (Debian/Ubuntu/Deepin) — installation système
sudo dpkg -i obsigate_2.0.0_amd64.deb
# Lancement : menu applications → ObsiGate, ou :
obsigate-desktop

# .AppImage (toute distribution) — portable, pas d'installation
chmod +x ObsiGate_2.0.0_amd64.AppImage
./ObsiGate_2.0.0_amd64.AppImage

Dépendances runtime (normalement déjà présentes) :

sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0 libayatana-appindicator3-1

Windows

:: .msi — installation standard
:: Double-cliquer sur ObsiGate_2.0.0_x64.msi
:: → Crée un raccourci bureau + entrée menu Démarrer

:: .exe NSIS — installateur interactif
:: Mêmes options, inclut le raccourci

macOS

Non supporté pour le moment (priorité Linux/Windows).


Build depuis les sources

Prérequis communs

  • Rust stable ≥ 1.75
  • Tauri CLI : cargo install tauri-cli
  • Python 3.11+
  • Git

Linux

# 1. Dépendances système
sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev curl

# 2. Cloner le projet
git clone https://git.dracodev.net/Projets/ObsiGate.git
cd ObsiGate/desktop

# 3. Build (tout-en-un)
chmod +x build-linux.sh
./build-linux.sh

Le script s'occupe de :

  1. Vérifier Rust + Tauri CLI + dépendances système
  2. Créer l'environnement Python (venv + requirements)
  3. Copier le frontend
  4. Builder Tauri en mode release

Produits :

  • target/release/bundle/deb/obsigate_2.0.0_amd64.deb
  • target/release/bundle/appimage/ObsiGate_2.0.0_amd64.AppImage

Windows (via Scoop)

# 1. Installer Scoop (si pas déjà fait)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
irm get.scoop.sh | iex

# 2. Prérequis via Scoop
scoop install rustup curl git
rustup default stable
cargo install tauri-cli

# 3. Cloner
git clone https://git.dracodev.net/Projets/ObsiGate.git
cd ObsiGate\desktop

# 4. Build
.\build-windows.bat

Le script télécharge automatiquement Python 3.11 embed et les dépendances backend.

Produits :

  • target\release\bundle\msi\ObsiGate_2.0.0_x64.msi
  • target\release\bundle\nsis\ObsiGate_2.0.0_x64-setup.exe

Démarrage

Premier lancement

  1. Lance l'application (menu ou ligne de commande)
  2. Le backend Python démarre automatiquement → health check sur 127.0.0.1:17890
  3. La fenêtre s'ouvre sur l'interface ObsiGate
  4. Sélectionne le dossier parent de tes vaults Obsidian via le sélecteur natif
  5. L'indexation démarre automatiquement

Lancements suivants

  • L'application mémorise le dernier dossier configuré
  • Le backend démarre en ~2 secondes
  • Les vaults sont ré-indexées au démarrage (incrémental si inchangé)

Arrêt

  • Icône tray → Quitter (recommandé) : SIGTERM → arrêt propre du backend → fermeture webview
  • Fermeture fenêtre (X) : minimise dans le tray (backend continue de tourner)
  • Ctrl+C dans le terminal (si lancé en dev) : arrêt immédiat

Mode développement

cd desktop
cargo tauri dev
# → Lance le backend Python + ouvre la webview avec hot-reload

Configuration des vaults

Au premier lancement, le sélecteur de dossier natif te demande le dossier parent contenant tes vaults Obsidian. Exemple :

/home/bruno/Documents/
├── Obsidian-Recettes/    ← vault #1
├── Obsidian-IT/          ← vault #2
└── Obsidian-Perso/       ← vault #3

Tous les sous-dossiers contenant un dossier .obsidian sont automatiquement détectés comme vaults.

Configuration avancée

Le fichier de config desktop est stocké dans :

  • Linux : ~/.config/obsigate-desktop/config.json
  • Windows : %APPDATA%\ObsiGate\config.json
{
  "vaults_path": "/home/bruno/Documents",
  "backend_port": 17890,
  "theme": "system"
}

Architecture

desktop/
├── Cargo.toml              # Dépendances Rust (Tauri 2, plugins)
├── tauri.conf.json          # Config Tauri (fenêtre, bundle, plugins)
├── build.rs                 # Script build Tauri
├── src/
│   └── main.rs              # Point d'entrée Rust : spawn backend + webview
├── python-embed/
│   ├── venv/                # Environnement Python isolé
│   └── ...                  # site-packages gelés
├── build-linux.sh            # Script build Linux (.deb + .AppImage)
├── build-windows.bat         # Script build Windows (.msi + NSIS)
└── icons/                    # Icônes desktop (.ico, .png, .icns)

Cycle de vie

Démarrage :
  1. Tauri lance python-embed/venv/bin/python → uvicorn backend.main:app
  2. Health check GET /api/health (timeout 15s)
  3. Webview ouvre http://127.0.0.1:17890

Arrêt (tray → Quitter ou Ctrl+C) :
  1. SIGTERM envoyé au processus Python
  2. Backend s'arrête proprement (10s timeout)
  3. Tauri ferme la webview
  4. Processus nettoyé — aucun résidu

Fonctionnalités desktop natives

Fonctionnalité Web (Docker) Desktop (Tauri)
Accès fichiers local Via upload Natif (sélecteur dossier)
Thème Manuel (toggle) Auto (suit OS dark/light)
Notifications Service Worker Natif OS
Associations .md ❌ ✅ « Ouvrir avec ObsiGate »
Tray icon ❌ ✅ Barre des tâches
Auto-update ❌ (docker pull) ✅ Vérifie releases Gitea
Mode hors-ligne Limité Complet (backend local)
RAM au repos ~150 MB (Docker) ~80 MB (natif)
Démarrage à froid ~5s (Docker) ~2s

Dépannage

Le backend ne démarre pas

# Vérifier que le port 17890 est libre
ss -tlnp | grep 17890

# Lancer le backend manuellement pour voir les logs
cd ObsiGate
python -m uvicorn backend.main:app --host 127.0.0.1 --port 17890 --log-level debug

La fenêtre reste blanche

  • Vérifier que le backend répond : curl http://127.0.0.1:17890/api/health
  • Si "connection refused" → le backend n'a pas démarré (voir section précédente)
  • Si le healthcheck répond mais la webview est blanche → problème CSP ou webview

Erreur libwebkit2gtk non trouvé

# Ubuntu/Debian/Deepin
sudo apt install libwebkit2gtk-4.1-0

# Si l'erreur persiste, installer la version dev
sudo apt install libwebkit2gtk-4.1-dev

Build échoue sur Linux

# Nettoyer et rebuild
cargo clean
rm -rf python-embed/venv
./build-linux.sh

# Si erreur de linking, vérifier les -dev packages
sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev libssl-dev