docs: add callbacks example

This commit is contained in:
2026-09-30 17:53:30 +02:00
parent 43fb343d37
commit d37a834604
3 changed files with 274 additions and 0 deletions

36
examples/callbacks.rs Normal file
View File

@@ -0,0 +1,36 @@
use glib::MainLoop;
use libnotify_rs::{
functions::{init, uninit},
notification::Notification,
};
fn main() -> Result<(), Box<dyn std::error::Error>> {
init("Coffee reminder")?;
let mut notify = Notification::new("Drink coffee", "Click me when you're done drinking", None)?;
// We need to have a glib main loop in order to receive callback actions
let main_loop = MainLoop::new(None, false);
let loop_clone = main_loop.clone();
notify.add_action("default", "I'm drinking!", move |action_name| {
println!("User drunk his coffee!");
println!("Action was named: {}", action_name);
loop_clone.quit();
})?;
notify.show()?;
main_loop.run();
// Thanks to the main loop we can also read why the notification was closed
println!(
"Notification closed, because: {:?}",
notify.get_closed_reason()
);
println!("Glib mainloop has ended");
uninit();
Ok(())
}