proton-drive-linux
A Tauri v2 desktop application wrapping Proton 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
notifyfile 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
reqwestjar 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 — Module map and data flow
- Auth Module — SRP authentication (not yet wired into main.rs)
- Live Sync Module — Bidirectional sync engine
- Sync DB Module — SQLite persistence with hashed IDs
- Navigation — SSO/CAPTCHA URL handlers
- WebView Integration — Cookie bridge + storage
- Build System — 18+ package targets
- CI Pipeline — GitHub Actions + GitLab CI