diff --git a/src/notification.rs b/src/notification.rs index a8ae8d3..2f57781 100644 --- a/src/notification.rs +++ b/src/notification.rs @@ -249,7 +249,29 @@ impl<'a> Notification { /// Tells the notification server to display the notification on the screen pub fn show(&self) -> Result<(), Box> { - todo!(); + let mut gerror = std::ptr::null_mut() as *mut GError; + + if unsafe { notify_notification_show(self.inner, &mut gerror) } == 0 { + if gerror.is_null() { + return Err("Unknown error".into()); + } + + let err_msg = unsafe { *gerror }.message; + + if err_msg.is_null() { + unsafe { g_error_free(gerror) }; + return Err("Unknown error".into()); + } + + let err_msg_str = unsafe { std::ffi::CStr::from_ptr(err_msg) } + .to_string_lossy() + .to_string(); + + unsafe { g_error_free(gerror) }; + return Err(err_msg_str.into()); + } + + Ok(()) } /// Updates the notification text and icon.