From 179f192ca43b862259126ddb06b4c8ebcd7d1f09 Mon Sep 17 00:00:00 2001 From: LynithDev <61880709+LynithDev@users.noreply.github.com> Date: Mon, 20 Jul 2026 22:35:43 +0200 Subject: [PATCH] fix: Missing icons on Windows and Linux --- Cargo.lock | 11 +++++++++++ packages/oneclient_app/Cargo.toml | 6 +++--- packages/oneclient_app/build.rs | 10 ++++++++++ packages/oneclient_app/src/constants.rs | 2 +- packages/oneclient_app/src/main.rs | 7 +++++-- 5 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 packages/oneclient_app/build.rs diff --git a/Cargo.lock b/Cargo.lock index b940dc5b..769ab812 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4509,6 +4509,7 @@ dependencies = [ "tracing", "tracing-subscriber", "uuid 1.23.1", + "winresource", ] [[package]] @@ -8137,6 +8138,16 @@ dependencies = [ "memchr", ] +[[package]] +name = "winresource" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0986a8b1d586b7d3e4fe3d9ea39fb451ae22869dcea4aa109d287a374d866087" +dependencies = [ + "toml", + "version_check", +] + [[package]] name = "wit-bindgen" version = "0.51.0" diff --git a/packages/oneclient_app/Cargo.toml b/packages/oneclient_app/Cargo.toml index ed794009..23bc74b4 100644 --- a/packages/oneclient_app/Cargo.toml +++ b/packages/oneclient_app/Cargo.toml @@ -47,9 +47,9 @@ freya.workspace = true [target.'cfg(target_os = "macos")'.dependencies] mimalloc = "=0.1.52" -# Build then package (per OS): -# cargo build --release -p oneclient_app -# cargo packager --release -p oneclient_app --formats +[target.'cfg(windows)'.build-dependencies] +winresource = "=0.1.31" + [package.metadata.packager] product-name = "OneClient" identifier = "org.polyfrost.OneClient" diff --git a/packages/oneclient_app/build.rs b/packages/oneclient_app/build.rs new file mode 100644 index 00000000..4d3261e9 --- /dev/null +++ b/packages/oneclient_app/build.rs @@ -0,0 +1,10 @@ +fn main() { + // Embeds the app icon into the Windows executable. + #[cfg(windows)] + { + let mut res = winresource::WindowsResource::new(); + res.set_icon("icons/icon.ico"); + res.compile() + .expect("failed to embed Windows icon resource"); + } +} diff --git a/packages/oneclient_app/src/constants.rs b/packages/oneclient_app/src/constants.rs index 23f6ae53..fae70583 100644 --- a/packages/oneclient_app/src/constants.rs +++ b/packages/oneclient_app/src/constants.rs @@ -1,2 +1,2 @@ -pub const APP_ID: &str = "org.polyfrost.OneClient"; +pub const WINDOW_APP_ID: &str = "oneclient_app"; pub const WINDOW_TITLE: &str = "OneClient"; diff --git a/packages/oneclient_app/src/main.rs b/packages/oneclient_app/src/main.rs index c2ac7c12..dd269c01 100644 --- a/packages/oneclient_app/src/main.rs +++ b/packages/oneclient_app/src/main.rs @@ -63,7 +63,10 @@ fn main() { .with_window( WindowConfig::new_app(OneClientApp { bridge }) .with_title(constants::WINDOW_TITLE) - .with_app_id(constants::APP_ID) + .with_app_id(constants::WINDOW_APP_ID) + .with_icon(LaunchConfig::window_icon(include_bytes!( + "../icons/128x128.png" + ))) .with_size(1200., 800.) .with_min_size(800., 600.) .with_decorations(false) @@ -74,7 +77,7 @@ fn main() { std::env::var("ONECLIENT_GPU_CACHE_MB") .ok() .and_then(|v| v.parse::().ok()) - .unwrap_or(32), + .unwrap_or(32 * 1024 * 1024), ) .with_default_font(theme::DEFAULT_FONT);