diff --git a/Cargo.lock b/Cargo.lock index d4eb85f..6644ddf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -125,6 +125,7 @@ dependencies = [ "rand_core", "relm4", "tempfile", + "winresource", ] [[package]] @@ -1630,6 +1631,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 = "x25519-dalek" version = "2.0.1" diff --git a/Cargo.toml b/Cargo.toml index 6773e0a..c81e242 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,5 +15,8 @@ relm4 = { version = "0.9", features = ["libadwaita"] } rand_core = { version = "0.6", features = ["getrandom"] } qrcodegen = "1" +[build-dependencies] +winresource = "0.1" + [dev-dependencies] tempfile = "3" diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..b242a43 --- /dev/null +++ b/build.rs @@ -0,0 +1,10 @@ +// Windows reads the taskbar and Explorer icon from the exe's resource +// section; desktop environments on other platforms use the desktop file. +fn main() { + println!("cargo:rerun-if-changed=data/icons/com.randogoth.carrier.ico"); + if std::env::var("CARGO_CFG_WINDOWS").is_ok() { + let mut res = winresource::WindowsResource::new(); + res.set_icon("data/icons/com.randogoth.carrier.ico"); + res.compile().expect("failed to embed Windows icon"); + } +} diff --git a/data/icons/com.randogoth.carrier.ico b/data/icons/com.randogoth.carrier.ico new file mode 100644 index 0000000..8305c58 Binary files /dev/null and b/data/icons/com.randogoth.carrier.ico differ