diff options
Diffstat (limited to 'src/ipc/client.rs')
| -rw-r--r-- | src/ipc/client.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/ipc/client.rs b/src/ipc/client.rs index 8682d8d3..66cdaf7d 100644 --- a/src/ipc/client.rs +++ b/src/ipc/client.rs @@ -19,6 +19,7 @@ pub fn handle_msg(msg: Msg, json: bool) -> anyhow::Result<()> { Msg::Outputs => Request::Outputs, Msg::FocusedWindow => Request::FocusedWindow, Msg::FocusedOutput => Request::FocusedOutput, + Msg::PickWindow => Request::PickWindow, Msg::Action { action } => Request::Action(action.clone()), Msg::Output { output, action } => Request::Output { output: output.clone(), @@ -252,6 +253,23 @@ pub fn handle_msg(msg: Msg, json: bool) -> anyhow::Result<()> { println!("No output is focused."); } } + Msg::PickWindow => { + let Response::PickedWindow(window) = response else { + bail!("unexpected response: expected PickedWindow, got {response:?}"); + }; + + if json { + let window = serde_json::to_string(&window).context("error formatting response")?; + println!("{window}"); + return Ok(()); + } + + if let Some(window) = window { + print_window(&window); + } else { + println!("No window selected."); + } + } Msg::Action { .. } => { let Response::Handled = response else { bail!("unexpected response: expected Handled, got {response:?}"); |
