# proton-drive-linux
A Tauri v2 desktop application wrapping [Proton Drive](https://proton.me/drive)'s WebClients frontend for native Linux use.
## Tech Stack
| Layer | Technology |
|---|---|
| Shell | Tauri v2 (Rust) |
| Frontend | Proton WebClients — React monorepo (Drive, Account, Verify apps) |
| Backend | Rust modules: live sync, sync DB, navigation, cookie management |
| Database | SQLite via `rusqlite` (WAL mode, foreign keys, SHA-256 hashed IDs) |
| Build | APK, AppImage, DEB, RPM, AUR, Flatpak, Snap — 18+ distribution targets |
| CI/CD | GitHub Actions (primary) + GitLab CI (internal), with issue mirroring |
## Architecture
The app consists of a Tauri shell with 6 Rust modules backing a WebView running Proton's WebClients:
- **Live Sync** — Bidirectional: local `notify` file watcher + periodic remote polling (30s default), with 30s suppression TTL to prevent echo loops
- **Sync Database** — SQLite persistence for sync metadata with SHA-256 hashed Proton IDs
- **Navigation** — Three specific URL handlers for SSO redirects and CAPTCHA token extraction
- **Cookie Bridge** — Merges WebKit native cookies with `reqwest` jar for consistent auth across restarts
graph LR
MAIN[main.rs
AppState + Proxy]
LS[live_sync.rs
Bidirectional Sync]
SDB[sync_db.rs
SQLite]
NAV[proton_navigation.rs
SSO Routing]
WV_C[webview_cookies.rs
Cookie Bridge]
MAIN --> LS
MAIN --> SDB
MAIN --> NAV
MAIN --> WV_C
LS --> SDB
## Key Documents
- [Architecture](/protondrive-linux/architecture/) — Module map and data flow
- [Auth Module](/protondrive-linux/auth-module/) — SRP authentication (not yet wired into main.rs)
- [Live Sync Module](/protondrive-linux/live-sync-module/) — Bidirectional sync engine
- [Sync DB Module](/protondrive-linux/sync-db-module/) — SQLite persistence with hashed IDs
- [Navigation](/protondrive-linux/proton-navigation/) — SSO/CAPTCHA URL handlers
- [WebView Integration](/protondrive-linux/webview-integration/) — Cookie bridge + storage
- [Build System](/protondrive-linux/build-system/) — 18+ package targets
- [CI Pipeline](/protondrive-linux/ci-pipeline/) — GitHub Actions + GitLab CI