aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/kdl/mod.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2026-02-25 09:48:47 +0100
committerGitHub <noreply@github.com>2026-02-25 09:48:47 +0100
commit6e0dd8e51cae440c1453c983740abc6869c46029 (patch)
tree7b7a4aaef1fc5df6ad7c56e572aad50f19858f46 /zellij-utils/src/kdl/mod.rs
parentfix: respect user's cursor choice in web client even when terminal overrides ... (diff)
downloadsl0ppij-6e0dd8e51cae440c1453c983740abc6869c46029.tar.gz
sl0ppij-6e0dd8e51cae440c1453c983740abc6869c46029.tar.xz
sl0ppij-6e0dd8e51cae440c1453c983740abc6869c46029.zip
Atomic show hide floating panes (#4764)
* atomic show/hide floating panes (cli, plugin API, keybinding) * rustfmt * add pr
Diffstat (limited to 'zellij-utils/src/kdl/mod.rs')
-rw-r--r--zellij-utils/src/kdl/mod.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/zellij-utils/src/kdl/mod.rs b/zellij-utils/src/kdl/mod.rs
index 03d55417..ced75920 100644
--- a/zellij-utils/src/kdl/mod.rs
+++ b/zellij-utils/src/kdl/mod.rs
@@ -63,6 +63,8 @@ macro_rules! parse_kdl_action_arguments {
"ToggleActiveSyncTab" => Ok(Action::ToggleActiveSyncTab),
"TogglePaneEmbedOrFloating" => Ok(Action::TogglePaneEmbedOrFloating),
"ToggleFloatingPanes" => Ok(Action::ToggleFloatingPanes),
+ "ShowFloatingPanes" => Ok(Action::ShowFloatingPanes { tab_id: None }),
+ "HideFloatingPanes" => Ok(Action::HideFloatingPanes { tab_id: None }),
"CloseFocus" => Ok(Action::CloseFocus),
"UndoRenamePane" => Ok(Action::UndoRenamePane),
"NoOp" => Ok(Action::NoOp),
@@ -729,6 +731,20 @@ impl Action {
},
Action::TogglePaneEmbedOrFloating => Some(KdlNode::new("TogglePaneEmbedOrFloating")),
Action::ToggleFloatingPanes => Some(KdlNode::new("ToggleFloatingPanes")),
+ Action::ShowFloatingPanes { tab_id } => {
+ let mut node = KdlNode::new("ShowFloatingPanes");
+ if let Some(id) = tab_id {
+ node.push(KdlValue::Base10(*id as i64));
+ }
+ Some(node)
+ },
+ Action::HideFloatingPanes { tab_id } => {
+ let mut node = KdlNode::new("HideFloatingPanes");
+ if let Some(id) = tab_id {
+ node.push(KdlValue::Base10(*id as i64));
+ }
+ Some(node)
+ },
Action::CloseFocus => Some(KdlNode::new("CloseFocus")),
Action::PaneNameInput { input: bytes } => {
let mut node = KdlNode::new("PaneNameInput");
@@ -1510,6 +1526,20 @@ impl TryFrom<(&KdlNode, &Options)> for Action {
"ToggleFloatingPanes" => {
parse_kdl_action_arguments!(action_name, action_arguments, kdl_action)
},
+ "ShowFloatingPanes" => {
+ let tab_id = action_arguments
+ .first()
+ .and_then(|v| v.value().as_i64())
+ .map(|n| n as usize);
+ Ok(Action::ShowFloatingPanes { tab_id })
+ },
+ "HideFloatingPanes" => {
+ let tab_id = action_arguments
+ .first()
+ .and_then(|v| v.value().as_i64())
+ .map(|n| n as usize);
+ Ok(Action::HideFloatingPanes { tab_id })
+ },
"CloseFocus" => parse_kdl_action_arguments!(action_name, action_arguments, kdl_action),
"UndoRenamePane" => {
parse_kdl_action_arguments!(action_name, action_arguments, kdl_action)