aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/plugin_api
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2026-03-20 17:28:36 +0100
committerGitHub <noreply@github.com>2026-03-20 17:28:36 +0100
commit4ba41c085ab9207ed31e72a1ba331bff2bebed99 (patch)
treeaf832d3e2b1c4577525f0276bda83fc9a12612b3 /zellij-utils/src/plugin_api
parentadjust badges location in readme (diff)
downloadsl0ppij-4ba41c085ab9207ed31e72a1ba331bff2bebed99.tar.gz
sl0ppij-4ba41c085ab9207ed31e72a1ba331bff2bebed99.tar.xz
sl0ppij-4ba41c085ab9207ed31e72a1ba331bff2bebed99.zip
Release notes and fixes (#4879)
* release notes * fix some link issues * rustfmt * fix click wording
Diffstat (limited to 'zellij-utils/src/plugin_api')
-rw-r--r--zellij-utils/src/plugin_api/plugin_command.proto13
-rw-r--r--zellij-utils/src/plugin_api/plugin_command.rs68
2 files changed, 79 insertions, 2 deletions
diff --git a/zellij-utils/src/plugin_api/plugin_command.proto b/zellij-utils/src/plugin_api/plugin_command.proto
index 0634d63e..f00ffdd1 100644
--- a/zellij-utils/src/plugin_api/plugin_command.proto
+++ b/zellij-utils/src/plugin_api/plugin_command.proto
@@ -201,6 +201,7 @@ enum CommandName {
SetPaneColor = 206;
SetPaneRegexHighlights = 207;
ClearPaneHighlights = 208;
+ OpenPluginPaneFloating = 209;
}
message PluginCommand {
@@ -351,6 +352,7 @@ message PluginCommand {
SetPaneColorPayload set_pane_color_payload = 157;
SetPaneRegexHighlightsPayload set_pane_regex_highlights_payload = 158;
ClearPaneHighlightsPayload clear_pane_highlights_payload = 159;
+ OpenPluginPaneFloatingPayload open_plugin_pane_floating_payload = 160;
}
}
@@ -1281,3 +1283,14 @@ message SetPaneRegexHighlightsPayload {
message ClearPaneHighlightsPayload {
PaneId pane_id = 1;
}
+
+message OpenPluginPaneFloatingPayload {
+ string plugin_url = 1;
+ map<string, string> configuration = 2;
+ optional FloatingPaneCoordinates floating_pane_coordinates = 3;
+ repeated ContextItem context = 4;
+}
+
+message OpenPluginPaneFloatingResponse {
+ optional PaneId pane_id = 1;
+}
diff --git a/zellij-utils/src/plugin_api/plugin_command.rs b/zellij-utils/src/plugin_api/plugin_command.rs
index 00acb760..fc55dd91 100644
--- a/zellij-utils/src/plugin_api/plugin_command.rs
+++ b/zellij-utils/src/plugin_api/plugin_command.rs
@@ -81,6 +81,8 @@ pub use super::generated_api::api::{
OpenFileNearPluginResponse as ProtobufOpenFileNearPluginResponse, OpenFilePayload,
OpenFileResponse as ProtobufOpenFileResponse,
OpenPaneInNewTabResponse as ProtobufOpenPaneInNewTabResponse,
+ OpenPluginPaneFloatingPayload,
+ OpenPluginPaneFloatingResponse as ProtobufOpenPluginPaneFloatingResponse,
OpenPluginPaneInNewTabPayload as ProtobufOpenPluginPaneInNewTabPayload,
OpenTerminalFloatingNearPluginPayload,
OpenTerminalFloatingNearPluginResponse as ProtobufOpenTerminalFloatingNearPluginResponse,
@@ -2543,6 +2545,26 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand {
},
_ => Err("Mismatched payload for ClearPaneHighlights"),
},
+ Some(CommandName::OpenPluginPaneFloating) => match protobuf_plugin_command.payload {
+ Some(Payload::OpenPluginPaneFloatingPayload(payload)) => {
+ let configuration: BTreeMap<String, String> =
+ payload.configuration.into_iter().collect();
+ let floating_pane_coordinates =
+ payload.floating_pane_coordinates.map(|f| f.into());
+ let context: BTreeMap<String, String> = payload
+ .context
+ .into_iter()
+ .map(|e| (e.name, e.value))
+ .collect();
+ Ok(PluginCommand::OpenPluginPaneFloating {
+ plugin_url: payload.plugin_url,
+ configuration,
+ floating_pane_coordinates,
+ context,
+ })
+ },
+ _ => Err("Mismatched payload for OpenPluginPaneFloating"),
+ },
None => Err("Unrecognized plugin command"),
}
}
@@ -4202,6 +4224,30 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand {
},
)),
}),
+ PluginCommand::OpenPluginPaneFloating {
+ plugin_url,
+ configuration,
+ floating_pane_coordinates,
+ context,
+ } => {
+ let context: Vec<_> = context
+ .into_iter()
+ .map(|(name, value)| ContextItem { name, value })
+ .collect();
+ let configuration: std::collections::HashMap<String, String> =
+ configuration.into_iter().collect();
+ Ok(ProtobufPluginCommand {
+ name: CommandName::OpenPluginPaneFloating as i32,
+ payload: Some(Payload::OpenPluginPaneFloatingPayload(
+ OpenPluginPaneFloatingPayload {
+ plugin_url,
+ configuration,
+ floating_pane_coordinates: floating_pane_coordinates.map(|f| f.into()),
+ context,
+ },
+ )),
+ })
+ },
}
}
}
@@ -4216,8 +4262,8 @@ use crate::data::{
OpenEditPaneInPlaceOfPaneIdResponse, OpenFileFloatingNearPluginResponse,
OpenFileFloatingResponse, OpenFileInPlaceOfPluginResponse, OpenFileInPlaceResponse,
OpenFileNearPluginResponse, OpenFileResponse, OpenPaneInNewTabResponse,
- OpenTerminalFloatingNearPluginResponse, OpenTerminalFloatingResponse,
- OpenTerminalInPlaceOfPluginResponse, OpenTerminalInPlaceResponse,
+ OpenPluginPaneFloatingResponse, OpenTerminalFloatingNearPluginResponse,
+ OpenTerminalFloatingResponse, OpenTerminalInPlaceOfPluginResponse, OpenTerminalInPlaceResponse,
OpenTerminalNearPluginResponse, OpenTerminalPaneInPlaceOfPaneIdResponse, OpenTerminalResponse,
};
@@ -4811,3 +4857,21 @@ impl From<OpenEditPaneInPlaceOfPaneIdResponse> for ProtobufOpenEditPaneInPlaceOf
}
}
}
+
+impl TryFrom<ProtobufOpenPluginPaneFloatingResponse> for OpenPluginPaneFloatingResponse {
+ type Error = &'static str;
+ fn try_from(protobuf: ProtobufOpenPluginPaneFloatingResponse) -> Result<Self, Self::Error> {
+ match protobuf.pane_id {
+ Some(pane_id) => Ok(Some(pane_id.try_into()?)),
+ None => Ok(None),
+ }
+ }
+}
+
+impl From<OpenPluginPaneFloatingResponse> for ProtobufOpenPluginPaneFloatingResponse {
+ fn from(response: OpenPluginPaneFloatingResponse) -> Self {
+ ProtobufOpenPluginPaneFloatingResponse {
+ pane_id: response.map(|p| p.try_into().unwrap()),
+ }
+ }
+}