diff --git a/src/app.rs b/src/app.rs index a4af64b..08601c0 100644 --- a/src/app.rs +++ b/src/app.rs @@ -2306,6 +2306,7 @@ impl App { self.mime_app_cache .apps() .iter() + .filter(|mime_app| !mime_app.no_display) .filter(|&mime_app| dedupe.insert(&mime_app.id)) .map(|mime_app| (mime_app, MimeAppMatch::Other)), ); diff --git a/src/mime_app.rs b/src/mime_app.rs index 3b587ee..6bb0d8b 100644 --- a/src/mime_app.rs +++ b/src/mime_app.rs @@ -2,8 +2,6 @@ // SPDX-License-Identifier: GPL-3.0-only use bstr::{BString, ByteSlice, ByteVec}; -#[cfg(feature = "desktop")] -use cosmic::desktop; use cosmic::widget; pub use mime_guess::Mime; #[cfg(feature = "desktop")] @@ -186,6 +184,7 @@ pub struct MimeApp { pub exec: Option, pub icon: widget::icon::Handle, is_default: Arc, + pub no_display: bool, } impl MimeApp { @@ -211,25 +210,6 @@ impl AsRef for MimeApp { } } -#[cfg(feature = "desktop")] -impl From<&desktop::DesktopEntryData> for MimeApp { - fn from(app: &desktop::DesktopEntryData) -> Self { - Self { - id: app.id.clone(), - path: app.path.clone(), - name: app.name.clone(), - exec: app.exec.clone(), - icon: match &app.icon { - desktop::fde::IconSource::Name(name) => { - widget::icon::from_name(name.as_str()).size(32).handle() - } - desktop::fde::IconSource::Path(path) => widget::icon::from_path(path.clone()), - }, - is_default: Arc::new(AtomicBool::new(false)), - } - } -} - pub struct MimeAppCache { apps: Vec>, cache: FxHashMap>>, @@ -271,9 +251,7 @@ impl MimeAppCache { list.load_from_paths(&paths); let locales = fde::get_languages_from_env(); - let desktop_entries = fde::Iter::new(fde::default_paths()) - .entries(Some(&locales)) - .filter(move |de| !de.no_display()); + let desktop_entries = fde::Iter::new(fde::default_paths()).entries(Some(&locales)); for desktop_entry in desktop_entries { let name = desktop_entry @@ -294,6 +272,7 @@ impl MimeAppCache { } }, is_default: Arc::new(AtomicBool::new(false)), + no_display: desktop_entry.no_display(), }); tracing::info!(target: "mime-apps", id = app.id, "detected desktop entry");