diff --git a/.changes/fix-exec-linux.md b/.changes/fix-exec-linux.md new file mode 100644 index 00000000..52028379 --- /dev/null +++ b/.changes/fix-exec-linux.md @@ -0,0 +1,5 @@ +--- +"cargo-packager": patch +--- + +Fix the `Exec` entry on the Linux .desktop file when the binary name contains spaces. diff --git a/crates/packager/src/package/deb/mod.rs b/crates/packager/src/package/deb/mod.rs index 2d19c6c4..7d6b8da8 100644 --- a/crates/packager/src/package/deb/mod.rs +++ b/crates/packager/src/package/deb/mod.rs @@ -158,6 +158,12 @@ fn generate_desktop_file(config: &Config, data_dir: &Path) -> crate::Result<()> let mime_type = (!mime_type.is_empty()).then(|| mime_type.join(";")); + let bin_name_exec = if bin_name.contains(' ') { + format!("\"{bin_name}\"") + } else { + bin_name.to_string() + }; + handlebars.render_to_write( "main.desktop", &DesktopTemplateParams { @@ -166,7 +172,7 @@ fn generate_desktop_file(config: &Config, data_dir: &Path) -> crate::Result<()> .map(|category| category.gnome_desktop_categories()) .unwrap_or(""), comment: config.description.as_deref(), - exec: &bin_name, + exec: &bin_name_exec, exec_arg, icon: &bin_name, name: config.product_name.as_str(),