hyprshell_exec_lib/
listener.rs1use core_lib::Warn;
2use tracing::info;
3
4pub async fn monitor_listener<F>(callback: F)
5where
6 F: Fn(&'static str) + 'static + Clone,
7{
8 let mut event_listener = hyprland::event_listener::EventListener::new();
9 let callback_clone = callback.clone();
10 event_listener.add_monitor_added_handler(move |_data| {
11 callback("monitor added");
12 });
13 event_listener.add_monitor_removed_handler(move |_data| {
14 callback_clone("monitor removed");
15 });
16 info!("Starting monitor added/removed listener");
17 event_listener
18 .start_listener_async()
19 .await
20 .warn("Failed to start monitor added/removed listener");
21}
22
23pub async fn hyprland_config_listener<F>(callback: F)
24where
25 F: Fn(&'static str) + 'static,
26{
27 let mut event_listener = hyprland::event_listener::EventListener::new();
28 event_listener.add_config_reloaded_handler(move || {
29 callback("hyprland config reload");
30 });
31 info!("Starting hyprland config reload listener");
32 event_listener
33 .start_listener_async()
34 .await
35 .warn("Failed to start hyprland config reload listener");
36}