Compare commits

...
Author SHA1 Message Date
Claude ba1fdd65be chore(release): 2.8.1 2026-09-30 17:02:31 +00:00
nvrl 0d4163b9bf fix(service): start with the graphical session, not default.target (#24)
default.target is reached before the desktop exports DISPLAY/WAYLAND_DISPLAY
to the user manager, so After=graphical-session.target never applied. The
daemon's first keyring call D-Bus-activated the Secret Service without a
display; on KDE ksecretd aborted, the first start failed, and every login
left a coredump.

Install into graphical-session.target instead, and use reenable when the
front-ends enable the unit so existing default.target.wants links are
replaced rather than kept alongside the new one.

Fixes #23
2026-09-30 19:01:50 +02:00
7 changed files with 45 additions and 10 deletions

No files matched your search

Generated
+4 -4
View File
@@ -3474,7 +3474,7 @@ checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4"
[[package]]
name = "pdfs-cli"
version = "2.8.0"
version = "2.8.1"
dependencies = [
"anyhow",
"clap",
@@ -3489,7 +3489,7 @@ dependencies = [
[[package]]
name = "pdfs-core"
version = "2.8.0"
version = "2.8.1"
dependencies = [
"async-trait",
"dbus-secret-service-keyring-store",
@@ -3513,7 +3513,7 @@ dependencies = [
[[package]]
name = "pdfs-fuse"
version = "2.8.0"
version = "2.8.1"
dependencies = [
"base64 0.23.1",
"fuser",
@@ -3533,7 +3533,7 @@ dependencies = [
[[package]]
name = "pdfs-gui"
version = "2.8.0"
version = "2.8.1"
dependencies = [
"anyhow",
"async-channel",
+1 -1
View File
@@ -3,7 +3,7 @@ resolver = "2"
members = ["crates/pdfs-core", "crates/pdfs-fuse", "crates/pdfs-cli", "crates/pdfs-gui"]
[workspace.package]
version = "2.8.0"
version = "2.8.1"
edition = "2024"
license = "MIT"
authors = ["Nils Pukropp <contact@narl.io>"]
+10 -3
View File
@@ -55,9 +55,10 @@ fn systemctl_query(args: &[&str]) -> bool {
/// keyring checks). `--now` is a no-op on an active unit, so the daemon would
/// keep sleeping and the mount would not appear until the next poll fired.
/// Restarting makes the new session take effect immediately, and starts the
/// unit when it is not running at all.
/// unit when it is not running at all. `reenable` for the reason given on
/// [`enable`].
pub fn enable_start() -> bool {
let enabled = systemctl(&["enable"]);
let enabled = systemctl(&["reenable"]);
systemctl(&["restart"]) && enabled
}
@@ -97,8 +98,14 @@ pub fn is_enabled() -> bool {
/// Enable the service so it auto-starts on future logins, without necessarily
/// starting it now beyond what `enable` does. Used by the Settings "Start on
/// login" switch; pairs with [`disable`](disable).
///
/// `reenable` rather than `enable`: older installs were enabled
/// into `default.target.wants`, and a plain `enable` would add the new
/// `graphical-session.target.wants` link while leaving the old one to start the
/// unit too early. `reenable` drops every existing link and recreates them from
/// the current `[Install]` section.
pub fn enable() -> bool {
systemctl(&["enable"])
systemctl(&["reenable"])
}
/// Disable auto-start without stopping the running mount. Used by the Settings
+14
View File
@@ -11,6 +11,19 @@ scratch (user data in `staging/` and `recovery/` is never touched by this).
## [Unreleased]
## [2.8.1] — 2026-09-30
Schema: **35** (unchanged). Requires `proton-drive-rs` **0.7.1**.
### Fixed
- **The service no longer starts before the desktop session.** `proton-drive.service` was
wanted by `default.target`, which is reached before the desktop hands `DISPLAY` /
`WAYLAND_DISPLAY` to the user's systemd. The first keyring call then started the Secret
Service without a display; on KDE `ksecretd` crashed at every login and the first start of the
service failed. The unit is now wanted by `graphical-session.target`. Existing installs switch
over on the next sign-in or "Start on login" toggle, or with
`systemctl --user reenable proton-drive.service` (#23).
## [2.8.0] — 2026-09-30
Schema: **35** (unchanged). Requires `proton-drive-rs` **0.7.1**.
@@ -1341,6 +1354,7 @@ First stable release: FUSE files-on-demand mount, sync daemon under `proton-driv
- The outstanding FUSE defects tracked in `docs/BUGS.md`, plus a truncate defect, validated
by a new POSIX compliance suite for the filesystem.
[2.8.1]: https://github.com/narrrl/proton-drive-linux/releases/tag/v2.8.1
[2.8.0]: https://github.com/narrrl/proton-drive-linux/releases/tag/v2.8.0
[2.7.0]: https://github.com/narrrl/proton-drive-linux/releases/tag/v2.7.0
+8
View File
@@ -215,6 +215,14 @@ starts; to switch at once:
systemctl --user restart proton-drive.service
```
Coming from 2.8.0 or older, re-enable the service once. Those releases hooked it into
`default.target`, which starts it before the desktop session is ready; on KDE that crashes
`ksecretd` at every login. Signing in again or toggling "Start on login" does this as well:
```bash
systemctl --user reenable proton-drive.service
```
Database migrations run automatically and only move forward. A database written by a newer
release refuses to open in an older one, so downgrading means clearing the local database (see
[Troubleshooting](TROUBLESHOOTING.md#start-over-with-a-clean-local-state)).
+1 -1
View File
@@ -9,7 +9,7 @@
# Build + install: cd packaging && makepkg -fi
pkgname=proton-drive-linux
pkgver=2.8.0
pkgver=2.8.1
pkgrel=1
pkgdesc="Unofficial Proton Drive client for Linux: files-on-demand FUSE mount, CLI, GTK4 app + tray"
arch=('x86_64')
+7 -1
View File
@@ -32,4 +32,10 @@ MemoryMax=6G
TimeoutStopSec=15
[Install]
WantedBy=default.target
# Not default.target: that is reached before the desktop has exported DISPLAY /
# WAYLAND_DISPLAY to the user manager, so After= above never orders anything
# (the two targets are not in the same start transaction). The daemon's first
# keyring call then D-Bus-activates the Secret Service without a display —
# on KDE ksecretd aborts, the start fails, and every login leaves a coredump.
# Being pulled in by the graphical session starts it only once that is up.
WantedBy=graphical-session.target