zellij/zellij-utils/src/plugin_api/action.proto
Aram Drevekenin ca0048bdcb
feat: stack pane action (#4255)
* refactor: group placement properties

* add stackpane cli and keybinding

* add test

* refactor: move spawn vertically/horizontally to spawnterminal

* fix tests and cleanups

* some cleanups and minor fixes

* more cleanups

* add stack action to the UI

* style(fmt): rustfmt

* fix serialization

* add to default config

* fix e2e tests

* style(fmt): rustfmt

* fix cli

* fix tests

* docs(changelog): add PR
2025-07-01 20:17:37 +02:00

285 lines
6.7 KiB
Protocol Buffer

syntax = "proto3";
import "input_mode.proto";
import "resize.proto";
package api.action;
message Action {
ActionName name = 1;
oneof optional_payload {
SwitchToModePayload switch_to_mode_payload = 2;
WritePayload write_payload = 3;
WriteCharsPayload write_chars_payload = 4;
SwitchToModePayload switch_mode_for_all_clients_payload = 5;
resize.Resize resize_payload = 6;
resize.ResizeDirection move_focus_payload = 7;
resize.ResizeDirection move_focus_or_tab_payload = 8;
MovePanePayload move_pane_payload = 9;
DumpScreenPayload dump_screen_payload = 10;
ScrollAtPayload scroll_up_at_payload = 11;
ScrollAtPayload scroll_down_at_payload = 12;
NewPanePayload new_pane_payload = 13;
EditFilePayload edit_file_payload = 14;
NewFloatingPanePayload new_floating_pane_payload = 15;
NewTiledPanePayload new_tiled_pane_payload = 16;
bytes pane_name_input_payload = 17;
uint32 go_to_tab_payload = 18;
GoToTabNamePayload go_to_tab_name_payload = 19;
bytes tab_name_input_payload = 20;
RunCommandAction run_payload = 21;
Position left_click_payload = 22;
Position right_click_payload = 23;
Position middle_click_payload = 24;
LaunchOrFocusPluginPayload launch_or_focus_plugin_payload = 25;
Position left_mouse_release_payload = 26;
Position right_mouse_release_payload = 27;
Position middle_mouse_release_payload = 28;
bytes search_input_payload = 32;
SearchDirection search_payload = 33;
SearchOption search_toggle_option_payload = 34;
NewPluginPanePayload new_tiled_plugin_pane_payload = 35;
NewPluginPanePayload new_floating_plugin_pane_payload = 36;
string start_or_reload_plugin_payload = 37;
uint32 close_terminal_pane_payload = 38;
uint32 close_plugin_pane_payload = 39;
PaneIdAndShouldFloat focus_terminal_pane_with_id_payload = 40;
PaneIdAndShouldFloat focus_plugin_pane_with_id_payload = 41;
IdAndName rename_terminal_pane_payload = 42;
IdAndName rename_plugin_pane_payload = 43;
IdAndName rename_tab_payload = 44;
string rename_session_payload = 45;
LaunchOrFocusPluginPayload launch_plugin_payload = 46;
CliPipePayload message_payload = 47;
MoveTabDirection move_tab_payload = 48;
MouseEventPayload mouse_event_payload = 49;
}
}
message CliPipePayload {
optional string name = 1;
string payload = 2;
repeated NameAndValue args = 3;
optional string plugin = 4;
}
message IdAndName {
bytes name = 1;
uint32 id = 2;
}
message PaneIdAndShouldFloat {
uint32 pane_id = 1;
bool should_float = 2;
}
message NewPluginPanePayload {
string plugin_url = 1;
optional string pane_name = 2;
bool skip_plugin_cache = 3;
}
enum SearchDirection {
Up = 0;
Down = 1;
}
enum SearchOption {
CaseSensitivity = 0;
WholeWord = 1;
Wrap = 2;
}
enum MoveTabDirection {
Left = 0;
Right = 1;
}
message LaunchOrFocusPluginPayload {
string plugin_url = 1;
bool should_float = 2;
optional PluginConfiguration plugin_configuration = 3;
bool move_to_focused_tab = 4;
bool should_open_in_place = 5;
bool skip_plugin_cache = 6;
}
message GoToTabNamePayload {
string tab_name = 1;
bool create = 2;
}
message NewFloatingPanePayload {
optional RunCommandAction command = 1;
}
message NewTiledPanePayload {
optional RunCommandAction command = 1;
optional resize.ResizeDirection direction = 2;
}
message MovePanePayload {
optional resize.ResizeDirection direction = 1;
}
message EditFilePayload {
string file_to_edit = 1;
optional uint32 line_number = 2;
optional string cwd = 3;
optional resize.ResizeDirection direction = 4;
bool should_float = 5;
}
message ScrollAtPayload {
Position position = 1;
}
message NewPanePayload {
optional resize.ResizeDirection direction = 1;
optional string pane_name = 2;
}
message SwitchToModePayload {
input_mode.InputMode input_mode = 1;
}
message WritePayload {
bytes bytes_to_write = 1;
}
message WriteCharsPayload {
string chars = 1;
}
message DumpScreenPayload {
string file_path = 1;
bool include_scrollback = 2;
}
enum ActionName {
Quit = 0;
Write = 1;
WriteChars = 2;
SwitchToMode = 3;
SwitchModeForAllClients = 4;
Resize = 5;
FocusNextPane = 6;
FocusPreviousPane = 7;
SwitchFocus = 8;
MoveFocus = 9;
MoveFocusOrTab = 10;
MovePane = 11;
MovePaneBackwards = 12;
ClearScreen = 13;
DumpScreen = 14;
EditScrollback = 15;
ScrollUp = 16;
ScrollUpAt = 17;
ScrollDown = 18;
ScrollDownAt = 19;
ScrollToBottom = 20;
ScrollToTop = 21;
PageScrollUp = 22;
PageScrollDown = 23;
HalfPageScrollUp = 24;
HalfPageScrollDown = 25;
ToggleFocusFullscreen = 26;
TogglePaneFrames = 27;
ToggleActiveSyncTab = 28;
NewPane = 29;
EditFile = 30;
NewFloatingPane = 31;
NewTiledPane = 32;
TogglePaneEmbedOrFloating = 33;
ToggleFloatingPanes = 34;
CloseFocus = 35;
PaneNameInput = 36;
UndoRenamePane = 37;
NewTab = 38;
NoOp = 39;
GoToNextTab = 40;
GoToPreviousTab = 41;
CloseTab = 42;
GoToTab = 43;
GoToTabName = 44;
ToggleTab = 45;
TabNameInput = 46;
UndoRenameTab = 47;
Run = 48;
Detach = 49;
LeftClick = 50;
RightClick = 51;
MiddleClick = 52;
LaunchOrFocusPlugin = 53;
LeftMouseRelease = 54;
RightMouseRelease = 55;
MiddleMouseRelease = 56;
SearchInput = 60;
Search = 61;
SearchToggleOption = 62;
ToggleMouseMode = 63;
PreviousSwapLayout = 64;
NextSwapLayout = 65;
QueryTabNames = 66;
NewTiledPluginPane = 67;
NewFloatingPluginPane = 68;
StartOrReloadPlugin = 69;
CloseTerminalPane = 70;
ClosePluginPane = 71;
FocusTerminalPaneWithId = 72;
FocusPluginPaneWithId = 73;
RenameTerminalPane = 74;
RenamePluginPane = 75;
RenameTab = 76;
BreakPane = 77;
BreakPaneRight = 78;
BreakPaneLeft = 79;
RenameSession = 80;
LaunchPlugin = 81;
CliPipe = 82;
MoveTab = 83;
KeybindPipe = 84;
TogglePanePinned = 85;
MouseEvent = 86;
TogglePaneInGroup = 87;
ToggleGroupMarking = 88;
NewStackedPane = 89;
}
message Position {
int64 line = 1;
int64 column = 2;
}
message MouseEventPayload {
uint32 event_type = 1;
bool left = 2;
bool right = 3;
bool middle = 4;
bool wheel_up = 5;
bool wheel_down = 6;
bool shift = 7;
bool alt = 8;
bool ctrl = 9;
int64 line = 10;
int64 column = 11;
}
message RunCommandAction {
string command = 1;
repeated string args = 2;
optional string cwd = 3;
optional resize.ResizeDirection direction = 4;
optional string pane_name = 5;
bool hold_on_close = 6;
bool hold_on_start = 7;
}
message PluginConfiguration {
repeated NameAndValue name_and_value = 1;
}
message NameAndValue {
string name = 1;
string value = 2;
}