aboutsummaryrefslogtreecommitdiffstats
path: root/sl0ppij/zellij-utils/src
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-12 17:05:34 +0200
committeruser <user@clank>2026-08-12 19:34:19 +0200
commit21fbcf3c68d38423d994f529a4653b9cd77fc4c0 (patch)
tree65a8514c54424bf90ad887bf59f24810518d5c8c /sl0ppij/zellij-utils/src
parentsl0p: propose per-pane workspace hints (diff)
downloadsl0ppi-21fbcf3c68d38423d994f529a4653b9cd77fc4c0.tar.gz
sl0ppi-21fbcf3c68d38423d994f529a4653b9cd77fc4c0.tar.xz
sl0ppi-21fbcf3c68d38423d994f529a4653b9cd77fc4c0.zip
sl0p: per-pane workspace hints (purpose=)
Implements the zellij half of sl0p/workspace-hints-proposal.md: a pane can carry an opaque agent-facing hint for what it is FOR, so a project can ship a layout that an agent is able to navigate instead of guessing. zellij never interprets a purpose. The consuming agent owns the entire vocabulary, which is what keeps this to one string threaded along the existing status_bar path rather than a policy engine, and lets the vocabulary change without a rebuild. Two ways in, because declared panes and agent-created panes are different: layout: pane name="server" purpose="dev-server" in-band: printf '\033]5577;1;purpose;agent:build\033\\' The second exists because tagging at spawn time would mean threading a field through 28 SpawnTerminal call sites, and a new action variant is impossible while protobuf enums cannot be regenerated. Wrapping the command costs one printf. A declared purpose outranks an in-band one and cannot be overridden or cleared by it. OSC arrives from whatever the pane happens to be showing, so otherwise a `cat hostile.txt` in the human's editor pane could relabel it as the agent's scratch pane and invite an agent to run commands where the human is working. A layout is written by a human in a file they can read; in-band data only fills a blank. Exposed on PaneListEntry (`list-panes --json`) rather than PaneInfo, which crosses the plugin protobuf API we cannot regenerate; resolved in the screen thread where panes live rather than via route.rs's per-pane PTY round-trips. Values are sanitised to a bounded [A-Za-z0-9_.:/-] token at both entry points, because a purpose is never rendered -- it is matched against and pasted into consumers' shell and JSON pipelines. Verified end to end rather than by inspection: purposes from a layout appear in list-panes --json against the right pane ids, an agent-spawned pane tags itself, a declared purpose survives an in-band override attempt, all of it comes back after kill + resurrect, an unknown pane property is still a parse error, and a layout with no purpose leaves dump-layout unchanged.
Diffstat (limited to 'sl0ppij/zellij-utils/src')
-rw-r--r--sl0ppij/zellij-utils/src/data.rs5
-rw-r--r--sl0ppij/zellij-utils/src/input/layout.rs35
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/layout_test.rs76
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_added_to_args_in_template.snap3
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_override_args_in_template.snap3
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_a_stack_with_an_expanded_pane.snap5
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_node.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_template.snap5
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_load_swap_layouts_from_a_different_file.snap36
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_pane_template.snap12
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_tab_template.snap12
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_added_to_close_on_exit_in_template.snap3
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_overrides_close_on_exit_in_template.snap3
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__combined_tab_and_pane_template_both_with_children.snap17
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_added_to_cwd_in_template.snap3
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_override_cwd_in_template.snap3
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__env_var_expansion.snap20
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_pane_templates.snap7
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_tab_templates.snap6
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_given_to_panes_without_cwd.snap6
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor.snap3
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor_overrides_global_cwd_in_layout_file.snap6
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_prepended_to_panes_with_cwd.snap6
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_with_tab_cwd_given_to_panes_without_cwd.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_close_on_exit.snap2
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_start_suspended.snap2
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_default_tab_template.snap20
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_branched_pane_templates.snap11
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_pane_templates.snap8
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_new_tab_template.snap11
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_excluded_from_sync.snap2
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_templates.snap22
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tab_and_pane_templates.snap7
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tabs_and_floating_panes.snap8
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_is_overriden_by_its_consumers_bare_cwd.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_overriden_by_its_consumers_command_cwd.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_remains_when_its_consumer_command_does_not_have_a_cwd.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_is_overriden_by_its_consumers_cwd.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_receives_its_consumers_bare_cwd.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_cwd_overriden_by_its_consumers_bare_cwd.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_with_cwd.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_without_cwd.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_edit.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_command_propagated_to_its_consumer_edit.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_given_to_panes_without_cwd.snap4
-rw-r--r--sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_prepended_to_panes_with_cwd.snap4
-rw-r--r--sl0ppij/zellij-utils/src/ipc/protobuf_conversion.rs2
-rw-r--r--sl0ppij/zellij-utils/src/ipc/tests/roundtrip_tests.rs1
-rw-r--r--sl0ppij/zellij-utils/src/kdl/kdl_layout_parser.rs8
-rw-r--r--sl0ppij/zellij-utils/src/plugin_api/action.rs5
-rw-r--r--sl0ppij/zellij-utils/src/session_serialization.rs82
52 files changed, 525 insertions, 1 deletions
diff --git a/sl0ppij/zellij-utils/src/data.rs b/sl0ppij/zellij-utils/src/data.rs
index fa18a36..14444b2 100644
--- a/sl0ppij/zellij-utils/src/data.rs
+++ b/sl0ppij/zellij-utils/src/data.rs
@@ -2462,6 +2462,11 @@ pub struct PaneListEntry {
pub pane_command: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pane_cwd: Option<String>,
+ /// Opaque agent-facing hint for what this pane is for, from the layout's
+ /// `purpose=` or OSC 5577. Lives here rather than on `PaneInfo` because
+ /// `PaneInfo` crosses the plugin protobuf API, which we cannot regenerate.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub purpose: Option<String>,
}
pub type ListPanesResponse = Vec<PaneListEntry>;
diff --git a/sl0ppij/zellij-utils/src/input/layout.rs b/sl0ppij/zellij-utils/src/input/layout.rs
index 7906338..26b57aa 100644
--- a/sl0ppij/zellij-utils/src/input/layout.rs
+++ b/sl0ppij/zellij-utils/src/input/layout.rs
@@ -85,6 +85,35 @@ pub fn sanitize_status_bar_text(raw: &str) -> String {
.to_owned()
}
+/// Longest pane purpose we accept. A purpose is a vocabulary token, not prose.
+const MAX_PANE_PURPOSE: usize = 64;
+
+/// Normalise a pane `purpose` (see `sl0p/workspace-hints-proposal.md`).
+///
+/// Zellij deliberately does not know what any purpose MEANS -- the consuming
+/// agent owns the whole vocabulary. All that is enforced here is that the value
+/// is a safe, bounded token, because it arrives from two untrusted-ish places: a
+/// layout file shipped in a repository, and an OSC sequence any program in the
+/// pane can emit.
+///
+/// Restricted to `[A-Za-z0-9_.:/-]` rather than merely stripping control
+/// characters, because unlike status bar text a purpose is never rendered -- it
+/// is matched against and pasted into consumers' shell/JSON pipelines, where
+/// whitespace, quotes and `;` are what cause trouble. Returns None for anything
+/// that sanitises down to nothing, so "absent" and "empty" cannot diverge.
+pub fn sanitize_pane_purpose(raw: &str) -> Option<String> {
+ let cleaned: String = raw
+ .chars()
+ .filter(|c| c.is_ascii_alphanumeric() || matches!(c, '_' | '-' | '.' | ':' | '/'))
+ .take(MAX_PANE_PURPOSE)
+ .collect();
+ if cleaned.is_empty() {
+ None
+ } else {
+ Some(cleaned)
+ }
+}
+
/// A clickable button in a pane's status bar (OSC 5577).
#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
pub struct StatusBarButton {
@@ -1096,6 +1125,8 @@ pub struct FloatingPaneLayout {
pub logical_position: Option<usize>,
pub default_fg: Option<String>,
pub default_bg: Option<String>,
+ /// See `TiledPaneLayout::purpose`.
+ pub purpose: Option<String>,
}
impl FloatingPaneLayout {
@@ -1115,6 +1146,7 @@ impl FloatingPaneLayout {
logical_position: None,
default_fg: None,
default_bg: None,
+ purpose: None,
}
}
pub fn add_cwd_to_layout(&mut self, cwd: &PathBuf) {
@@ -1166,6 +1198,9 @@ pub struct TiledPaneLayout {
pub status_bar: Option<String>,
/// Status bar buttons, in the same wire format the escape sequence uses.
pub status_bar_buttons: Option<String>,
+ /// Opaque agent-facing hint for what this pane is FOR. Zellij never
+ /// interprets it; see `sl0p/workspace-hints-proposal.md`.
+ pub purpose: Option<String>,
/// How panes inserted at this node's `children` placeholder are arranged.
/// `None` keeps the historical behaviour: flat siblings.
///
diff --git a/sl0ppij/zellij-utils/src/input/unit/layout_test.rs b/sl0ppij/zellij-utils/src/input/unit/layout_test.rs
index c48c17e..4a6eb85 100644
--- a/sl0ppij/zellij-utils/src/input/unit/layout_test.rs
+++ b/sl0ppij/zellij-utils/src/input/unit/layout_test.rs
@@ -2940,3 +2940,79 @@ fn sl0p_status_bar_button_style_changes_rendering_and_spans_together() {
}
}
}
+
+#[test]
+fn sl0p_pane_purpose_is_sanitised_to_a_bounded_token() {
+ use crate::input::layout::sanitize_pane_purpose;
+ // Kept: the vocabulary consumers actually use.
+ assert_eq!(
+ sanitize_pane_purpose("dev-server"),
+ Some("dev-server".to_string())
+ );
+ assert_eq!(
+ sanitize_pane_purpose("pi:agent/scratch_1.v2"),
+ Some("pi:agent/scratch_1.v2".to_string())
+ );
+ // A purpose arrives from a layout file in someone else's repo, or from any
+ // program in the pane via OSC. It is pasted into shell and JSON pipelines, so
+ // quoting, whitespace, separators and control characters must not survive.
+ assert_eq!(
+ sanitize_pane_purpose("rm -rf /; echo \"pwned\"\n"),
+ Some("rm-rf/echopwned".to_string())
+ );
+ assert_eq!(
+ sanitize_pane_purpose("$(id)`id`"),
+ Some("idid".to_string()),
+ "shell metacharacters are dropped, the identifier bytes are not"
+ );
+ // Absent and empty must not be able to diverge.
+ assert_eq!(sanitize_pane_purpose(""), None);
+ assert_eq!(sanitize_pane_purpose(" "), None);
+ assert_eq!(sanitize_pane_purpose("!!!"), None);
+ // Bounded.
+ assert_eq!(sanitize_pane_purpose(&"a".repeat(200)).unwrap().len(), 64);
+}
+
+#[test]
+fn sl0p_pane_purpose_parses_from_kdl_for_tiled_and_floating_panes() {
+ let kdl = r#"
+ layout {
+ tab name="work" {
+ pane name="server" purpose="dev-server"
+ pane name="plain"
+ floating_panes {
+ pane name="notes" purpose="human:notes"
+ }
+ }
+ }
+ "#;
+ let layout = Layout::from_kdl(kdl, Some("w.kdl".into()), None, None)
+ .expect("a layout with purposes should parse");
+ let (_, tiled, floating) = layout.tabs().into_iter().next().expect("one tab");
+ let purposes: Vec<Option<String>> = tiled.children.iter().map(|c| c.purpose.clone()).collect();
+ assert_eq!(
+ purposes,
+ vec![Some("dev-server".to_string()), None],
+ "declared purposes land on the right panes, and absence stays absent"
+ );
+ assert_eq!(
+ floating.iter().map(|f| f.purpose.clone()).collect::<Vec<_>>(),
+ vec![Some("human:notes".to_string())],
+ "floating panes carry a purpose too"
+ );
+}
+
+#[test]
+fn sl0p_unknown_pane_properties_are_still_rejected() {
+ // Adding `purpose` must not turn the pane property allowlist into "accept
+ // anything" -- a typo in a workspace file should still be a loud error.
+ let kdl = r#"
+ layout {
+ pane name="server" porpoise="dev-server"
+ }
+ "#;
+ assert!(
+ Layout::from_kdl(kdl, Some("w.kdl".into()), None, None).is_err(),
+ "an unknown pane property should be a parse error"
+ );
+}
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_added_to_args_in_template.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_added_to_args_in_template.snap
index 5ffcf17..1fb2ceb 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_added_to_args_in_template.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_added_to_args_in_template.snap
@@ -43,6 +43,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -79,6 +80,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -97,6 +99,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_override_args_in_template.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_override_args_in_template.snap
index 92c90a5..3b0b3c6 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_override_args_in_template.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__args_override_args_in_template.snap
@@ -46,6 +46,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -82,6 +83,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -100,6 +102,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_a_stack_with_an_expanded_pane.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_a_stack_with_an_expanded_pane.snap
index 1b11ca7..b85f99f 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_a_stack_with_an_expanded_pane.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_a_stack_with_an_expanded_pane.snap
@@ -35,6 +35,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -56,6 +57,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -77,6 +79,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -95,6 +98,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -113,6 +117,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_node.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_node.snap
index 15ad6e8..5f605d7 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_node.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_node.snap
@@ -35,6 +35,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -56,6 +57,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -74,6 +76,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -92,6 +95,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_template.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_template.snap
index 9077d5b..a99eb02 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_template.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_define_stacked_children_for_pane_template.snap
@@ -39,6 +39,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -60,6 +61,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -78,6 +80,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -96,6 +99,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -114,6 +118,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_load_swap_layouts_from_a_different_file.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_load_swap_layouts_from_a_different_file.snap
index 9fedd5e..a3151c9 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_load_swap_layouts_from_a_different_file.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__can_load_swap_layouts_from_a_different_file.snap
@@ -31,6 +31,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -49,6 +50,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -106,6 +108,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -135,6 +138,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -158,6 +162,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -176,6 +181,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -194,6 +200,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -238,6 +245,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -256,6 +264,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
MaxPanes(
@@ -306,6 +315,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -337,6 +347,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -362,6 +373,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -383,6 +395,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -404,6 +417,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -425,6 +439,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -443,6 +458,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -461,6 +477,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -479,6 +496,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -523,6 +541,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -541,6 +560,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
MaxPanes(
@@ -591,6 +611,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -622,6 +643,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -647,6 +669,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -668,6 +691,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -689,6 +713,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -710,6 +735,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -728,6 +754,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -753,6 +780,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -774,6 +802,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -795,6 +824,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -816,6 +846,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -834,6 +865,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -852,6 +884,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -870,6 +903,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -914,6 +948,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -932,6 +967,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
},
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_pane_template.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_pane_template.snap
index 91f605a..2296484 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_pane_template.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_pane_template.snap
@@ -41,6 +41,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -66,6 +67,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -87,6 +89,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -105,6 +108,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -123,6 +127,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -144,6 +149,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -162,6 +168,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -191,6 +198,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -211,6 +219,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -232,6 +241,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -250,6 +260,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -268,6 +279,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_tab_template.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_tab_template.snap
index e48b7d0..64cf4b5 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_tab_template.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__children_not_as_first_child_of_tab_template.snap
@@ -36,6 +36,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -61,6 +62,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -82,6 +84,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -100,6 +103,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -118,6 +122,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -139,6 +144,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -157,6 +163,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -190,6 +197,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -210,6 +218,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -231,6 +240,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -249,6 +259,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -276,6 +287,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_added_to_close_on_exit_in_template.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_added_to_close_on_exit_in_template.snap
index 6e29735..b866260 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_added_to_close_on_exit_in_template.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_added_to_close_on_exit_in_template.snap
@@ -43,6 +43,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -76,6 +77,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -94,6 +96,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_overrides_close_on_exit_in_template.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_overrides_close_on_exit_in_template.snap
index 2b4ed08..c89b99d 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_overrides_close_on_exit_in_template.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__close_on_exit_overrides_close_on_exit_in_template.snap
@@ -43,6 +43,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -76,6 +77,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -94,6 +96,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__combined_tab_and_pane_template_both_with_children.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__combined_tab_and_pane_template_both_with_children.snap
index f9d8f07..371b2d8 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__combined_tab_and_pane_template_both_with_children.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__combined_tab_and_pane_template_both_with_children.snap
@@ -36,6 +36,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -63,6 +64,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -81,6 +83,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -102,6 +105,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -120,6 +124,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -145,6 +150,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -166,6 +172,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -184,6 +191,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -202,6 +210,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -235,6 +244,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -262,6 +272,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -280,6 +291,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -301,6 +313,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -319,6 +332,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -340,6 +354,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -358,6 +373,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -385,6 +401,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_added_to_cwd_in_template.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_added_to_cwd_in_template.snap
index 5c1e41e..c1c0ed7 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_added_to_cwd_in_template.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_added_to_cwd_in_template.snap
@@ -43,6 +43,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -78,6 +79,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -96,6 +98,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_override_cwd_in_template.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_override_cwd_in_template.snap
index 1aaaedd..b2f4c65 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_override_cwd_in_template.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__cwd_override_cwd_in_template.snap
@@ -45,6 +45,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -80,6 +81,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -98,6 +100,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__env_var_expansion.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__env_var_expansion.snap
index c7fc13e..37defc0 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__env_var_expansion.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__env_var_expansion.snap
@@ -34,6 +34,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -59,6 +60,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -84,6 +86,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -109,6 +112,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -144,6 +148,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -173,6 +178,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -202,6 +208,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -237,6 +244,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -266,6 +274,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -288,6 +297,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -323,6 +333,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -348,6 +359,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -373,6 +385,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -398,6 +411,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -433,6 +447,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -462,6 +477,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -491,6 +507,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -526,6 +543,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -555,6 +573,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -577,6 +596,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd.snap
index c79bbe9..009d9e7 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd.snap
@@ -34,6 +34,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -69,6 +70,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -91,6 +93,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -118,6 +121,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_pane_templates.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_pane_templates.snap
index e7c9816..58d997a 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_pane_templates.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_pane_templates.snap
@@ -38,6 +38,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -73,6 +74,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -102,6 +104,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -124,6 +127,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -146,6 +150,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -168,6 +173,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -195,6 +201,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_tab_templates.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_tab_templates.snap
index 7427434..d44ed33 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_tab_templates.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_and_tab_cwd_prepended_to_panes_with_and_without_cwd_in_tab_templates.snap
@@ -34,6 +34,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -69,6 +70,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -98,6 +100,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -120,6 +123,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -142,6 +146,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -169,6 +174,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_given_to_panes_without_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_given_to_panes_without_cwd.snap
index 5d4168c..a6b80fe 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_given_to_panes_without_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_given_to_panes_without_cwd.snap
@@ -34,6 +34,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -69,6 +70,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -91,6 +93,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -126,6 +129,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -161,6 +165,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -183,6 +188,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor.snap
index 0bdcafe..c07bc43 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor.snap
@@ -35,6 +35,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -70,6 +71,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -92,6 +94,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor_overrides_global_cwd_in_layout_file.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor_overrides_global_cwd_in_layout_file.snap
index 9c1e746..ce2e842 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor_overrides_global_cwd_in_layout_file.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_passed_from_layout_constructor_overrides_global_cwd_in_layout_file.snap
@@ -34,6 +34,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -69,6 +70,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -91,6 +93,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -126,6 +129,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -161,6 +165,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -183,6 +188,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_prepended_to_panes_with_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_prepended_to_panes_with_cwd.snap
index 90afd3d..e08fd15 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_prepended_to_panes_with_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_prepended_to_panes_with_cwd.snap
@@ -34,6 +34,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -69,6 +70,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -91,6 +93,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -126,6 +129,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -161,6 +165,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -183,6 +188,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_with_tab_cwd_given_to_panes_without_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_with_tab_cwd_given_to_panes_without_cwd.snap
index 41795b1..c86a892 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_with_tab_cwd_given_to_panes_without_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__global_cwd_with_tab_cwd_given_to_panes_without_cwd.snap
@@ -34,6 +34,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -69,6 +70,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -91,6 +93,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -118,6 +121,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_close_on_exit.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_close_on_exit.snap
index eb1150d..df40b20 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_close_on_exit.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_close_on_exit.snap
@@ -43,6 +43,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -61,6 +62,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_start_suspended.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_start_suspended.snap
index 05e71ef..6ea28da 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_start_suspended.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_command_panes_and_start_suspended.snap
@@ -43,6 +43,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -61,6 +62,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_default_tab_template.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_default_tab_template.snap
index 6759e5f..9e67a11 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_default_tab_template.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_default_tab_template.snap
@@ -32,6 +32,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -57,6 +58,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -78,6 +80,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -96,6 +99,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -117,6 +121,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -135,6 +140,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -166,6 +172,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -191,6 +198,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -212,6 +220,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -230,6 +239,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -251,6 +261,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -269,6 +280,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -298,6 +310,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -319,6 +332,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -340,6 +354,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -358,6 +373,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -389,6 +405,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -410,6 +427,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -431,6 +449,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -449,6 +468,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_branched_pane_templates.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_branched_pane_templates.snap
index be11411..af953c7 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_branched_pane_templates.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_branched_pane_templates.snap
@@ -35,6 +35,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -56,6 +57,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -81,6 +83,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -102,6 +105,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -120,6 +124,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -145,6 +150,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -166,6 +172,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -187,6 +194,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -205,6 +213,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -223,6 +232,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -241,6 +251,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_pane_templates.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_pane_templates.snap
index e6b561e..c69542f 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_pane_templates.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_nested_pane_templates.snap
@@ -35,6 +35,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -56,6 +57,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -81,6 +83,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -102,6 +105,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -120,6 +124,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -141,6 +146,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -159,6 +165,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -177,6 +184,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_new_tab_template.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_new_tab_template.snap
index 2af0bc1..c70b9b6 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_new_tab_template.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_new_tab_template.snap
@@ -32,6 +32,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -53,6 +54,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -71,6 +73,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -102,6 +105,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -123,6 +127,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -141,6 +146,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -166,6 +172,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -201,6 +208,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -222,6 +230,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -240,6 +249,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -258,6 +268,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_excluded_from_sync.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_excluded_from_sync.snap
index 15b9702..913e4fa 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_excluded_from_sync.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_excluded_from_sync.snap
@@ -33,6 +33,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -51,6 +52,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_templates.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_templates.snap
index bafe8dd..c7b8e75 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_templates.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_pane_templates.snap
@@ -35,6 +35,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -60,6 +61,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -78,6 +80,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -99,6 +102,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -117,6 +121,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -142,6 +147,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -167,6 +173,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -188,6 +195,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -206,6 +214,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -227,6 +236,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -245,6 +255,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -270,6 +281,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -295,6 +307,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -316,6 +329,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -334,6 +348,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -355,6 +370,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -373,6 +389,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -398,6 +415,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -419,6 +437,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -440,6 +459,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -458,6 +478,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -476,6 +497,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tab_and_pane_templates.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tab_and_pane_templates.snap
index f37702e..3861767 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tab_and_pane_templates.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tab_and_pane_templates.snap
@@ -34,6 +34,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -71,6 +72,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -89,6 +91,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -110,6 +113,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -128,6 +132,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -146,6 +151,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -173,6 +179,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tabs_and_floating_panes.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tabs_and_floating_panes.snap
index 9e8c441..410586a 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tabs_and_floating_panes.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__layout_with_tabs_and_floating_panes.snap
@@ -30,6 +30,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -48,6 +49,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[
@@ -66,6 +68,7 @@ Layout {
logical_position: None,
default_fg: None,
default_bg: None,
+ purpose: None,
},
],
),
@@ -94,6 +97,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -112,6 +116,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[
@@ -130,6 +135,7 @@ Layout {
logical_position: None,
default_fg: None,
default_bg: None,
+ purpose: None,
},
FloatingPaneLayout {
name: None,
@@ -146,6 +152,7 @@ Layout {
logical_position: None,
default_fg: None,
default_bg: None,
+ purpose: None,
},
],
),
@@ -172,6 +179,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_is_overriden_by_its_consumers_bare_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_is_overriden_by_its_consumers_bare_cwd.snap
index d53bea4..4c37b1d 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_is_overriden_by_its_consumers_bare_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_is_overriden_by_its_consumers_bare_cwd.snap
@@ -44,6 +44,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -66,6 +67,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -111,6 +113,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -133,6 +136,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_overriden_by_its_consumers_command_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_overriden_by_its_consumers_command_cwd.snap
index eeaa402..5c1c48a 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_overriden_by_its_consumers_command_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_overriden_by_its_consumers_command_cwd.snap
@@ -44,6 +44,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -66,6 +67,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -111,6 +113,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -133,6 +136,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_remains_when_its_consumer_command_does_not_have_a_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_remains_when_its_consumer_command_does_not_have_a_cwd.snap
index 1fabddc..b6f844f 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_remains_when_its_consumer_command_does_not_have_a_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_with_cwd_remains_when_its_consumer_command_does_not_have_a_cwd.snap
@@ -44,6 +44,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -66,6 +67,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -111,6 +113,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -133,6 +136,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_is_overriden_by_its_consumers_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_is_overriden_by_its_consumers_cwd.snap
index 82e52f5..253ef6b 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_is_overriden_by_its_consumers_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_is_overriden_by_its_consumers_cwd.snap
@@ -44,6 +44,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -66,6 +67,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -111,6 +113,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -133,6 +136,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_receives_its_consumers_bare_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_receives_its_consumers_bare_cwd.snap
index d319e47..f649d46 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_receives_its_consumers_bare_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_command_without_cwd_receives_its_consumers_bare_cwd.snap
@@ -44,6 +44,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -66,6 +67,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -111,6 +113,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -133,6 +136,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_cwd_overriden_by_its_consumers_bare_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_cwd_overriden_by_its_consumers_bare_cwd.snap
index c2866ca..04a160c 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_cwd_overriden_by_its_consumers_bare_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_cwd_overriden_by_its_consumers_bare_cwd.snap
@@ -34,6 +34,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -56,6 +57,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -91,6 +93,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -113,6 +116,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_with_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_with_cwd.snap
index f005e61..b75376b 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_with_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_with_cwd.snap
@@ -44,6 +44,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -66,6 +67,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -111,6 +113,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -133,6 +136,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_without_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_without_cwd.snap
index 19a37c7..1c0055e 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_without_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_command_without_cwd.snap
@@ -44,6 +44,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -66,6 +67,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -111,6 +113,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -133,6 +136,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_edit.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_edit.snap
index 0134ce5..cdf44fc 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_edit.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_bare_propagated_to_its_consumer_edit.snap
@@ -38,6 +38,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -60,6 +61,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -99,6 +101,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -121,6 +124,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_command_propagated_to_its_consumer_edit.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_command_propagated_to_its_consumer_edit.snap
index 7f3fb61..7280dc8 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_command_propagated_to_its_consumer_edit.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__pane_template_with_command_propagated_to_its_consumer_edit.snap
@@ -38,6 +38,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -60,6 +61,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -99,6 +101,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -121,6 +124,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_given_to_panes_without_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_given_to_panes_without_cwd.snap
index 3800b83..187a4a0 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_given_to_panes_without_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_given_to_panes_without_cwd.snap
@@ -34,6 +34,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -69,6 +70,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -91,6 +93,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -118,6 +121,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_prepended_to_panes_with_cwd.snap b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_prepended_to_panes_with_cwd.snap
index ab914f9..61f25fb 100644
--- a/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_prepended_to_panes_with_cwd.snap
+++ b/sl0ppij/zellij-utils/src/input/unit/snapshots/zellij_utils__input__layout__layout_test__tab_cwd_prepended_to_panes_with_cwd.snap
@@ -34,6 +34,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
TiledPaneLayout {
@@ -69,6 +70,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
],
@@ -91,6 +93,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
@@ -118,6 +121,7 @@ Layout {
default_bg: None,
status_bar: None,
status_bar_buttons: None,
+ purpose: None,
children_arrangement: None,
},
[],
diff --git a/sl0ppij/zellij-utils/src/ipc/protobuf_conversion.rs b/sl0ppij/zellij-utils/src/ipc/protobuf_conversion.rs
index 0c26165..f1deb3f 100644
--- a/sl0ppij/zellij-utils/src/ipc/protobuf_conversion.rs
+++ b/sl0ppij/zellij-utils/src/ipc/protobuf_conversion.rs
@@ -4502,6 +4502,7 @@ impl TryFrom<crate::client_server_contract::client_server_contract::TiledPaneLay
});
Ok(TiledPaneLayout {
+ purpose: None, // no protobuf representation
children_split_direction,
name: layout.name,
children: children?,
@@ -4543,6 +4544,7 @@ impl TryFrom<crate::client_server_contract::client_server_contract::FloatingPane
let y = layout.y.map(|y| y.try_into()).transpose()?;
Ok(crate::input::layout::FloatingPaneLayout {
+ purpose: None, // no protobuf representation
name: layout.name,
height,
width,
diff --git a/sl0ppij/zellij-utils/src/ipc/tests/roundtrip_tests.rs b/sl0ppij/zellij-utils/src/ipc/tests/roundtrip_tests.rs
index a9eadf0..5210e78 100644
--- a/sl0ppij/zellij-utils/src/ipc/tests/roundtrip_tests.rs
+++ b/sl0ppij/zellij-utils/src/ipc/tests/roundtrip_tests.rs
@@ -2127,6 +2127,7 @@ fn test_client_messages() {
..Default::default()
},
FloatingPaneLayout {
+ purpose: None,
name: Some("third floating layout".to_owned()),
height: Some(PercentOrFixed::Percent(10)),
width: Some(PercentOrFixed::Fixed(20)),
diff --git a/sl0ppij/zellij-utils/src/kdl/kdl_layout_parser.rs b/sl0ppij/zellij-utils/src/kdl/kdl_layout_parser.rs
index 643d268..9e82384 100644
--- a/sl0ppij/zellij-utils/src/kdl/kdl_layout_parser.rs
+++ b/sl0ppij/zellij-utils/src/kdl/kdl_layout_parser.rs
@@ -111,6 +111,7 @@ impl<'a> KdlLayoutParser<'a> {
|| property_name == "arrangement"
|| property_name == "status_bar"
|| property_name == "status_bar_buttons"
+ || property_name == "purpose"
}
fn is_a_valid_floating_pane_property(&self, property_name: &str) -> bool {
property_name == "borderless"
@@ -131,6 +132,7 @@ impl<'a> KdlLayoutParser<'a> {
|| property_name == "contents_file"
|| property_name == "default_fg"
|| property_name == "default_bg"
+ || property_name == "purpose"
}
fn is_a_valid_tab_property(&self, property_name: &str) -> bool {
property_name == "focus"
@@ -577,6 +579,8 @@ impl<'a> KdlLayoutParser<'a> {
// Restored from a serialised session. Sanitised again on the way in: a
// layout file on disk is no more trustworthy than the escape sequence
// that produced it, and it may have been hand-edited since.
+ let purpose = kdl_get_string_property_or_child_value_with_error!(kdl_node, "purpose")
+ .and_then(|s| crate::input::layout::sanitize_pane_purpose(s));
let status_bar = kdl_get_string_property_or_child_value_with_error!(kdl_node, "status_bar")
.map(|s| crate::input::layout::sanitize_status_bar_text(s))
.filter(|s| !s.is_empty());
@@ -643,6 +647,7 @@ impl<'a> KdlLayoutParser<'a> {
default_bg,
status_bar,
status_bar_buttons,
+ purpose,
children_arrangement,
..Default::default()
})
@@ -668,6 +673,8 @@ impl<'a> KdlLayoutParser<'a> {
.map(|s| s.to_string());
let default_bg = kdl_get_string_property_or_child_value_with_error!(kdl_node, "default_bg")
.map(|s| s.to_string());
+ let purpose = kdl_get_string_property_or_child_value_with_error!(kdl_node, "purpose")
+ .and_then(|s| crate::input::layout::sanitize_pane_purpose(s));
self.assert_no_mixed_children_and_properties(kdl_node)?;
let pane_initial_contents = contents_file.and_then(|contents_file| {
self.file_name
@@ -690,6 +697,7 @@ impl<'a> KdlLayoutParser<'a> {
pane_initial_contents,
default_fg,
default_bg,
+ purpose,
..Default::default()
})
}
diff --git a/sl0ppij/zellij-utils/src/plugin_api/action.rs b/sl0ppij/zellij-utils/src/plugin_api/action.rs
index edc9ce6..e3cd29f 100644
--- a/sl0ppij/zellij-utils/src/plugin_api/action.rs
+++ b/sl0ppij/zellij-utils/src/plugin_api/action.rs
@@ -3096,7 +3096,11 @@ impl TryFrom<ProtobufTiledPaneLayout> for TiledPaneLayout {
}
});
let run_instructions_to_ignore = vec![]; // Not serialized in protobuf
+ // Not serialized in protobuf: plugins have no use for a pane purpose and
+ // adding a proto field would force regenerating the committed assets.
+ let purpose = None;
Ok(TiledPaneLayout {
+ purpose,
children_split_direction,
name: protobuf.name,
children,
@@ -3162,6 +3166,7 @@ impl TryFrom<ProtobufFloatingPaneLayout> for FloatingPaneLayout {
let y = protobuf.y.map(|y| y.try_into()).transpose()?;
let run = protobuf.run.map(|r| r.try_into()).transpose()?;
Ok(FloatingPaneLayout {
+ purpose: None, // no protobuf representation
name: protobuf.name,
height,
width,
diff --git a/sl0ppij/zellij-utils/src/session_serialization.rs b/sl0ppij/zellij-utils/src/session_serialization.rs
index a611569..2b3f651 100644
--- a/sl0ppij/zellij-utils/src/session_serialization.rs
+++ b/sl0ppij/zellij-utils/src/session_serialization.rs
@@ -40,6 +40,8 @@ pub struct PaneLayoutManifest {
pub default_bg: Option<String>,
pub status_bar: Option<String>,
pub status_bar_buttons: Option<String>,
+ /// Opaque agent-facing hint; see `TiledPaneLayout::purpose`.
+ pub purpose: Option<String>,
}
pub fn serialize_session_layout(
@@ -201,6 +203,11 @@ fn serialize_tiled_pane(
.entries_mut()
.push(KdlEntry::new_prop("status_bar", status_bar.to_owned()));
}
+ if let Some(ref purpose) = layout.purpose {
+ tiled_pane_node
+ .entries_mut()
+ .push(KdlEntry::new_prop("purpose", purpose.to_owned()));
+ }
if let Some(ref buttons) = layout.status_bar_buttons {
tiled_pane_node
.entries_mut()
@@ -693,6 +700,11 @@ fn serialize_floating_pane(
.entries_mut()
.push(KdlEntry::new_prop("default_bg", bg.to_owned()));
}
+ if let Some(ref purpose) = layout.purpose {
+ floating_pane_node
+ .entries_mut()
+ .push(KdlEntry::new_prop("purpose", purpose.to_owned()));
+ }
serialize_start_suspended(&command, &mut floating_pane_node_children);
serialize_floating_layout_attributes(&layout, &mut floating_pane_node_children);
serialize_args(args, &mut floating_pane_node_children);
@@ -755,6 +767,7 @@ fn tiled_pane_layout_from_manifest(
default_bg,
status_bar,
status_bar_buttons,
+ purpose,
) = manifest
.map(|g| {
let mut run = g.run.clone();
@@ -776,9 +789,12 @@ fn tiled_pane_layout_from_manifest(
g.default_bg.clone(),
g.status_bar.clone(),
g.status_bar_buttons.clone(),
+ g.purpose.clone(),
)
})
- .unwrap_or((None, None, false, None, None, None, None, None, None, None));
+ .unwrap_or((
+ None, None, false, None, None, None, None, None, None, None, None,
+ ));
TiledPaneLayout {
split_size,
run,
@@ -791,6 +807,7 @@ fn tiled_pane_layout_from_manifest(
default_bg,
status_bar,
status_bar_buttons,
+ purpose,
..Default::default()
}
}
@@ -897,6 +914,7 @@ fn get_floating_panes_layout_from_panegeoms(
focus: Some(m.is_focused),
already_running: false,
pane_initial_contents: m.pane_contents.clone(),
+ purpose: m.purpose.clone(),
logical_position: None,
borderless: Some(m.is_borderless),
default_fg: m.default_fg.clone(),
@@ -1246,6 +1264,68 @@ mod tests {
);
}
+ #[test]
+ fn sl0p_pane_purpose_survives_serialisation_and_parses_back() {
+ // A workspace that forgets what its panes were for after a restart is not
+ // a workspace, so purpose has to round-trip like status_bar does.
+ let panes: Vec<PaneLayoutManifest> = PANEGEOMS_JSON[0]
+ .iter()
+ .map(|pg| parse_panegeom_from_json(pg))
+ .enumerate()
+ .map(|(i, geom)| PaneLayoutManifest {
+ geom,
+ purpose: if i == 1 {
+ Some(String::from("dev-server"))
+ } else {
+ None
+ },
+ ..Default::default()
+ })
+ .collect();
+ let global = GlobalLayoutManifest {
+ tabs: vec![(
+ String::from("Tab #1"),
+ TabLayoutManifest {
+ tiled_panes: panes,
+ ..Default::default()
+ },
+ )],
+ ..Default::default()
+ };
+ let (kdl, _) = serialize_session_layout(global).expect("serialisation failed");
+ assert!(
+ kdl.contains("purpose=\"dev-server\""),
+ "purpose should be written into the serialised layout, got:\n{}",
+ kdl
+ );
+
+ let layout =
+ crate::input::layout::Layout::from_kdl(&kdl, Some("session.kdl".into()), None, None)
+ .expect("the serialised layout should parse");
+ let found = layout
+ .tabs
+ .iter()
+ .flat_map(|(_name, tiled, _floating)| collect_purposes(tiled))
+ .collect::<Vec<String>>();
+ assert_eq!(
+ found,
+ vec![String::from("dev-server")],
+ "the parsed layout should carry the purpose back"
+ );
+ }
+
+ #[cfg(test)]
+ fn collect_purposes(layout: &crate::input::layout::TiledPaneLayout) -> Vec<String> {
+ let mut found = vec![];
+ if let Some(purpose) = &layout.purpose {
+ found.push(purpose.clone());
+ }
+ for child in &layout.children {
+ found.extend(collect_purposes(child));
+ }
+ found
+ }
+
#[cfg(test)]
fn collect_status_bars(layout: &crate::input::layout::TiledPaneLayout) -> Vec<String> {
let mut found = vec![];