diff options
| author | Aram Drevekenin <aram@poor.dev> | 2026-02-12 18:35:55 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-12 18:35:55 +0100 |
| commit | e887164a0a1fa07ae3786b846ee4b43a613dba24 (patch) | |
| tree | 21eae01fd0553b80a4bb931a19a92d59616f98be /zellij-utils/src/plugin_api | |
| parent | Propagate plugin alias config changes to plugins (#4698) (diff) | |
| download | sl0ppij-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.proto | 8 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_command.rs | 21 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_permission.proto | 1 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_permission.rs | 6 |
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) + }, } } } |
