aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/kdl
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2026-03-09 13:31:08 +0100
committerGitHub <noreply@github.com>2026-03-09 13:31:08 +0100
commite7985f0d77c4ee847d014b808eeede55d20f6d79 (patch)
treee41151bedba3bc525c117db3d82e264ac63464f9 /zellij-utils/src/kdl
parentAdd cli paste action (#4817) (diff)
downloadsl0ppij-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')
-rw-r--r--zellij-utils/src/kdl/mod.rs14
-rw-r--r--zellij-utils/src/kdl/snapshots/zellij_utils__kdl__serialize_and_deserialize_session_info.snap2
-rw-r--r--zellij-utils/src/kdl/snapshots/zellij_utils__kdl__serialize_and_deserialize_session_info_with_data.snap2
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
+