From 1cf6fa5f13cef11640bd0c08d771a9c4e0b79c36 Mon Sep 17 00:00:00 2001 From: Alexander Mohr Date: Thu, 24 Apr 2025 20:16:23 +0200 Subject: [PATCH] improve image lookup --- src/lib/gui.rs | 6 ++---- src/lib/mode.rs | 5 +++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/lib/gui.rs b/src/lib/gui.rs index 84145a3..8ba6cce 100644 --- a/src/lib/gui.rs +++ b/src/lib/gui.rs @@ -786,10 +786,8 @@ fn create_menu_row( fn lookup_icon(menu_item: &MenuItem, config: &Config) -> Option { if let Some(image_path) = &menu_item.icon_path { - let img_regex = Regex::new(&format!(r"(?i).*{}", known_image_extension_regex_pattern())); - let image = if image_path.starts_with("/") { - Image::from_file(image_path) - } else if img_regex.unwrap().is_match(image_path) { + let img_regex = Regex::new(&format!(r"((?i).*{})|(^/.*)", known_image_extension_regex_pattern())); + let image = if img_regex.unwrap().is_match(image_path) { if let Ok(img) = desktop::fetch_icon_from_common_dirs(&image_path) { Image::from_file(img) } else { diff --git a/src/lib/mode.rs b/src/lib/mode.rs index 6932b5a..15052f9 100644 --- a/src/lib/mode.rs +++ b/src/lib/mode.rs @@ -128,13 +128,14 @@ impl DRunProvider { .icon .as_ref() .map(|s| s.content.clone()) - .or(icon.clone()); + .or(icon.clone()) + .unwrap_or("application-x-executable".to_string()); log::debug!("sub, action_name={action_name:?}, action_icon={action_icon:?}"); let sub_entry = MenuItem { label: action_name, - icon_path: action_icon, + icon_path: Some(action_icon), action: action.exec.clone(), sub_elements: Vec::default(), working_dir: working_dir.clone(),