From 55b0b19135ad75546de9d2d24cd176fe6e24abba Mon Sep 17 00:00:00 2001 From: Michael Aaron Murphy Date: Wed, 11 Jun 2025 15:00:34 +0200 Subject: [PATCH] feat(panel): get localized applet entries Closes #1223 --- cosmic-settings/src/pages/applications/startup_apps.rs | 2 +- cosmic-settings/src/pages/desktop/panel/applets_inner.rs | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cosmic-settings/src/pages/applications/startup_apps.rs b/cosmic-settings/src/pages/applications/startup_apps.rs index caad51f..20f425e 100644 --- a/cosmic-settings/src/pages/applications/startup_apps.rs +++ b/cosmic-settings/src/pages/applications/startup_apps.rs @@ -227,7 +227,7 @@ impl Page { directories.get(0).expect("Always at least one directory"); _ = std::fs::create_dir_all(directory_to_target.as_path()); - + if let Ok(exists) = std::fs::exists(directory_to_target.join(file_name.clone())) { if !exists { // when adding an application, we want to symlink to be more user-friendly diff --git a/cosmic-settings/src/pages/desktop/panel/applets_inner.rs b/cosmic-settings/src/pages/desktop/panel/applets_inner.rs index f380a2d..66ec1c4 100644 --- a/cosmic-settings/src/pages/desktop/panel/applets_inner.rs +++ b/cosmic-settings/src/pages/desktop/panel/applets_inner.rs @@ -562,15 +562,16 @@ impl<'a> TryFrom> for Applet<'static> { fn try_from(path: Cow<'a, Path>) -> Result { let content = std::fs::read_to_string(path.as_ref())?; - let entry = DesktopEntry::from_str(path.as_ref(), &content, None::<&[&str]>)?; + let languages = freedesktop_desktop_entry::get_languages_from_env(); + let entry = DesktopEntry::from_str(path.as_ref(), &content, Some(&languages))?; if entry.desktop_entry("X-CosmicApplet").is_none() { anyhow::bail!("Not an applet"); } Ok(Self { id: Cow::from(entry.id().to_string()), - name: Cow::from(entry.name::<&str>(&[]).unwrap_or_default().to_string()), - description: Cow::from(entry.comment::<&str>(&[]).unwrap_or_default().to_string()), + name: Cow::from(entry.name(&languages).unwrap_or_default().to_string()), + description: Cow::from(entry.comment(&languages).unwrap_or_default().to_string()), icon: Cow::from(entry.icon().unwrap_or_default().to_string()), path: Cow::from(path.into_owned()), })