* working * add tests * add coordinates to all the places * refactor: move things around: * style(fmt): rustfmt * style(code): cleanups
296 lines
7.2 KiB
Protocol Buffer
296 lines
7.2 KiB
Protocol Buffer
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;
|
|
}
|