aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-server/src/pty.rs
diff options
context:
space:
mode:
authorRousseau Vincent <vincentrou@gmail.com>2025-07-15 10:26:43 +0200
committerGitHub <noreply@github.com>2025-07-15 10:26:43 +0200
commit118d5fb877381d207ec7e97262df584b3f4eb606 (patch)
treeb16bbdf0c7b1dbfcaa6bd4ebfcfcdf34c04a7823 /zellij-server/src/pty.rs
parentfix(web-server): thread leak due to excess file watching (#4286) (diff)
downloadsl0ppij-118d5fb877381d207ec7e97262df584b3f4eb606.tar.gz
sl0ppij-118d5fb877381d207ec7e97262df584b3f4eb606.tar.xz
sl0ppij-118d5fb877381d207ec7e97262df584b3f4eb606.zip
fix: populate layount metadata with the right cmd and cwd (#4287)
Add cmd from sysinfo in terminal_ids_to_commands if no cmd are return by ps. So then, cmd and cwd are udpated in "session-layout.kdl" even if no cmd is runing in pane.
Diffstat (limited to 'zellij-server/src/pty.rs')
-rw-r--r--zellij-server/src/pty.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/zellij-server/src/pty.rs b/zellij-server/src/pty.rs
index 2658188b..26fe7203 100644
--- a/zellij-server/src/pty.rs
+++ b/zellij-server/src/pty.rs
@@ -1425,7 +1425,7 @@ impl Pty {
.filter_map(|id| self.id_to_child_pid.get(&id))
.map(|pid| Pid::from_raw(*pid))
.collect();
- let pids_to_cwds = self
+ let (pids_to_cwds, pids_to_cmds) = self
.bus
.os_input
.as_ref()
@@ -1443,10 +1443,15 @@ impl Pty {
let cwd = process_id
.as_ref()
.and_then(|pid| pids_to_cwds.get(&Pid::from_raw(**pid)));
- let cmd = process_id
+ let cmd_sysinfo = process_id
+ .as_ref()
+ .and_then(|pid| pids_to_cmds.get(&Pid::from_raw(**pid)));
+ let cmd_ps = process_id
.as_ref()
.and_then(|pid| ppids_to_cmds.get(&format!("{}", pid)));
- if let Some(cmd) = cmd {
+ if let Some(cmd) = cmd_ps {
+ terminal_ids_to_commands.insert(terminal_id, cmd.clone());
+ } else if let Some(cmd) = cmd_sysinfo {
terminal_ids_to_commands.insert(terminal_id, cmd.clone());
}
if let Some(cwd) = cwd {