diff options
| author | Aram Drevekenin <aram@poor.dev> | 2026-03-09 13:31:08 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-09 13:31:08 +0100 |
| commit | e7985f0d77c4ee847d014b808eeede55d20f6d79 (patch) | |
| tree | e41151bedba3bc525c117db3d82e264ac63464f9 /zellij-utils/src/kdl | |
| parent | Add cli paste action (#4817) (diff) | |
| download | sl0ppij-e7985f0d77c4ee847d014b808eeede55d20f6d79.tar.gz sl0ppij-e7985f0d77c4ee847d014b808eeede55d20f6d79.tar.xz sl0ppij-e7985f0d77c4ee847d014b808eeede55d20f6d79.zip | |
Single screen session manager (#4821)
* initial implementation
* adjust ui
* preserve selection
* width responsiveness
* behavior fixes
* fix: do not count suppressed panes
* ui improvements
* multi-screen config and prompt hint
* tests + refactoring
* improve performance
* add pr
Diffstat (limited to 'zellij-utils/src/kdl')
3 files changed, 18 insertions, 0 deletions
diff --git a/zellij-utils/src/kdl/mod.rs b/zellij-utils/src/kdl/mod.rs index 9fcb3113..1bc31117 100644 --- a/zellij-utils/src/kdl/mod.rs +++ b/zellij-utils/src/kdl/mod.rs @@ -29,6 +29,7 @@ use kdl::{KdlDocument, KdlEntry, KdlNode, KdlValue}; use std::path::PathBuf; use std::str::FromStr; +use std::time::Duration; use crate::input::actions::{Action, SearchDirection, SearchOption}; use crate::input::command::RunCommandAction; @@ -5476,6 +5477,12 @@ impl SessionInfo { } } } + let creation_time = kdl_document + .get("creation_time") + .and_then(|n| n.entries().iter().next()) + .and_then(|e| e.value().as_i64()) + .map(|c| Duration::from_secs(c as u64)) + .unwrap_or_default(); Ok(SessionInfo { name, tabs, @@ -5488,6 +5495,7 @@ impl SessionInfo { plugins: Default::default(), // we do not serialize plugin information tab_history, pane_history, + creation_time, }) } pub fn to_string(&self) -> String { @@ -5590,6 +5598,11 @@ impl SessionInfo { kdl_document.nodes_mut().push(available_layouts); kdl_document.nodes_mut().push(tab_history); kdl_document.nodes_mut().push(pane_history); + + let mut creation_time_node = KdlNode::new("creation_time"); + creation_time_node.push(self.creation_time.as_secs() as i64); + kdl_document.nodes_mut().push(creation_time_node); + kdl_document.fmt(); kdl_document.to_string() } @@ -6169,6 +6182,7 @@ fn serialize_and_deserialize_session_info_with_data() { web_clients_allowed: true, tab_history: Default::default(), pane_history: Default::default(), + creation_time: Duration::from_secs(300), }; let serialized = session_info.to_string(); let deserealized = SessionInfo::from_string(&serialized, "not this session").unwrap(); diff --git a/zellij-utils/src/kdl/snapshots/zellij_utils__kdl__serialize_and_deserialize_session_info.snap b/zellij-utils/src/kdl/snapshots/zellij_utils__kdl__serialize_and_deserialize_session_info.snap index e43fcf3b..6c19c4e8 100644 --- a/zellij-utils/src/kdl/snapshots/zellij_utils__kdl__serialize_and_deserialize_session_info.snap +++ b/zellij-utils/src/kdl/snapshots/zellij_utils__kdl__serialize_and_deserialize_session_info.snap @@ -16,3 +16,5 @@ tab_history { } pane_history { } +creation_time 0 + diff --git a/zellij-utils/src/kdl/snapshots/zellij_utils__kdl__serialize_and_deserialize_session_info_with_data.snap b/zellij-utils/src/kdl/snapshots/zellij_utils__kdl__serialize_and_deserialize_session_info_with_data.snap index f68ffb74..546c4e65 100644 --- a/zellij-utils/src/kdl/snapshots/zellij_utils__kdl__serialize_and_deserialize_session_info_with_data.snap +++ b/zellij-utils/src/kdl/snapshots/zellij_utils__kdl__serialize_and_deserialize_session_info_with_data.snap @@ -102,3 +102,5 @@ tab_history { } pane_history { } +creation_time 300 + |
