aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/plugin_api/plugin_command.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2026-01-20 10:13:37 +0100
committerGitHub <noreply@github.com>2026-01-20 10:13:37 +0100
commit03c86d09cf301db9a62427170f956a632812d67e (patch)
tree5eee73d6201cbe2066ec258a0b7612e84e97aa6d /zellij-utils/src/plugin_api/plugin_command.rs
parentFix: allow 0% coordinate specification for floating panes (#4609) (diff)
downloadsl0ppij-03c86d09cf301db9a62427170f956a632812d67e.tar.gz
sl0ppij-03c86d09cf301db9a62427170f956a632812d67e.tar.xz
sl0ppij-03c86d09cf301db9a62427170f956a632812d67e.zip
Allow toggling pane frames for specific panes (#4615)
* initial implementation * add borderless to edit and plugin cli commands * allow changing existing pane to borderless * allow setting in layouts and keybindings * get to work through the existing plugin api commands * fix when applying (swap) layouts * fix tests * allow setting pane as bordered (borderful?) when changing its coordinates (eg. through the cli) * allow explicitly setting a pane as bordered or borderless without toggling * rustfmt * adjust snapshots * docs(changelog): add PR
Diffstat (limited to 'zellij-utils/src/plugin_api/plugin_command.rs')
-rw-r--r--zellij-utils/src/plugin_api/plugin_command.rs49
1 files changed, 46 insertions, 3 deletions
diff --git a/zellij-utils/src/plugin_api/plugin_command.rs b/zellij-utils/src/plugin_api/plugin_command.rs
index d26ab7ec..da0f4599 100644
--- a/zellij-utils/src/plugin_api/plugin_command.rs
+++ b/zellij-utils/src/plugin_api/plugin_command.rs
@@ -46,9 +46,10 @@ pub use super::generated_api::api::{
RunActionPayload, RunCommandPayload, SaveLayoutPayload,
SaveLayoutResponse as ProtobufSaveLayoutResponse, ScrollDownInPaneIdPayload,
ScrollToBottomInPaneIdPayload, ScrollToTopInPaneIdPayload, ScrollUpInPaneIdPayload,
- SetFloatingPanePinnedPayload, SetSelfMouseSelectionSupportPayload, SetTimeoutPayload,
- ShowCursorPayload, ShowPaneWithIdPayload, StackPanesPayload, SubscribePayload,
- SwitchSessionPayload, SwitchTabToPayload, TogglePaneEmbedOrEjectForPaneIdPayload,
+ SetFloatingPanePinnedPayload, SetPaneBorderlessPayload,
+ SetSelfMouseSelectionSupportPayload, SetTimeoutPayload, ShowCursorPayload,
+ ShowPaneWithIdPayload, StackPanesPayload, SubscribePayload, SwitchSessionPayload,
+ SwitchTabToPayload, TogglePaneBorderlessPayload, TogglePaneEmbedOrEjectForPaneIdPayload,
TogglePaneIdFullscreenPayload, UnsubscribePayload, WebRequestPayload,
WriteCharsToPaneIdPayload, WriteToPaneIdPayload,
},
@@ -117,6 +118,7 @@ impl Into<FloatingPaneCoordinates> for ProtobufFloatingPaneCoordinates {
}
}),
pinned: self.pinned,
+ borderless: self.borderless,
}
}
}
@@ -169,6 +171,7 @@ impl Into<ProtobufFloatingPaneCoordinates> for FloatingPaneCoordinates {
None => None,
},
pinned: self.pinned,
+ borderless: self.borderless,
}
}
}
@@ -1682,6 +1685,29 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand {
_ => Err("Mismatched payload for ChangeFloatingPanesCoordinates"),
}
},
+ Some(CommandName::TogglePaneBorderless) => match protobuf_plugin_command.payload {
+ Some(Payload::TogglePaneBorderlessPayload(toggle_payload)) => {
+ match toggle_payload.pane_id {
+ Some(pane_id) => {
+ Ok(PluginCommand::TogglePaneBorderless(pane_id.try_into()?))
+ },
+ None => Err("Malformed TogglePaneBorderless payload"),
+ }
+ },
+ _ => Err("Mismatched payload for TogglePaneBorderless"),
+ },
+ Some(CommandName::SetPaneBorderless) => match protobuf_plugin_command.payload {
+ Some(Payload::SetPaneBorderlessPayload(payload)) => {
+ match (payload.pane_id, payload.borderless) {
+ (Some(pane_id), borderless) => Ok(PluginCommand::SetPaneBorderless(
+ pane_id.try_into()?,
+ borderless,
+ )),
+ _ => Err("Malformed SetPaneBorderless payload"),
+ }
+ },
+ _ => Err("Mismatched payload for SetPaneBorderless"),
+ },
Some(CommandName::OpenCommandPaneNearPlugin) => match protobuf_plugin_command.payload {
Some(Payload::OpenCommandPaneNearPluginPayload(command_to_run_payload)) => {
match command_to_run_payload.command_to_run {
@@ -3067,6 +3093,23 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand {
},
)),
}),
+ PluginCommand::TogglePaneBorderless(pane_id) => Ok(ProtobufPluginCommand {
+ name: CommandName::TogglePaneBorderless as i32,
+ payload: Some(Payload::TogglePaneBorderlessPayload(
+ TogglePaneBorderlessPayload {
+ pane_id: Some(pane_id.try_into()?),
+ },
+ )),
+ }),
+ PluginCommand::SetPaneBorderless(pane_id, borderless) => Ok(ProtobufPluginCommand {
+ name: CommandName::SetPaneBorderless as i32,
+ payload: Some(Payload::SetPaneBorderlessPayload(
+ SetPaneBorderlessPayload {
+ pane_id: Some(pane_id.try_into()?),
+ borderless,
+ },
+ )),
+ }),
PluginCommand::OpenCommandPaneNearPlugin(command_to_run, context) => {
let context: Vec<_> = context
.into_iter()