Add mime types to desktop entry data

This commit is contained in:
Jeremy Soller 2024-03-01 11:53:26 -07:00
parent 8a86f1857f
commit 0a7327c91a
No known key found for this signature in database
GPG key ID: D02FD439211AF56F
2 changed files with 13 additions and 1 deletions

View file

@ -26,7 +26,7 @@ process = ["dep:nix"]
# Use rfd for file dialogs
rfd = ["dep:rfd"]
# Enables desktop files helpers
desktop = ["process", "dep:freedesktop-desktop-entry", "dep:shlex"]
desktop = ["process", "dep:freedesktop-desktop-entry", "dep:mime", "dep:shlex"]
# Enables keycode serialization
serde-keycode = ["iced_core/serde"]
# Prevents multiple separate process instances.
@ -67,6 +67,7 @@ derive_setters = "0.1.5"
fraction = "0.14.0"
image = { version = "0.24.6", optional = true }
lazy_static = "1.4.0"
mime = { version = "0.3.17", optional = true }
nix = { version = "0.27", features = ["process"], optional = true }
palette = "0.7.3"
rfd = { version = "0.13.0", optional = true }

View file

@ -1,4 +1,5 @@
pub use freedesktop_desktop_entry::DesktopEntry;
pub use mime::Mime;
use std::{
borrow::Cow,
ffi::OsStr,
@ -57,6 +58,7 @@ pub struct DesktopEntryData {
pub path: Option<PathBuf>,
pub categories: String,
pub desktop_actions: Vec<DesktopAction>,
pub mime_types: Vec<Mime>,
pub prefers_dgpu: bool,
}
@ -182,6 +184,15 @@ impl DesktopEntryData {
.collect::<Vec<_>>()
})
.unwrap_or_default(),
mime_types: de
.mime_type()
.map(|mime_types| {
mime_types
.split_terminator(';')
.filter_map(|mime_type| mime_type.parse::<Mime>().ok())
.collect::<Vec<_>>()
})
.unwrap_or_default(),
prefers_dgpu: de.prefers_non_default_gpu(),
}
}