diff options
| author | Rousseau Vincent <vincentrou@gmail.com> | 2025-07-15 10:26:43 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-15 10:26:43 +0200 |
| commit | 118d5fb877381d207ec7e97262df584b3f4eb606 (patch) | |
| tree | b16bbdf0c7b1dbfcaa6bd4ebfcfcdf34c04a7823 /zellij-server/src/pty.rs | |
| parent | fix(web-server): thread leak due to excess file watching (#4286) (diff) | |
| download | sl0ppij-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.rs | 11 |
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 { |
