MCPcopy Index your code
hub / github.com/DonnieDice/protondrive-linux

github.com/DonnieDice/protondrive-linux @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
217 symbols 530 edges 27 files 28 documented · 13%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ProtonDrive Linux

CI downloads license issues

This is the public GitHub mirror. Active development, CI/CD pipelines, and packaging happen on self-hosted GitLab. Every commit here is mirrored from there. See CI Authority & GitHub Mirroring for the full policy.

An unofficial desktop client for Proton Drive on Linux, built with Tauri and WebKitGTK.


About

ProtonDrive Linux wraps Proton's web application in a native desktop window with system tray integration, native file sync, and comprehensive cross-distribution packaging. Authentication, encryption, and core file operations are handled by Proton's web app — this project provides the native shell and Linux integrations.

Features

  • Native desktop window with system tray integration
  • Login, CAPTCHA, and two-factor authentication
  • Proton Drive file browsing and downloads
  • Experimental 2-way live sync (watch local folders, apply remote changes)
  • Native packages for 17+ Linux targets
  • Built with Rust + Tauri for small footprint and low resource usage

Installation

Download from GitHub Releases.

Format Targets
AppImage Universal Linux
DEB Debian 12/13, Ubuntu 24.04/26.04
RPM Fedora 43/44, EL10, openSUSE Tumbleweed
Flatpak GNOME 49/50
Snap core24, core26
APK Alpine 3.20/3.22/3.23
AUR proton-drive (Arch Linux)

Packages are not yet available on Flathub, Snap Store, or system repositories.


Building from Source

# Clone the repository
git clone https://github.com/DonnieDice/protondrive-linux.git
cd protondrive-linux

# Build WebClients (Proton's web app)
bash scripts/build-webclients.sh

# Install dependencies and build
npm ci
npx tauri build --bundles deb

Prerequisites

  • Rust (stable)
  • Node.js 22+
  • WebKitGTK 4.1, GTK3, libayatana-appindicator, OpenSSL, libsoup 3.0
  • See Contributing for distro-specific setup

CI/CD Pipeline

The project runs a comprehensive CI/CD pipeline on self-hosted GitLab with 7 quality gates before builds:

Stage Jobs
Lint ShellCheck, shfmt, yamllint, actionlint, GitLab CI lint, Ruff (Python)
Test Python script validation, version consistency, Rust coverage
Security Gitleaks secrets, cargo-deny, npm audit, Trivy FS scan
Build 17 platform targets (APK, AppImage, AUR, DEB, Flatpak, RPM, Snap)
Smoke Install-and-run tests (deb, rpm, AppImage)
Sign Cosign artifact signing, SLSA provenance attestation, SBOM generation
Release Artifact upload, checksums, release creation
Publish AUR, Flathub, Snap Store

Builds are manual on MRs/branches and automated on v* tags. See CI Pipeline Reference.


Documentation

Architecture System design, build system, proxy, navigation
Build & Packaging Support matrix, packaging policy, new target checklist
CI/CD Pipeline reference, authority, roadmap, release process
Sync System Live sync module, database, regression runbook
Authentication Auth flow, SSO authentication
WebView WebView config, URL logging, storage
API Reference Tauri commands, events, REST endpoints
Contributing Dev setup, build rules, packaging guide
Workflow Branching, PR, review, merge protocol
Changelog Release history
Security Vulnerability reporting

2-Way Live Sync (Experimental)

The native sync layer watches a local folder and applies remote file changes. The web frontend must call Tauri commands to enable it.

Command Description
start_sync(path) Start watching a folder under $HOME
stop_sync() Stop watching
get_sync_status() Returns { enabled, folder_path, poll_interval_seconds }
handle_remote_update(change) Apply remote create/update/delete
read_sync_file(rootPath, relativePath) Read local file for upload (max 100 MB)

See Live Sync Module for the full contract and constraints.


Contributing

Contributions are welcome. All development follows the workflow protocol:

  1. Issue → Create a tracking issue
  2. Branchfeature/N, fix/N, or chore/N
  3. PR → Open against main, link to issue
  4. Review → Address CI checks and review feedback
  5. Merge → Squash-merge after approval

Commit messages follow (#N) Description format. See CONTRIBUTING.md for detailed build and packaging rules.


Disclaimer: This project is not affiliated with, endorsed by, or connected to Proton AG. Proton Drive is a trademark of Proton AG. This is an independent community project.

Core symbols most depended-on inside this repo

status
called by 13
src-tauri/src/live_sync.rs
hash_sensitive
called by 11
src-tauri/src/sync_db.rs
replace_once
called by 8
scripts/patch_drive_linux_drawer.py
ensure_sync_command_allowed
called by 7
src-tauri/src/main.rs
as_str
called by 7
src-tauri/src/sync_db.rs
ensure_column
called by 7
src-tauri/src/sync_db.rs
temp_db_path
called by 7
src-tauri/src/sync_db.rs
now_unix_ns
called by 6
src-tauri/src/sync_db.rs

Shape

Function 167
Method 28
Class 20
Enum 2

Languages

Rust75%
Python25%

Modules by API surface

src-tauri/src/main.rs39 symbols
src-tauri/src/sync_db.rs34 symbols
src-tauri/src/live_sync.rs33 symbols
src-tauri/src/webview_cookies.rs18 symbols
src-tauri/src/auth.rs18 symbols
src-tauri/src/proton_navigation.rs16 symbols
scripts/patch_drive_linux_drawer.py7 symbols
tests/unit/test_vms_matrix.py6 symbols
scripts/ci/lib/verify-matrix.py6 symbols
tests/unit/test_common_sh.py5 symbols
scripts/ci/resolve-mapping.py5 symbols
tests/unit/test_artifact_keying.py4 symbols

For agents

$ claude mcp add protondrive-linux \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact