syntax = "proto3"; import "action.proto"; import "event.proto"; import "file.proto"; import "command.proto"; import "message.proto"; import "resize.proto"; import "plugin_permission.proto"; package api.plugin_command; enum CommandName { Subscribe = 0; Unsubscribe = 1; SetSelectable = 2; GetPluginIds = 3; GetZellijVersion = 4; OpenFile = 5; OpenFileFloating = 6; OpenTerminal = 7; OpenTerminalFloating = 8; OpenCommandPane = 9; OpenCommandPaneFloating = 10; SwitchTabTo = 11; SetTimeout = 12; ExecCmd = 13; PostMessageTo = 14; PostMessageToPlugin = 15; HideSelf = 16; ShowSelf = 17; SwitchToMode = 18; NewTabsWithLayout = 19; NewTab = 20; GoToNextTab = 21; GoToPreviousTab = 22; Resize = 23; ResizeWithDirection = 24; FocusNextPane = 25; FocusPreviousPane = 26; MoveFocus = 27; MoveFocusOrTab = 28; Detach = 29; EditScrollback = 30; Write = 31; WriteChars = 32; ToggleTab = 33; MovePane = 34; MovePaneWithDirection = 35; ClearScreen = 36; ScrollUp = 37; ScrollDown = 38; ScrollToTop = 39; ScrollToBottom = 40; PageScrollUp = 41; PageScrollDown = 42; ToggleFocusFullscreen = 43; TogglePaneFrames = 44; TogglePaneEmbedOrEject = 45; UndoRenamePane = 46; CloseFocus = 47; ToggleActiveTabSync = 48; CloseFocusedTab = 49; UndoRenameTab = 50; QuitZellij = 51; PreviousSwapLayout = 52; NextSwapLayout = 53; GoToTabName = 54; FocusOrCreateTab = 55; GoToTab = 56; StartOrReloadPlugin = 57; CloseTerminalPane = 58; ClosePluginPane = 59; FocusTerminalPane = 60; FocusPluginPane = 61; RenameTerminalPane = 62; RenamePluginPane = 63; RenameTab = 64; ReportCrash = 65; RequestPluginPermissions = 66; SwitchSession = 67; OpenTerminalInPlace = 68; OpenCommandInPlace = 69; OpenFileInPlace = 70; RunCommand = 71; WebRequest = 72; DeleteDeadSession = 73; DeleteAllDeadSessions = 74; RenameSession = 75; UnblockCliPipeInput = 76; BlockCliPipeInput = 77; CliPipeOutput = 78; MessageToPlugin = 79; DisconnectOtherClients = 80; KillSessions = 81; } message PluginCommand { CommandName name = 1; oneof payload { SubscribePayload subscribe_payload = 2; UnsubscribePayload unsubscribe_payload = 3; bool set_selectable_payload = 4; OpenFilePayload open_file_payload = 5; OpenFilePayload open_file_floating_payload = 6; OpenFilePayload open_terminal_payload = 7; OpenFilePayload open_terminal_floating_payload = 8; OpenCommandPanePayload open_command_pane_payload = 9; OpenCommandPanePayload open_command_pane_floating_payload = 10; SwitchTabToPayload switch_tab_to_payload = 11; SetTimeoutPayload set_timeout_payload = 12; ExecCmdPayload exec_cmd_payload = 13; PluginMessagePayload post_message_to_payload = 14; PluginMessagePayload post_message_to_plugin_payload = 15; bool show_self_payload = 16; action.SwitchToModePayload switch_to_mode_payload = 17; string new_tabs_with_layout_payload = 18; ResizePayload resize_payload = 19; ResizePayload resize_with_direction_payload = 20; MovePayload move_focus_payload = 21; MovePayload move_focus_or_tab_payload = 22; bytes write_payload = 23; string write_chars_payload = 24; MovePayload move_pane_with_direction_payload = 25; string go_to_tab_name_payload = 26; string focus_or_create_tab_payload = 27; uint32 go_to_tab_payload = 28; string start_or_reload_plugin_payload = 29; uint32 close_terminal_pane_payload = 30; uint32 close_plugin_pane_payload = 31; action.PaneIdAndShouldFloat focus_terminal_pane_payload = 32; action.PaneIdAndShouldFloat focus_plugin_pane_payload = 33; IdAndNewName rename_terminal_pane_payload = 34; IdAndNewName rename_plugin_pane_payload = 35; IdAndNewName rename_tab_payload = 36; string report_crash_payload = 37; RequestPluginPermissionPayload request_plugin_permission_payload = 38; SwitchSessionPayload switch_session_payload = 39; OpenFilePayload open_file_in_place_payload = 40; OpenFilePayload open_terminal_in_place_payload = 41; OpenCommandPanePayload open_command_pane_in_place_payload = 42; RunCommandPayload run_command_payload = 43; WebRequestPayload web_request_payload = 44; string delete_dead_session_payload = 45; string rename_session_payload = 46; string unblock_cli_pipe_input_payload = 47; string block_cli_pipe_input_payload = 48; CliPipeOutputPayload cli_pipe_output_payload = 49; MessageToPluginPayload message_to_plugin_payload = 50; KillSessionsPayload kill_sessions_payload = 60; } } message KillSessionsPayload { repeated string session_names = 1; } message CliPipeOutputPayload { string pipe_name = 1; string output = 2; } message MessageToPluginPayload { optional string plugin_url = 1; repeated ContextItem plugin_config = 2; string message_name = 3; optional string message_payload = 4; repeated ContextItem message_args = 5; optional NewPluginArgs new_plugin_args = 6; } message NewPluginArgs { optional bool should_float = 1; optional PaneId pane_id_to_replace = 2; optional string pane_title = 3; optional string cwd = 4; bool skip_cache = 5; } message PaneId { PaneType pane_type = 1; uint32 id = 2; } enum PaneType { Terminal = 0; Plugin = 1; } message SwitchSessionPayload { optional string name = 1; optional uint32 tab_position = 2; optional uint32 pane_id = 3; optional bool pane_id_is_plugin = 4; optional event.LayoutInfo layout = 5; } message RequestPluginPermissionPayload { repeated plugin_permission.PermissionType permissions = 1; } message SubscribePayload { event.EventNameList subscriptions = 1; } message UnsubscribePayload { event.EventNameList subscriptions = 1; } message OpenFilePayload { file.File file_to_open = 1; optional FloatingPaneCoordinates floating_pane_coordinates = 2; } message OpenCommandPanePayload { command.Command command_to_run = 1; optional FloatingPaneCoordinates floating_pane_coordinates = 2; } message SwitchTabToPayload { uint32 tab_index = 1; } message SetTimeoutPayload { double seconds = 1; } message ExecCmdPayload { repeated string command_line = 1; } message RunCommandPayload { repeated string command_line = 1; repeated EnvVariable env_variables = 2; string cwd = 3; repeated ContextItem context = 4; } message WebRequestPayload { string url = 1; HttpVerb verb = 2; repeated event.Header headers = 3; bytes body = 4; repeated ContextItem context = 5; } enum HttpVerb { Get = 0; Post = 1; Put = 2; Delete = 3; } message EnvVariable { string name = 1; string value = 2; } message ContextItem { string name = 1; string value = 2; } message PluginMessagePayload { api.message.Message message = 1; } message ResizePayload { resize.Resize resize = 1; } message MovePayload { resize.MoveDirection direction = 1; } message IdAndNewName { uint32 id = 1; // pane id or tab index string new_name = 2; } message FloatingPaneCoordinates { optional FixedOrPercentValue x = 1; optional FixedOrPercentValue y = 2; optional FixedOrPercentValue width = 3; optional FixedOrPercentValue height = 4; } message FixedOrPercentValue { FixedOrPercent type = 1; uint32 value = 2; } enum FixedOrPercent { Fixed = 0; Percent = 1; }