mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-03 16:41:26 +01:00
Replace the Photos screenshot with one of placeholder stock photos, add Sync, conflict history and Computers screenshots, and drop the retired Activity, Settings, Shared and restore-devices images from the README.
162 lines
8.0 KiB
Markdown
162 lines
8.0 KiB
Markdown
<div align="center">
|
|
|
|
<img src="images/logo.svg" alt="" width="112" height="112">
|
|
|
|
# Proton Drive for Linux
|
|
|
|
**Proton Drive on the Linux desktop.** Your files as a folder that downloads on demand, synced
|
|
local folders, Photos, sharing, and a native GTK4 app with tray and search launcher, plus a
|
|
scriptable CLI.
|
|
|
|
[](https://github.com/narrrl/proton-drive-linux/actions/workflows/ci.yml)
|
|
[](https://github.com/narrrl/proton-drive-linux/releases/latest)
|
|
[](https://aur.archlinux.org/packages/proton-drive-for-linux)
|
|
[](LICENSE)
|
|
[](https://www.rust-lang.org)
|
|
|
|
<img src="images/files.png" alt="My files in the Proton Drive app" width="820">
|
|
|
|
</div>
|
|
|
|
> [!IMPORTANT]
|
|
> This is an **unofficial**, community-built client. It is not affiliated with, endorsed by, or
|
|
> supported by Proton AG. "Proton" and "Proton Drive" are trademarks of Proton AG, used here only
|
|
> to describe what the software talks to. Try it with data you have another copy of first, and
|
|
> read [what survives a lost machine](docs/RECOVERY.md) before you rely on it.
|
|
|
|
## Features
|
|
|
|
**Files**
|
|
|
|
- **Your Drive as a folder.** `~/ProtonDrive` works with every program. Files download when they
|
|
are opened, a block at a time, so a video starts playing and a large archive can be read
|
|
without fetching all of it.
|
|
- **Available offline.** Keep chosen files and folders fully downloaded; everything else is
|
|
cached within a size limit you set.
|
|
- **Synced folders.** Back up folders such as `~/Documents` under your computer in Proton Drive,
|
|
as a full two-way copy or online only. Gitignore-style `.pdfsignore` rules, conflict copies
|
|
instead of overwrites, pause and bandwidth limits.
|
|
- **Safe writes.** Changes are staged on disk and queued before they are acknowledged, so they
|
|
survive a lost connection, a crash or a reboot and upload when they can.
|
|
|
|
**Desktop app**
|
|
|
|
- **Browse** My files, Shared with me, Shared by me, Computers and Trash, with thumbnails
|
|
(including camera RAW), drag and drop, details and **version history**.
|
|
- **Photos.** Timeline with favorites, albums, and Places on a map; RAW+JPEG pairs shown as one
|
|
photo; duplicate finder; slideshow; **import from Google Photos** (Takeout).
|
|
- **Sharing.** Invite people as viewer, editor or admin, create public links with password and
|
|
expiry, accept invitations.
|
|
- **Sync overview.** What is uploading, what is waiting, what failed and why, and a history of
|
|
what happened.
|
|
- **Tray icon** with status, pause and quick actions, and a **search launcher** (`pdfs-prompt`)
|
|
that searches Proton Drive and your home folder together, as its own window, through fuzzel,
|
|
rofi or wofi, or live in `fzf`.
|
|
- **Restore a computer.** Continue a backup on a new machine and bring its folders back in one
|
|
step.
|
|
- **Sign-in** with two-factor authentication and CAPTCHA; the session is kept in the system
|
|
keyring.
|
|
- Available in English, German, Spanish, French, Italian, Dutch, Polish and Brazilian
|
|
Portuguese.
|
|
|
|
**Command line**
|
|
|
|
- About 55 `pdfs` commands cover files, sync, sharing, Photos, Trash, versions and diagnostics.
|
|
Query commands print JSON with `--json`.
|
|
|
|
## Install
|
|
|
|
| Distribution | Package |
|
|
|---|---|
|
|
| Debian, Ubuntu 24.04 or newer | `.deb` from the [latest release](https://github.com/narrrl/proton-drive-linux/releases/latest) |
|
|
| Fedora 44 or newer | `.rpm` from the [latest release](https://github.com/narrrl/proton-drive-linux/releases/latest) |
|
|
| Arch Linux | [`proton-drive-for-linux`](https://aur.archlinux.org/packages/proton-drive-for-linux) (also `-bin` and `-git`) in the AUR |
|
|
| Anything else | [Build from source](docs/INSTALL.md#build-from-source) |
|
|
|
|
```bash
|
|
sudo apt install ./proton-drive-linux_*.deb # Debian, Ubuntu
|
|
sudo dnf install ./proton-drive-linux-*.rpm # Fedora
|
|
paru -S proton-drive-for-linux # Arch
|
|
```
|
|
|
|
Then open **Proton Drive** from your applications menu and sign in. The app starts the background
|
|
service, and your files appear in `~/ProtonDrive`.
|
|
|
|
Signing in from a terminal instead? `pdfs login` stores the session but does not start the
|
|
service. Enable it once:
|
|
|
|
```bash
|
|
pdfs login
|
|
systemctl --user enable --now proton-drive.service
|
|
pdfs status
|
|
```
|
|
|
|
[docs/INSTALL.md](docs/INSTALL.md) has the requirements, optional extras (tray on GNOME, RAW and
|
|
video thumbnails), headless use and uninstalling.
|
|
|
|
## Documentation
|
|
|
|
| | |
|
|
|---|---|
|
|
| [User guide](docs/USER_GUIDE.md) | Everything the app, tray and launcher do |
|
|
| [Command-line reference](docs/CLI.md) | Every `pdfs` command and scripting with `--json` |
|
|
| [Configuration](docs/CONFIGURATION.md) | `config.json`, file locations, environment variables, the service |
|
|
| [Troubleshooting](docs/TROUBLESHOOTING.md) | Diagnosing problems and fixing common ones |
|
|
| [Recovering on a new computer](docs/RECOVERY.md) | Getting your synced folders back after a reinstall or a lost machine |
|
|
| [Changelog](docs/CHANGELOG.md) | What changed in each release |
|
|
|
|
For contributors: [development guide](docs/DEVELOPMENT.md), [architecture](docs/ARCHITECTURE.md),
|
|
[testing](docs/TESTING.md), [translating](docs/TRANSLATING.md), [roadmap](docs/ROADMAP.md) and the
|
|
[bug ledger](docs/BUGS.md). The [documentation index](docs/README.md) lists everything.
|
|
|
|
## Screenshots
|
|
|
|
<table>
|
|
<tr>
|
|
<td align="center" width="50%"><img src="images/files.png" alt="My files" width="100%"><br><sub><b>My files</b></sub></td>
|
|
<td align="center" width="50%"><img src="images/photos.png" alt="Photos timeline" width="100%"><br><sub><b>Photos</b></sub></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="50%"><img src="images/sync.png" alt="Sync folders" width="100%"><br><sub><b>Sync</b></sub></td>
|
|
<td align="center" width="50%"><img src="images/conflicts.png" alt="Sync history showing resolved conflicts" width="100%"><br><sub><b>Sync history</b></sub></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="50%"><img src="images/computers.png" alt="Computers" width="100%"><br><sub><b>Computers</b></sub></td>
|
|
<td align="center" width="50%"><img src="images/login.png" alt="Sign in" width="100%"><br><sub><b>Sign in</b></sub></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" width="50%"><img src="images/prompt_gtk.png" alt="Search launcher" width="100%"><br><sub><b>Search launcher</b></sub></td>
|
|
<td align="center" width="50%"><img src="images/prompt_fzf.png" alt="Search launcher in fzf" width="100%"><br><sub><b>Search launcher in fzf</b></sub></td>
|
|
</tr>
|
|
</table>
|
|
|
|
## How it works
|
|
|
|
A background service (`proton-drive.service`, the `pdfs daemon` command) holds your session,
|
|
mounts `~/ProtonDrive` through FUSE, runs the upload queue and the sync engine, and follows
|
|
Proton's event stream for changes made elsewhere. The app, the tray, the launcher and the CLI are
|
|
clients of that service over a local socket. Everything is end-to-end encrypted with your Proton
|
|
keys before it leaves the machine, through a Rust implementation of Proton's Drive SDK.
|
|
|
|
Files you open are decrypted into a local cache so programs can read them. What that means for
|
|
the security of the machine is spelled out in the
|
|
[threat model](docs/ARCHITECTURE.md#8-threat-model-what-this-client-writes-to-disk-in-plaintext).
|
|
|
|
## Contributing
|
|
|
|
Bug reports, translations and patches are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for the
|
|
workflow and the checks CI runs, and [SECURITY.md](SECURITY.md) to report a vulnerability
|
|
privately.
|
|
|
|
## License
|
|
|
|
Released under the [MIT License](LICENSE).
|
|
|
|
The Places map uses [GeoNames](https://www.geonames.org/) data (CC BY 4.0) and
|
|
[Natural Earth](https://www.naturalearthdata.com/) outlines (public domain). The optional street
|
|
map comes from [OpenFreeMap](https://openfreemap.org/), © [OpenStreetMap](https://www.openstreetmap.org/copyright)
|
|
contributors.
|
|
|
|
Proton Drive is a service of Proton AG. This project is an independent client and carries no
|
|
affiliation with or endorsement from Proton AG.
|