use libtmux::query::{Filterable as _, QueryIteratorExt as _};
use libtmux::{Pane, Server};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let wanted = std::env::args().nth(1).unwrap_or_else(|| "sh".to_owned());
let server = Server::from_env().or_else(|_| Server::new())?;
let fields = Pane::filter_fields();
let running = fields.pane_current_command.eq(wanted.as_str());
let panes = server.panes().await?;
for pane in panes.iter().matching(&running) {
println!("{} in window {}", pane.id(), pane.window_id());
}
match panes.iter().matching(&running).exactly_one() {
Ok(pane) => println!("exactly one: {}", pane.id()),
Err(error) => println!("not exactly one: {error}"),
}
server.shutdown().await?;
Ok(())
}