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; } 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; } } message SwitchSessionPayload { optional string name = 1; optional uint32 tab_position = 2; optional uint32 pane_id = 3; optional bool pane_id_is_plugin = 4; } 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; } message OpenCommandPanePayload { command.Command command_to_run = 1; } message SwitchTabToPayload { uint32 tab_index = 1; } message SetTimeoutPayload { double seconds = 1; } message ExecCmdPayload { repeated string command_line = 1; } 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; }