aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/plugin_api
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2026-02-12 18:35:55 +0100
committerGitHub <noreply@github.com>2026-02-12 18:35:55 +0100
commite887164a0a1fa07ae3786b846ee4b43a613dba24 (patch)
tree21eae01fd0553b80a4bb931a19a92d59616f98be /zellij-utils/src/plugin_api
parentPropagate plugin alias config changes to plugins (#4698) (diff)
downloadsl0ppij-e887164a0a1fa07ae3786b846ee4b43a613dba24.tar.gz
sl0ppij-e887164a0a1fa07ae3786b846ee4b43a613dba24.tar.xz
sl0ppij-e887164a0a1fa07ae3786b846ee4b43a613dba24.zip
Allow plugins to read env vars present upon session creation (behind permission) (#4700)
* allow plugins to read environment variables * rustfmt * add pr
Diffstat (limited to 'zellij-utils/src/plugin_api')
-rw-r--r--zellij-utils/src/plugin_api/plugin_command.proto8
-rw-r--r--zellij-utils/src/plugin_api/plugin_command.rs21
-rw-r--r--zellij-utils/src/plugin_api/plugin_permission.proto1
-rw-r--r--zellij-utils/src/plugin_api/plugin_permission.rs6
4 files changed, 34 insertions, 2 deletions
diff --git a/zellij-utils/src/plugin_api/plugin_command.proto b/zellij-utils/src/plugin_api/plugin_command.proto
index a2a25f99..66099298 100644
--- a/zellij-utils/src/plugin_api/plugin_command.proto
+++ b/zellij-utils/src/plugin_api/plugin_command.proto
@@ -189,6 +189,7 @@ enum CommandName {
CloseTabWithId = 194;
RenameTabWithId = 195;
BreakPanesToTabWithId = 196;
+ GetSessionEnvironmentVariables = 197;
}
message PluginCommand {
@@ -327,6 +328,7 @@ message PluginCommand {
CloseTabWithIdPayload close_tab_with_id_payload = 145;
RenameTabWithIdPayload rename_tab_with_id_payload = 146;
BreakPanesToTabWithIdPayload break_panes_to_tab_with_id_payload = 147;
+ GetSessionEnvironmentVariablesPayload get_session_environment_variables_payload = 148;
}
}
@@ -1123,3 +1125,9 @@ message OpenCommandPaneInPlaceOfPluginResponse {
message OpenCommandPaneBackgroundResponse {
optional PaneId pane_id = 1;
}
+
+message GetSessionEnvironmentVariablesPayload {}
+
+message GetSessionEnvironmentVariablesResponse {
+ repeated EnvVariable env_vars = 1;
+}
diff --git a/zellij-utils/src/plugin_api/plugin_command.rs b/zellij-utils/src/plugin_api/plugin_command.rs
index 6ade3376..94f5e1e1 100644
--- a/zellij-utils/src/plugin_api/plugin_command.rs
+++ b/zellij-utils/src/plugin_api/plugin_command.rs
@@ -41,8 +41,10 @@ pub use super::generated_api::api::{
GetPanePidResponse as ProtobufGetPanePidResponse,
GetPaneRunningCommandPayload as ProtobufGetPaneRunningCommandPayload,
GetPaneRunningCommandResponse as ProtobufGetPaneRunningCommandResponse,
- GetPaneScrollbackPayload, GetTabInfoPayload,
- GetTabInfoResponse as ProtobufGetTabInfoResponse, GoToTabWithIdPayload,
+ GetPaneScrollbackPayload,
+ GetSessionEnvironmentVariablesPayload as ProtobufGetSessionEnvironmentVariablesPayload,
+ GetSessionEnvironmentVariablesResponse as ProtobufGetSessionEnvironmentVariablesResponse,
+ GetTabInfoPayload, GetTabInfoResponse as ProtobufGetTabInfoResponse, GoToTabWithIdPayload,
GroupAndUngroupPanesPayload, HidePaneWithIdPayload, HighlightAndUnhighlightPanesPayload,
HttpVerb as ProtobufHttpVerb, IdAndNewName, KeyToRebind, KeyToUnbind, KillSessionsPayload,
ListTokensResponse, LoadNewPluginPayload, MessageToPluginPayload,
@@ -2259,6 +2261,14 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand {
},
_ => Err("Malformed payload for GetTabInfo"),
},
+ Some(CommandName::GetSessionEnvironmentVariables) => {
+ match protobuf_plugin_command.payload {
+ Some(Payload::GetSessionEnvironmentVariablesPayload(_)) => {
+ Ok(PluginCommand::GetSessionEnvironmentVariables)
+ },
+ _ => Err("Mismatched payload for GetSessionEnvironmentVariables"),
+ }
+ },
None => Err("Unrecognized plugin command"),
}
}
@@ -3680,6 +3690,13 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand {
tab_id: tab_id as u64,
})),
}),
+ PluginCommand::GetSessionEnvironmentVariables => {
+ let payload = ProtobufGetSessionEnvironmentVariablesPayload {};
+ Ok(ProtobufPluginCommand {
+ name: CommandName::GetSessionEnvironmentVariables as i32,
+ payload: Some(Payload::GetSessionEnvironmentVariablesPayload(payload)),
+ })
+ },
}
}
}
diff --git a/zellij-utils/src/plugin_api/plugin_permission.proto b/zellij-utils/src/plugin_api/plugin_permission.proto
index 779f6b32..ff286ea0 100644
--- a/zellij-utils/src/plugin_api/plugin_permission.proto
+++ b/zellij-utils/src/plugin_api/plugin_permission.proto
@@ -19,4 +19,5 @@ enum PermissionType {
ReadPaneContents = 13;
RunActionsAsUser = 14;
WriteToClipboard = 15;
+ ReadSessionEnvironmentVariables = 16;
}
diff --git a/zellij-utils/src/plugin_api/plugin_permission.rs b/zellij-utils/src/plugin_api/plugin_permission.rs
index 37782a08..3bd85300 100644
--- a/zellij-utils/src/plugin_api/plugin_permission.rs
+++ b/zellij-utils/src/plugin_api/plugin_permission.rs
@@ -31,6 +31,9 @@ impl TryFrom<ProtobufPermissionType> for PermissionType {
ProtobufPermissionType::ReadPaneContents => Ok(PermissionType::ReadPaneContents),
ProtobufPermissionType::RunActionsAsUser => Ok(PermissionType::RunActionsAsUser),
ProtobufPermissionType::WriteToClipboard => Ok(PermissionType::WriteToClipboard),
+ ProtobufPermissionType::ReadSessionEnvironmentVariables => {
+ Ok(PermissionType::ReadSessionEnvironmentVariables)
+ },
}
}
}
@@ -63,6 +66,9 @@ impl TryFrom<PermissionType> for ProtobufPermissionType {
PermissionType::ReadPaneContents => Ok(ProtobufPermissionType::ReadPaneContents),
PermissionType::RunActionsAsUser => Ok(ProtobufPermissionType::RunActionsAsUser),
PermissionType::WriteToClipboard => Ok(ProtobufPermissionType::WriteToClipboard),
+ PermissionType::ReadSessionEnvironmentVariables => {
+ Ok(ProtobufPermissionType::ReadSessionEnvironmentVariables)
+ },
}
}
}