From ebb648b8c88641e55d27ee2c50134abca6f8f630 Mon Sep 17 00:00:00 2001 From: LucaPisl <40901735+LucaPisl@users.noreply.github.com> Date: Thu, 1 Oct 2026 02:16:53 +0300 Subject: [PATCH] fix: recognize KSecretService in desktop wallet recommendations --- src/credentials/providers.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/credentials/providers.rs b/src/credentials/providers.rs index 6fcf6b9..99fd724 100644 --- a/src/credentials/providers.rs +++ b/src/credentials/providers.rs @@ -121,10 +121,21 @@ pub fn discover_providers() -> Result> { && supports_secret_service(&bus, &owner) && seen.insert(owner) { - let recommended = (desktop.contains("kde") - && exe.to_string_lossy().contains("kwallet")) - || (desktop.contains("gnome") - && exe.to_string_lossy().contains("gnome-keyring")); + let executable_name = exe + .file_name() + .and_then(|s| s.to_str()) + .unwrap_or("") + .to_lowercase(); + let kde_desktop = desktop.contains("kde") || desktop.contains("lxqt"); + let gnome_desktop = [ + "gnome", "cinnamon", "mate", "xfce", "lxde", "unity", "pantheon", "budgie", + ] + .iter() + .any(|d| desktop.contains(d)); + let recommended = (kde_desktop + && (executable_name.contains("kwallet") + || executable_name.contains("ksecret"))) + || (gnome_desktop && executable_name.contains("gnome-keyring")); output.push(ProviderCandidate { label: label.to_string(), identity: Some(ProviderIdentity {