mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-03 16:41:26 +01:00
112 lines
3.7 KiB
Markdown
112 lines
3.7 KiB
Markdown
# Proton Drive client for Linux (unofficial)
|
|
|
|
A fast, unofficial Proton Drive client for Linux. This client provides a FUSE files-on-demand virtual mount, a command-line interface (CLI), and a GTK4 desktop application with system tray integration.
|
|
|
|
## Features
|
|
|
|
- **Files-on-demand (FUSE)**: Mount your Proton Drive as a virtual filesystem where files are downloaded only when opened.
|
|
- **Command-Line Interface (CLI)**: Manage your drive, authenticate, and monitor sync status directly from the terminal.
|
|
- **GTK4 Desktop App**: Log in, browse files, and configure sync options through a modern, native Linux GUI.
|
|
- **System Tray Integration**: Background indicator for status monitoring, quick actions, and fast sync controls.
|
|
- **Secure Credential Storage**: Integrates with the system Secret Service (GNOME Keyring, KWallet, etc.) for safe token storage.
|
|
- **Proton Photos Support**: Access your Proton Photos timeline, view thumbnails, and download backed-up media natively (available in the GUI as a navigation tab and via the CLI).
|
|
|
|
## Screenshots
|
|
|
|
### GUI Application
|
|
|
|
| Login Screen | Account Overview |
|
|
| :---: | :---: |
|
|
|  |  |
|
|
|
|
| Files (Grid View) | Files (List View) |
|
|
| :---: | :---: |
|
|
|  |  |
|
|
|
|
---
|
|
|
|
## Prerequisites
|
|
|
|
To compile the application from source or run the built binaries, ensure you have the following system libraries installed on your distribution:
|
|
|
|
### Ubuntu / Debian (24.04+)
|
|
```bash
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
pkg-config \
|
|
libfuse3-dev \
|
|
libgtk-4-dev \
|
|
libadwaita-1-dev \
|
|
libsecret-1-dev \
|
|
libdbus-1-dev
|
|
```
|
|
|
|
### Arch Linux
|
|
```bash
|
|
sudo pacman -S --needed pkgconf fuse3 gtk4 libadwaita libsecret dbus
|
|
```
|
|
|
|
---
|
|
|
|
## Building from Source
|
|
|
|
Ensure you have Rust and Cargo installed (minimum supported Rust version is 1.96).
|
|
|
|
1. Clone the repository and navigate into the project directory:
|
|
```bash
|
|
git clone https://github.com/narl/proton-drive-linux.git
|
|
cd proton-drive-linux
|
|
```
|
|
2. Build the workspace in release mode:
|
|
```bash
|
|
cargo build --release --locked
|
|
```
|
|
|
|
The compiled binaries will be available under `target/release/`:
|
|
- `pdfs`: The CLI utility.
|
|
- `pdfs-app`: The GTK4 application.
|
|
- `pdfs-tray`: The tray status notifier.
|
|
|
|
---
|
|
|
|
## Installation & Packages
|
|
|
|
### 1. Debian / Ubuntu (.deb)
|
|
Install the debian package via `dpkg` or `apt`:
|
|
```bash
|
|
sudo apt install ./proton-drive-linux_*.deb
|
|
```
|
|
|
|
### 2. Arch Linux
|
|
A local `PKGBUILD` is available under the `packaging/` directory. You can build and install it using:
|
|
```bash
|
|
cd packaging && makepkg -fi
|
|
```
|
|
|
|
---
|
|
|
|
## Automated Releases (CI/CD)
|
|
|
|
This project has a GitHub Actions CI workflow configured under `.github/workflows/release.yml`.
|
|
|
|
### How it works:
|
|
1. **Triggers**:
|
|
- Pushing a git tag matching `v*` (e.g. `git tag v0.1.0 && git push origin v0.1.0`).
|
|
- Manual runs via the **Actions** tab in GitHub (**workflow_dispatch**).
|
|
2. **Build Process**:
|
|
- Spawns an Ubuntu runner and installs GTK4, Libadwaita, FUSE3, and Secret Service packages.
|
|
- Sets up the Rust compiler and caches build targets to speed up runs.
|
|
- Compiles the workspace members in release mode.
|
|
3. **Artifact Packaging**:
|
|
- Generates a `.tar.gz` containing the raw binaries (`pdfs`, `pdfs-app`, `pdfs-tray`).
|
|
- Packs them into a Debian package (`.deb`).
|
|
4. **Publishing**:
|
|
- Creates a GitHub Release matching the pushed tag and uploads the `.deb` and `.tar.gz` packages as release assets.
|
|
- For manual runs, compiles and exposes the packages as workflow run artifacts for testing.
|
|
|
|
---
|
|
|
|
## License
|
|
|
|
This project is licensed under the [MIT License](LICENSE).
|