aboutsummaryrefslogtreecommitdiff
path: root/crates/dinggerd/src/tmux.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/dinggerd/src/tmux.rs')
-rw-r--r--crates/dinggerd/src/tmux.rs10
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