Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changes/disable-desktop-entry.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"cargo-packager": patch
"@crabnebula/packager": patch
---

Added `linux > generateDesktopEntry` config to allow disabling generating a .desktop file on Linux bundles (defaults to true).
23 changes: 23 additions & 0 deletions bindings/packager/nodejs/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,17 @@
}
]
},
"linux": {
"description": "Linux-specific configuration",
"anyOf": [
{
"$ref": "#/definitions/LinuxConfig"
},
{
"type": "null"
}
]
},
"deb": {
"description": "Debian-specific configuration.",
"anyOf": [
Expand Down Expand Up @@ -792,6 +803,18 @@
},
"additionalProperties": false
},
"LinuxConfig": {
"description": "Linux configuration",
"type": "object",
"properties": {
"generateDesktopEntry": {
"description": "Flag to indicate if desktop entry should be generated.",
"default": true,
"type": "boolean"
}
},
"additionalProperties": false
},
"DebianConfig": {
"description": "The Linux Debian configuration.",
"type": "object",
Expand Down
23 changes: 23 additions & 0 deletions crates/packager/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,17 @@
}
]
},
"linux": {
"description": "Linux-specific configuration",
"anyOf": [
{
"$ref": "#/definitions/LinuxConfig"
},
{
"type": "null"
}
]
},
"deb": {
"description": "Debian-specific configuration.",
"anyOf": [
Expand Down Expand Up @@ -792,6 +803,18 @@
},
"additionalProperties": false
},
"LinuxConfig": {
"description": "Linux configuration",
"type": "object",
"properties": {
"generateDesktopEntry": {
"description": "Flag to indicate if desktop entry should be generated.",
"default": true,
"type": "boolean"
}
},
"additionalProperties": false
},
"DebianConfig": {
"description": "The Linux Debian configuration.",
"type": "object",
Expand Down
22 changes: 22 additions & 0 deletions crates/packager/src/config/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -840,6 +840,21 @@ impl MacOsConfig {
}
}

/// Linux configuration
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
#[non_exhaustive]
pub struct LinuxConfig {
/// Flag to indicate if desktop entry should be generated.
#[serde(
default = "default_true",
alias = "generate-desktop-entry",
alias = "generate_desktop_entry"
)]
pub generate_desktop_entry: bool,
}

/// A wix language.
#[derive(Debug, Clone, Deserialize, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
Expand Down Expand Up @@ -1715,6 +1730,8 @@ pub struct Config {
pub windows: Option<WindowsConfig>,
/// MacOS-specific configuration.
pub macos: Option<MacOsConfig>,
/// Linux-specific configuration
pub linux: Option<LinuxConfig>,
/// Debian-specific configuration.
pub deb: Option<DebianConfig>,
/// AppImage configuration.
Expand Down Expand Up @@ -1745,6 +1762,11 @@ impl Config {
self.macos.as_ref()
}

/// Returns the [linux](Config::linux) specific configuration.
pub fn linux(&self) -> Option<&LinuxConfig> {
self.linux.as_ref()
}

/// Returns the [nsis](Config::nsis) specific configuration.
pub fn nsis(&self) -> Option<&NsisConfig> {
self.nsis.as_ref()
Expand Down
4 changes: 2 additions & 2 deletions crates/packager/src/package/app/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -317,13 +317,13 @@ fn create_info_plist(

plist.insert("LSRequiresCarbon".into(), true.into());
plist.insert("NSHighResolutionCapable".into(), true.into());

if let Some(macos_config) = config.macos() {
if macos_config.background_app {
plist.insert("LSUIElement".into(), true.into());
}
}

if let Some(copyright) = &config.copyright {
plist.insert("NSHumanReadableCopyright".into(), copyright.clone().into());
}
Expand Down
10 changes: 8 additions & 2 deletions crates/packager/src/package/deb/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -208,8 +208,14 @@ pub fn generate_data(config: &Config, data_dir: &Path) -> crate::Result<BTreeSet
tracing::debug!("Generating icons");
let icons = generate_icon_files(config, data_dir)?;

tracing::debug!("Generating desktop file");
generate_desktop_file(config, data_dir)?;
let generate_desktop_entry = config
.linux()
.map_or(true, |linux| linux.generate_desktop_entry);

if generate_desktop_entry {
tracing::debug!("Generating desktop file");
generate_desktop_file(config, data_dir)?;
}

Ok(icons)
}
Expand Down