Skip to content

Installation

  • A Linux desktop (Fedora, Ubuntu, Arch). The engine is Unix-only — the control plane uses Unix domain sockets — but Linux is the only supported and tested platform: keyring session reuse (secret-tool/libsecret), the desktop app, and the native packaging are all Linux-specific.
  • A Rust toolchain with edition 2024 support (Rust 1.85 or newer) to build from source.
  • The proton-drive CLI, installed, authenticated, and on your PATH (see below).
  • For the desktop app: the usual Tauri Linux build depswebkit2gtk-4.1, libsoup-3.0, gtk3, and glib2 development packages, plus libappindicator for the system tray.

The engine relies on Proton’s own proton-drive CLI: every remote file operation (list, upload, download, delete) shells out to it, and change detection reads Proton’s volume-event stream directly over HTTPS, authenticated by reusing that tool’s keyring session. Install and authenticate it first, following its own documentation, then confirm it works:

Terminal window
proton-drive filesystem list --json /Drive/RemoteFolder

If that command fails, the daemon will fail the same way. If proton-drive is not on your PATH, point the daemon at it explicitly with --proton-cli /path/to/proton-drive.

Clone the repository and build both engine binaries:

Terminal window
git clone https://github.com/osirison/proton-drive-sync-engine.git
cd proton-drive-sync-engine
cargo build --release --bins

This produces target/release/proton-syncd and target/release/proton-sync. To install them into your Cargo bin directory:

Terminal window
cargo install --path .

The desktop app is a Tauri workspace member. With the Tauri Linux build deps installed:

Terminal window
cargo build --release -p proton-sync-gui

The resulting proton-sync-gui binary is the desktop client. See the Desktop app overview for what it does.

The full contributor validation suite:

Terminal window
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --all-features

clippy runs with -D warnings, so warnings fail the build in CI. See Development for focused test commands.

Packaging trees live under packaging/ for RPM (Fedora/COPR), deb (Debian/Ubuntu), and an Arch PKGBUILD (AUR). Each installs the three binaries, a systemd user unit at /usr/lib/systemd/user/proton-syncd.service, the freedesktop launcher/icon/AppStream metadata, and the Nautilus/Nemo file-manager emblem extensions (split into optional subpackages on RPM and deb; bundled in the main package on Arch, with the Python bindings as optional dependencies).

See Native packages for the per-distro build and install steps.