The SDK caches each node, including the name hash it sends with the next rename or move, and only an event evicts it. Renames and moves didn't update that copy. So after a rename, the next change to the same node went out with the old name hash, Drive refused it as out of date (422), and the retry kept sending the stale hash until the event feed came round, up to 10 seconds later. - Every remote rename and move goes through `Core::rename_remote` or `Core::move_remote`. Both drop the SDK's copy of the node after a successful change and before each out-of-date retry, so the retry sends the current hash. - A plain move was not retried at all, so a move right after a rename failed with EIO through the mount and with "out of date" from `pdfs move`. It now retries like a rename. - The drain's combined move-and-rename also drops the SDK's copy once it lands. - A rename that also changes folders through the mount replies only once both halves have landed. When the move fails, the file keeps its new name in the source folder, the tree is told so, and the rename reports EIO. A dropped link still queues the change. B111's cause in docs/BUGS.md is corrected to the same SDK cache. The acceptance case "regression B121" renames and moves a file at once through the mount and through `pdfs`, and checks names and bytes.
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.
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 before you rely on it.
Features
Files
- Your Drive as a folder.
~/ProtonDriveworks 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
~/Documentsunder your computer in Proton Drive, as a full two-way copy or online only. Gitignore-style.pdfsignorerules, 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 infzf. - 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
pdfscommands 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 |
| Fedora 44 or newer | .rpm from the latest release |
| Arch Linux | proton-drive-for-linux (also -bin and -git) in the AUR |
| Anything else | Build from source |
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:
pdfs login
systemctl --user enable --now proton-drive.service
pdfs status
docs/INSTALL.md has the requirements, optional extras (tray on GNOME, RAW and video thumbnails), headless use and uninstalling.
Documentation
| User guide | Everything the app, tray and launcher do |
| Command-line reference | Every pdfs command and scripting with --json |
| Configuration | config.json, file locations, environment variables, the service |
| Troubleshooting | Diagnosing problems and fixing common ones |
| Recovering on a new computer | Getting your synced folders back after a reinstall or a lost machine |
| Changelog | What changed in each release |
For contributors: development guide, architecture, testing, translating, roadmap and the bug ledger. The documentation index lists everything.
Screenshots
![]() My files |
![]() Photos |
![]() Places |
![]() Computers |
![]() Sync |
![]() Sync history |
![]() Search launcher |
![]() Search launcher in fzf |
![]() Sign in |
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.
Contributing
Bug reports, translations and patches are welcome. See CONTRIBUTING.md for the workflow and the checks CI runs, and SECURITY.md to report a vulnerability privately.
License
Released under the MIT License.
The Places map uses GeoNames data (CC BY 4.0) and Natural Earth outlines (public domain). The optional street map comes from OpenFreeMap, © OpenStreetMap 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.







