diff options
Diffstat (limited to 'crates/dinggerd/src/tmux.rs')
| -rw-r--r-- | crates/dinggerd/src/tmux.rs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/crates/dinggerd/src/tmux.rs b/crates/dinggerd/src/tmux.rs index 54da39d..f69acd1 100644 --- a/crates/dinggerd/src/tmux.rs +++ b/crates/dinggerd/src/tmux.rs @@ -274,10 +274,12 @@ pub fn pane_format(pane_id: &str, format: &str) -> Option<String> { /// Expand a format in the context of a client (its current pane/window). pub fn client_format(client: &str, format: &str) -> Option<String> { - run_tmux(&["display-message", "-p", "-c", client, format]) - .ok() - .map(|value| value.trim().to_string()) - .filter(|value| !value.is_empty()) + // For a client that is gone, tmux answers for the current one instead: + // the answer names its client, and must name this one. + let out = run_tmux(&["display-message", "-p", "-c", client, &format!("#{{client_name}}\t{format}")]).ok()?; + let (name, value) = out.trim_end_matches('\n').split_once('\t')?; + let value = value.trim(); + (name == client && !value.is_empty()).then(|| value.to_string()) } /// The sessions holding a pane's window (several: a session group, a linked |
