|
|
@ -17,6 +17,8 @@ use swayipc::reply as r; |
|
|
|
pub fn monitor_sway_events( |
|
|
|
pub fn monitor_sway_events( |
|
|
|
extra_props: Arc<RwLock<HashMap<i64, ipc::ExtraProps>>>, |
|
|
|
extra_props: Arc<RwLock<HashMap<i64, ipc::ExtraProps>>>, |
|
|
|
) { |
|
|
|
) { |
|
|
|
|
|
|
|
'reset: loop { |
|
|
|
|
|
|
|
println!("Connecting to sway for subscribing to events..."); |
|
|
|
let iter = s::Connection::new() |
|
|
|
let iter = s::Connection::new() |
|
|
|
.expect("Could not connect!") |
|
|
|
.expect("Could not connect!") |
|
|
|
.subscribe(&[s::EventType::Window, s::EventType::Workspace]) |
|
|
|
.subscribe(&[s::EventType::Window, s::EventType::Workspace]) |
|
|
@ -28,17 +30,20 @@ pub fn monitor_sway_events( |
|
|
|
Ok(ev) => match ev { |
|
|
|
Ok(ev) => match ev { |
|
|
|
r::Event::Window(win_ev) => { |
|
|
|
r::Event::Window(win_ev) => { |
|
|
|
let extra_props_clone = extra_props.clone(); |
|
|
|
let extra_props_clone = extra_props.clone(); |
|
|
|
handled = handle_window_event(win_ev, extra_props_clone); |
|
|
|
handled = |
|
|
|
|
|
|
|
handle_window_event(win_ev, extra_props_clone); |
|
|
|
} |
|
|
|
} |
|
|
|
r::Event::Workspace(ws_ev) => { |
|
|
|
r::Event::Workspace(ws_ev) => { |
|
|
|
let extra_props_clone = extra_props.clone(); |
|
|
|
let extra_props_clone = extra_props.clone(); |
|
|
|
handled = handle_workspace_event(ws_ev, extra_props_clone); |
|
|
|
handled = |
|
|
|
|
|
|
|
handle_workspace_event(ws_ev, extra_props_clone); |
|
|
|
} |
|
|
|
} |
|
|
|
_ => handled = false, |
|
|
|
_ => handled = false, |
|
|
|
}, |
|
|
|
}, |
|
|
|
Err(e) => { |
|
|
|
Err(e) => { |
|
|
|
eprintln!("Error while receiving events: {}", e); |
|
|
|
eprintln!("Error while receiving events: {}", e); |
|
|
|
handled = false; |
|
|
|
eprintln!("Resetting!"); |
|
|
|
|
|
|
|
break 'reset; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if handled { |
|
|
|
if handled { |
|
|
@ -48,6 +53,7 @@ pub fn monitor_sway_events( |
|
|
|
); |
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fn handle_window_event( |
|
|
|
fn handle_window_event( |
|
|
|