aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src
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
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')
-rw-r--r--zellij-utils/src/cli.rs14
-rw-r--r--zellij-utils/src/client_server_contract/common_types.proto8
-rw-r--r--zellij-utils/src/data.rs6
-rw-r--r--zellij-utils/src/input/actions.rs14
-rw-r--r--zellij-utils/src/ipc/protobuf_conversion.rs47
-rw-r--r--zellij-utils/src/kdl/mod.rs30
-rw-r--r--zellij-utils/src/plugin_api/action.proto12
-rw-r--r--zellij-utils/src/plugin_api/action.rs37
-rw-r--r--zellij-utils/src/plugin_api/plugin_command.proto26
-rw-r--r--zellij-utils/src/plugin_api/plugin_command.rs62
10 files changed, 231 insertions, 25 deletions
diff --git a/zellij-utils/src/cli.rs b/zellij-utils/src/cli.rs
index 7b64e147..f8bf79ac 100644
--- a/zellij-utils/src/cli.rs
+++ b/zellij-utils/src/cli.rs
@@ -905,6 +905,20 @@ pub enum CliAction {
TogglePaneEmbedOrFloating,
/// Toggle the visibility of all floating panes in the current Tab, open one if none exist
ToggleFloatingPanes,
+ /// Show all floating panes in the specified tab (or active tab if tab_id is not provided).
+ ///
+ /// Returns exit code 0 if state was changed, 2 if already visible, 1 if tab not found.
+ ShowFloatingPanes {
+ #[clap(short, long, value_parser)]
+ tab_id: Option<usize>,
+ },
+ /// Hide all floating panes in the specified tab (or active tab if tab_id is not provided).
+ ///
+ /// Returns exit code 0 if state was changed, 2 if already hidden, 1 if tab not found.
+ HideFloatingPanes {
+ #[clap(short, long, value_parser)]
+ tab_id: Option<usize>,
+ },
/// Close the focused pane.
ClosePane,
/// Renames the focused pane
diff --git a/zellij-utils/src/client_server_contract/common_types.proto b/zellij-utils/src/client_server_contract/common_types.proto
index 3a9e854b..46f1b812 100644
--- a/zellij-utils/src/client_server_contract/common_types.proto
+++ b/zellij-utils/src/client_server_contract/common_types.proto
@@ -241,6 +241,8 @@ message Action {
RenameTabByIdAction rename_tab_by_id = 103;
ListTabsAction list_tabs = 104;
CurrentTabInfoAction current_tab_info = 105;
+ ShowFloatingPanesAction show_floating_panes = 106;
+ HideFloatingPanesAction hide_floating_panes = 107;
}
}
@@ -269,6 +271,12 @@ message TogglePaneFramesAction {}
message ToggleActiveSyncTabAction {}
message TogglePaneEmbedOrFloatingAction {}
message ToggleFloatingPanesAction {}
+message ShowFloatingPanesAction {
+ optional uint32 tab_id = 1;
+}
+message HideFloatingPanesAction {
+ optional uint32 tab_id = 1;
+}
message CloseFocusAction {}
message UndoRenamePaneAction {}
message NoOpAction {}
diff --git a/zellij-utils/src/data.rs b/zellij-utils/src/data.rs
index 675cbcfe..74dfdfe7 100644
--- a/zellij-utils/src/data.rs
+++ b/zellij-utils/src/data.rs
@@ -3461,6 +3461,12 @@ pub enum PluginCommand {
OpenCommandPaneInPlaceOfPaneId(PaneId, CommandToRun, bool, Context), // bool = close_replaced_pane
OpenTerminalPaneInPlaceOfPaneId(PaneId, FileToOpen, bool),
OpenEditPaneInPlaceOfPaneId(PaneId, FileToOpen, bool, Context),
+ HideFloatingPanes {
+ tab_id: Option<usize>,
+ },
+ ShowFloatingPanes {
+ tab_id: Option<usize>,
+ },
}
// Response type for plugin API methods that open a pane in a new tab
diff --git a/zellij-utils/src/input/actions.rs b/zellij-utils/src/input/actions.rs
index 025b0535..2841ea53 100644
--- a/zellij-utils/src/input/actions.rs
+++ b/zellij-utils/src/input/actions.rs
@@ -273,6 +273,14 @@ pub enum Action {
TogglePaneEmbedOrFloating,
/// Toggle the visibility of all floating panes (if any) in the current Tab
ToggleFloatingPanes,
+ /// Show all floating panes in the specified tab (or active tab if tab_id is None)
+ ShowFloatingPanes {
+ tab_id: Option<usize>,
+ },
+ /// Hide all floating panes in the specified tab (or active tab if tab_id is None)
+ HideFloatingPanes {
+ tab_id: Option<usize>,
+ },
/// Close the focus pane.
CloseFocus,
PaneNameInput {
@@ -941,6 +949,12 @@ impl Action {
CliAction::SwitchMode { input_mode } => Ok(vec![Action::SwitchToMode { input_mode }]),
CliAction::TogglePaneEmbedOrFloating => Ok(vec![Action::TogglePaneEmbedOrFloating]),
CliAction::ToggleFloatingPanes => Ok(vec![Action::ToggleFloatingPanes]),
+ CliAction::ShowFloatingPanes { tab_id } => {
+ Ok(vec![Action::ShowFloatingPanes { tab_id }])
+ },
+ CliAction::HideFloatingPanes { tab_id } => {
+ Ok(vec![Action::HideFloatingPanes { tab_id }])
+ },
CliAction::ClosePane => Ok(vec![Action::CloseFocus]),
CliAction::RenamePane { name } => Ok(vec![
Action::UndoRenamePane,
diff --git a/zellij-utils/src/ipc/protobuf_conversion.rs b/zellij-utils/src/ipc/protobuf_conversion.rs
index 8d8bd542..b6bfbf9c 100644
--- a/zellij-utils/src/ipc/protobuf_conversion.rs
+++ b/zellij-utils/src/ipc/protobuf_conversion.rs
@@ -725,19 +725,20 @@ impl From<crate::input::actions::Action>
FocusNextPaneAction, FocusPluginPaneWithIdAction, FocusPreviousPaneAction,
FocusTerminalPaneWithIdAction, GoToNextTabAction, GoToPreviousTabAction, GoToTabAction,
GoToTabByIdAction, GoToTabNameAction, HalfPageScrollDownAction, HalfPageScrollUpAction,
- KeybindPipeAction, LaunchOrFocusPluginAction, LaunchPluginAction, ListClientsAction,
- ListPanesAction, ListTabsAction, MouseEventAction, MoveFocusAction,
- MoveFocusOrTabAction, MovePaneAction, MovePaneBackwardsAction, MoveTabAction,
- NewBlockingPaneAction, NewFloatingPaneAction, NewFloatingPluginPaneAction,
- NewInPlacePaneAction, NewInPlacePluginPaneAction, NewPaneAction, NewStackedPaneAction,
- NewTabAction, NewTiledPaneAction, NewTiledPluginPaneAction, NextSwapLayoutAction,
- NoOpAction, OverrideLayoutAction, PageScrollDownAction, PageScrollUpAction,
- PaneIdWithPlugin, PaneNameInputAction, PreviousSwapLayoutAction, QueryTabNamesAction,
- QuitAction, RenamePluginPaneAction, RenameSessionAction, RenameTabAction,
- RenameTabByIdAction, RenameTerminalPaneAction, ResizeAction, RunAction,
- SaveSessionAction, ScrollDownAction, ScrollDownAtAction, ScrollToBottomAction,
- ScrollToTopAction, ScrollUpAction, ScrollUpAtAction, SearchAction, SearchInputAction,
- SearchToggleOptionAction, SetPaneBorderlessAction, SkipConfirmAction, StackPanesAction,
+ HideFloatingPanesAction, KeybindPipeAction, LaunchOrFocusPluginAction,
+ LaunchPluginAction, ListClientsAction, ListPanesAction, ListTabsAction,
+ MouseEventAction, MoveFocusAction, MoveFocusOrTabAction, MovePaneAction,
+ MovePaneBackwardsAction, MoveTabAction, NewBlockingPaneAction, NewFloatingPaneAction,
+ NewFloatingPluginPaneAction, NewInPlacePaneAction, NewInPlacePluginPaneAction,
+ NewPaneAction, NewStackedPaneAction, NewTabAction, NewTiledPaneAction,
+ NewTiledPluginPaneAction, NextSwapLayoutAction, NoOpAction, OverrideLayoutAction,
+ PageScrollDownAction, PageScrollUpAction, PaneIdWithPlugin, PaneNameInputAction,
+ PreviousSwapLayoutAction, QueryTabNamesAction, QuitAction, RenamePluginPaneAction,
+ RenameSessionAction, RenameTabAction, RenameTabByIdAction, RenameTerminalPaneAction,
+ ResizeAction, RunAction, SaveSessionAction, ScrollDownAction, ScrollDownAtAction,
+ ScrollToBottomAction, ScrollToTopAction, ScrollUpAction, ScrollUpAtAction,
+ SearchAction, SearchInputAction, SearchToggleOptionAction, SetPaneBorderlessAction,
+ ShowFloatingPanesAction, SkipConfirmAction, StackPanesAction,
StartOrReloadPluginAction, SwitchFocusAction, SwitchModeForAllClientsAction,
SwitchSessionAction, SwitchToModeAction, TabNameInputAction, ToggleActiveSyncTabAction,
ToggleFloatingPanesAction, ToggleFocusFullscreenAction, ToggleGroupMarkingAction,
@@ -971,6 +972,16 @@ impl From<crate::input::actions::Action>
crate::input::actions::Action::ToggleFloatingPanes => {
ActionType::ToggleFloatingPanes(ToggleFloatingPanesAction {})
},
+ crate::input::actions::Action::ShowFloatingPanes { tab_id } => {
+ ActionType::ShowFloatingPanes(ShowFloatingPanesAction {
+ tab_id: tab_id.map(|id| id as u32),
+ })
+ },
+ crate::input::actions::Action::HideFloatingPanes { tab_id } => {
+ ActionType::HideFloatingPanes(HideFloatingPanesAction {
+ tab_id: tab_id.map(|id| id as u32),
+ })
+ },
crate::input::actions::Action::CloseFocus => {
ActionType::CloseFocus(CloseFocusAction {})
},
@@ -1621,6 +1632,16 @@ impl TryFrom<crate::client_server_contract::client_server_contract::Action>
ActionType::ToggleFloatingPanes(_) => {
Ok(crate::input::actions::Action::ToggleFloatingPanes)
},
+ ActionType::ShowFloatingPanes(a) => {
+ Ok(crate::input::actions::Action::ShowFloatingPanes {
+ tab_id: a.tab_id.map(|id| id as usize),
+ })
+ },
+ ActionType::HideFloatingPanes(a) => {
+ Ok(crate::input::actions::Action::HideFloatingPanes {
+ tab_id: a.tab_id.map(|id| id as usize),
+ })
+ },
ActionType::CloseFocus(_) => Ok(crate::input::actions::Action::CloseFocus),
ActionType::PaneNameInput(pane_name_action) => {
Ok(crate::input::actions::Action::PaneNameInput {
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)
diff --git a/zellij-utils/src/plugin_api/action.proto b/zellij-utils/src/plugin_api/action.proto
index 73db5c1d..e4a42668 100644
--- a/zellij-utils/src/plugin_api/action.proto
+++ b/zellij-utils/src/plugin_api/action.proto
@@ -242,6 +242,8 @@ message Action {
uint64 go_to_tab_by_id_payload = 55;
uint64 close_tab_by_id_payload = 56;
TabIdAndName rename_tab_by_id_payload = 57;
+ ShowFloatingPanesPayload show_floating_panes_payload = 58;
+ HideFloatingPanesPayload hide_floating_panes_payload = 59;
}
}
@@ -262,6 +264,14 @@ message TabIdAndName {
string name = 2;
}
+message ShowFloatingPanesPayload {
+ optional uint32 tab_id = 1;
+}
+
+message HideFloatingPanesPayload {
+ optional uint32 tab_id = 1;
+}
+
message PaneIdAndShouldFloat {
uint32 pane_id = 1;
bool should_float = 2;
@@ -469,6 +479,8 @@ enum ActionName {
GoToTabById = 95;
CloseTabById = 96;
RenameTabById = 97;
+ ShowFloatingPanes = 98;
+ HideFloatingPanes = 99;
}
message Position {
diff --git a/zellij-utils/src/plugin_api/action.rs b/zellij-utils/src/plugin_api/action.rs
index 1a8ab956..5bb58db3 100644
--- a/zellij-utils/src/plugin_api/action.rs
+++ b/zellij-utils/src/plugin_api/action.rs
@@ -16,6 +16,7 @@ pub use super::generated_api::api::{
FloatingPaneLayout as ProtobufFloatingPaneLayout,
FloatingPlacement as ProtobufFloatingPlacement,
GoToTabNamePayload,
+ HideFloatingPanesPayload,
IdAndName,
InPlaceConfig as ProtobufInPlaceConfig,
KeyModifier as ProtobufKeyModifier,
@@ -56,12 +57,14 @@ pub use super::generated_api::api::{
ScrollAtPayload,
SearchDirection as ProtobufSearchDirection,
SearchOption as ProtobufSearchOption,
+ ShowFloatingPanesPayload,
SplitDirection as ProtobufSplitDirection,
SplitSize as ProtobufSplitSize,
StackedPlacement as ProtobufStackedPlacement,
SwapFloatingLayout as ProtobufSwapFloatingLayout,
SwapTiledLayout as ProtobufSwapTiledLayout,
SwitchToModePayload,
+ TabIdAndName,
TabLayoutInfo as ProtobufTabLayoutInfo,
TiledPaneLayout as ProtobufTiledPaneLayout,
TiledPlacement as ProtobufTiledPlacement,
@@ -396,6 +399,24 @@ impl TryFrom<ProtobufAction> for Action {
None => Ok(Action::ToggleFloatingPanes),
}
},
+ Some(ProtobufActionName::ShowFloatingPanes) => match protobuf_action.optional_payload {
+ Some(OptionalPayload::ShowFloatingPanesPayload(payload)) => {
+ Ok(Action::ShowFloatingPanes {
+ tab_id: payload.tab_id.map(|id| id as usize),
+ })
+ },
+ None => Ok(Action::ShowFloatingPanes { tab_id: None }),
+ _ => Err("Wrong payload for ShowFloatingPanes"),
+ },
+ Some(ProtobufActionName::HideFloatingPanes) => match protobuf_action.optional_payload {
+ Some(OptionalPayload::HideFloatingPanesPayload(payload)) => {
+ Ok(Action::HideFloatingPanes {
+ tab_id: payload.tab_id.map(|id| id as usize),
+ })
+ },
+ None => Ok(Action::HideFloatingPanes { tab_id: None }),
+ _ => Err("Wrong payload for HideFloatingPanes"),
+ },
Some(ProtobufActionName::CloseFocus) => match protobuf_action.optional_payload {
Some(_) => Err("CloseFocus should not have a payload"),
None => Ok(Action::CloseFocus),
@@ -1306,6 +1327,22 @@ impl TryFrom<Action> for ProtobufAction {
name: ProtobufActionName::ToggleFloatingPanes as i32,
optional_payload: None,
}),
+ Action::ShowFloatingPanes { tab_id } => Ok(ProtobufAction {
+ name: ProtobufActionName::ShowFloatingPanes as i32,
+ optional_payload: Some(OptionalPayload::ShowFloatingPanesPayload(
+ ShowFloatingPanesPayload {
+ tab_id: tab_id.map(|id| id as u32),
+ },
+ )),
+ }),
+ Action::HideFloatingPanes { tab_id } => Ok(ProtobufAction {
+ name: ProtobufActionName::HideFloatingPanes as i32,
+ optional_payload: Some(OptionalPayload::HideFloatingPanesPayload(
+ HideFloatingPanesPayload {
+ tab_id: tab_id.map(|id| id as u32),
+ },
+ )),
+ }),
Action::CloseFocus => Ok(ProtobufAction {
name: ProtobufActionName::CloseFocus as i32,
optional_payload: None,
diff --git a/zellij-utils/src/plugin_api/plugin_command.proto b/zellij-utils/src/plugin_api/plugin_command.proto
index e3e1ee4b..7ba3aabe 100644
--- a/zellij-utils/src/plugin_api/plugin_command.proto
+++ b/zellij-utils/src/plugin_api/plugin_command.proto
@@ -196,6 +196,8 @@ enum CommandName {
OpenCommandPaneInPlaceOfPaneId = 201;
OpenTerminalPaneInPlaceOfPaneId = 202;
OpenEditPaneInPlaceOfPaneId = 203;
+ HideFloatingPanes = 204;
+ ShowFloatingPanes = 205;
}
message PluginCommand {
@@ -341,6 +343,8 @@ message PluginCommand {
OpenCommandPaneInPlaceOfPaneIdPayload open_command_pane_in_place_of_pane_id_payload = 152;
OpenTerminalPaneInPlaceOfPaneIdPayload open_terminal_pane_in_place_of_pane_id_payload = 153;
OpenEditPaneInPlaceOfPaneIdPayload open_edit_pane_in_place_of_pane_id_payload = 154;
+ HideFloatingPanesPayload hide_floating_panes_payload = 155;
+ ShowFloatingPanesPayload show_floating_panes_payload = 156;
}
}
@@ -1186,3 +1190,25 @@ message OpenTerminalPaneInPlaceOfPaneIdResponse {
message OpenEditPaneInPlaceOfPaneIdResponse {
optional PaneId pane_id = 1;
}
+
+message HideFloatingPanesPayload {
+ optional uint32 tab_id = 1;
+}
+
+message ShowFloatingPanesPayload {
+ optional uint32 tab_id = 1;
+}
+
+message ShowFloatingPanesResponse {
+ oneof result {
+ bool success = 1;
+ string error = 2;
+ }
+}
+
+message HideFloatingPanesResponse {
+ oneof result {
+ bool success = 1;
+ string error = 2;
+ }
+}
diff --git a/zellij-utils/src/plugin_api/plugin_command.rs b/zellij-utils/src/plugin_api/plugin_command.rs
index 632fe167..c3741591 100644
--- a/zellij-utils/src/plugin_api/plugin_command.rs
+++ b/zellij-utils/src/plugin_api/plugin_command.rs
@@ -7,9 +7,10 @@ pub use super::generated_api::api::{
break_panes_to_tab_with_index_response, delete_layout_response, dump_layout_response,
dump_session_layout_response, edit_layout_response, focus_or_create_tab_response,
get_focused_pane_info_response, get_pane_cwd_response, get_pane_pid_response,
- get_pane_running_command_response, new_tab_response, parse_layout_response,
- plugin_command::Payload, rename_layout_response, save_layout_response,
- save_session_response, BreakPanesToNewTabPayload,
+ get_pane_running_command_response, hide_floating_panes_response, new_tab_response,
+ parse_layout_response, plugin_command::Payload, rename_layout_response,
+ save_layout_response, save_session_response, show_floating_panes_response,
+ BreakPanesToNewTabPayload,
BreakPanesToNewTabResponse as ProtobufBreakPanesToNewTabResponse,
BreakPanesToTabWithIdPayload,
BreakPanesToTabWithIdResponse as ProtobufBreakPanesToTabWithIdResponse,
@@ -45,11 +46,12 @@ pub use super::generated_api::api::{
GetSessionEnvironmentVariablesPayload as ProtobufGetSessionEnvironmentVariablesPayload,
GetSessionEnvironmentVariablesResponse as ProtobufGetSessionEnvironmentVariablesResponse,
GetTabInfoPayload, GetTabInfoResponse as ProtobufGetTabInfoResponse, GoToTabWithIdPayload,
- GroupAndUngroupPanesPayload, HidePaneWithIdPayload, HighlightAndUnhighlightPanesPayload,
- HttpVerb as ProtobufHttpVerb, IdAndNewName, KeyToRebind, KeyToUnbind, KillSessionsPayload,
- ListTokensResponse, LoadNewPluginPayload, MessageToPluginPayload,
- MovePaneWithPaneIdInDirectionPayload, MovePaneWithPaneIdPayload, MovePayload,
- NewPluginArgs as ProtobufNewPluginArgs, NewTabPayload,
+ GroupAndUngroupPanesPayload, HideFloatingPanesPayload as ProtobufHideFloatingPanesPayload,
+ HideFloatingPanesResponse as ProtobufHideFloatingPanesResponse, HidePaneWithIdPayload,
+ HighlightAndUnhighlightPanesPayload, HttpVerb as ProtobufHttpVerb, IdAndNewName,
+ KeyToRebind, KeyToUnbind, KillSessionsPayload, ListTokensResponse, LoadNewPluginPayload,
+ MessageToPluginPayload, MovePaneWithPaneIdInDirectionPayload, MovePaneWithPaneIdPayload,
+ MovePayload, NewPluginArgs as ProtobufNewPluginArgs, NewTabPayload,
NewTabResponse as ProtobufNewTabResponse, NewTabsResponse as ProtobufNewTabsResponse,
NewTabsWithLayoutInfoPayload,
OpenCommandPaneBackgroundResponse as ProtobufOpenCommandPaneBackgroundResponse,
@@ -102,10 +104,12 @@ pub use super::generated_api::api::{
ScrollToBottomInPaneIdPayload, ScrollToTopInPaneIdPayload, ScrollUpInPaneIdPayload,
SetFloatingPanePinnedPayload, SetPaneBorderlessPayload,
SetSelfMouseSelectionSupportPayload, SetTimeoutPayload, ShowCursorPayload,
- ShowPaneWithIdPayload, StackPanesPayload, SubscribePayload, SwitchSessionPayload,
- SwitchTabToIdPayload, SwitchTabToPayload, TogglePaneBorderlessPayload,
- TogglePaneEmbedOrEjectForPaneIdPayload, TogglePaneIdFullscreenPayload, UnsubscribePayload,
- WebRequestPayload, WriteCharsToPaneIdPayload, WriteToPaneIdPayload,
+ ShowFloatingPanesPayload as ProtobufShowFloatingPanesPayload,
+ ShowFloatingPanesResponse as ProtobufShowFloatingPanesResponse, ShowPaneWithIdPayload,
+ StackPanesPayload, SubscribePayload, SwitchSessionPayload, SwitchTabToIdPayload,
+ SwitchTabToPayload, TogglePaneBorderlessPayload, TogglePaneEmbedOrEjectForPaneIdPayload,
+ TogglePaneIdFullscreenPayload, UnsubscribePayload, WebRequestPayload,
+ WriteCharsToPaneIdPayload, WriteToPaneIdPayload,
},
plugin_permission::PermissionType as ProtobufPermissionType,
resize::ResizeAction as ProtobufResizeAction,
@@ -2401,6 +2405,24 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand {
_ => Err("Mismatched payload for OpenEditPaneInPlaceOfPaneId"),
}
},
+ Some(CommandName::HideFloatingPanes) => match protobuf_plugin_command.payload {
+ Some(Payload::HideFloatingPanesPayload(payload)) => {
+ Ok(PluginCommand::HideFloatingPanes {
+ tab_id: payload.tab_id.map(|id| id as usize),
+ })
+ },
+ None => Ok(PluginCommand::HideFloatingPanes { tab_id: None }),
+ _ => Err("Mismatched payload for HideFloatingPanes"),
+ },
+ Some(CommandName::ShowFloatingPanes) => match protobuf_plugin_command.payload {
+ Some(Payload::ShowFloatingPanesPayload(payload)) => {
+ Ok(PluginCommand::ShowFloatingPanes {
+ tab_id: payload.tab_id.map(|id| id as usize),
+ })
+ },
+ None => Ok(PluginCommand::ShowFloatingPanes { tab_id: None }),
+ _ => Err("Mismatched payload for ShowFloatingPanes"),
+ },
None => Err("Unrecognized plugin command"),
}
}
@@ -3937,6 +3959,22 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand {
)),
})
},
+ PluginCommand::HideFloatingPanes { tab_id } => Ok(ProtobufPluginCommand {
+ name: CommandName::HideFloatingPanes as i32,
+ payload: Some(Payload::HideFloatingPanesPayload(
+ ProtobufHideFloatingPanesPayload {
+ tab_id: tab_id.map(|id| id as u32),
+ },
+ )),
+ }),
+ PluginCommand::ShowFloatingPanes { tab_id } => Ok(ProtobufPluginCommand {
+ name: CommandName::ShowFloatingPanes as i32,
+ payload: Some(Payload::ShowFloatingPanesPayload(
+ ProtobufShowFloatingPanesPayload {
+ tab_id: tab_id.map(|id| id as u32),
+ },
+ )),
+ }),
}
}
}