hyprshell_exec_lib/
listener.rs

1use 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}