diff --git a/src/api/linux/mod.rs b/src/api/linux/mod.rs index 176d77e..8a533e6 100644 --- a/src/api/linux/mod.rs +++ b/src/api/linux/mod.rs @@ -108,6 +108,11 @@ impl GtkSystrayApp { let mut ai = self.ai.borrow_mut(); ai.set_icon_full(file, "icon"); } + + pub fn set_icon_from_name(&self, name: &str) { + let mut ai = self.ai.borrow_mut(); + ai.set_icon(name); + } } pub struct Window { @@ -161,6 +166,14 @@ impl Window { Ok(()) } + pub fn set_icon_from_name(&self, name: &str) -> Result<(), Error> { + let n = name.to_owned().clone(); + run_on_gtk_thread(move |stash: &GtkSystrayApp| { + stash.set_icon_from_name(&n); + }); + Ok(()) + } + pub fn set_icon_from_resource(&self, resource: &str) -> Result<(), Error> { panic!("Not implemented on this platform!"); } diff --git a/src/lib.rs b/src/lib.rs index 36c6dbd..0ba0e74 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -107,6 +107,11 @@ impl Application { self.window.set_icon_from_file(file) } + #[cfg(target_os = "linux")] + pub fn set_icon_from_name(&self, name: &str) -> Result<(), Error> { + self.window.set_icon_from_name(name) + } + pub fn set_icon_from_resource(&self, resource: &str) -> Result<(), Error> { self.window.set_icon_from_resource(resource) }