syntax = "proto3"; import "input_mode.proto"; import "key.proto"; import "style.proto"; import "action.proto"; package api.event; enum EventType { /// The input mode or relevant metadata changed ModeUpdate = 0; /// The tab state in the app was changed TabUpdate = 1; /// The pane state in the app was changed PaneUpdate = 2; /// A key was pressed while the user is focused on this plugin's pane Key = 3; /// A mouse event happened while the user is focused on this plugin's pane Mouse = 4; /// A timer expired set by the `set_timeout` method exported by `zellij-tile`. Timer = 5; /// Text was copied to the clipboard anywhere in the app CopyToClipboard = 6; /// Failed to copy text to clipboard anywhere in the app SystemClipboardFailure = 7; /// Input was received anywhere in the app InputReceived = 8; /// This plugin became visible or invisible Visible = 9; /// A message from one of the plugin's workers CustomMessage = 10; /// A file was created somewhere in the Zellij CWD folder FileSystemCreate = 11; /// A file was accessed somewhere in the Zellij CWD folder FileSystemRead = 12; /// A file was modified somewhere in the Zellij CWD folder FileSystemUpdate = 13; /// A file was deleted somewhere in the Zellij CWD folder FileSystemDelete = 14; PermissionRequestResult = 15; SessionUpdate = 16; RunCommandResult = 17; WebRequestResult = 18; CommandPaneOpened = 19; CommandPaneExited = 20; PaneClosed = 21; EditPaneOpened = 22; EditPaneExited = 23; CommandPaneReRun = 24; FailedToWriteConfigToDisk = 25; ListClients = 26; HostFolderChanged = 27; FailedToChangeHostFolder = 28; PastedText = 29; ConfigWasWrittenToDisk = 30; WebServerStatus = 31; BeforeClose = 32; FailedToStartWebServer = 34; InterceptedKeyPress = 35; PaneRenderReport = 36; UserAction = 37; ActionComplete = 38; CwdChanged = 39; AvailableLayoutInfo = 40; PluginConfigurationChanged = 41; HighlightClicked = 42; PaneRenderReportWithAnsi = 43; InitialKeybinds = 44; CommandChanged = 45; HostTerminalThemeChanged = 46; SoftKeyboardVisibilityChanged = 47; HintText = 48; ActivePaneScroll = 49; } message EventNameList { repeated EventType event_types = 1; } message Event { EventType name = 1; oneof payload { ModeUpdatePayload mode_update_payload = 2; TabUpdatePayload tab_update_payload = 3; PaneUpdatePayload pane_update_payload = 4; key.Key key_payload = 5; MouseEventPayload mouse_event_payload = 6; float timer_payload = 7; CopyDestination copy_to_clipboard_payload = 8; bool visible_payload = 9; CustomMessagePayload custom_message_payload = 10; FileListPayload file_list_payload = 11; PermissionRequestResultPayload permission_request_result_payload = 12; SessionUpdatePayload session_update_payload = 13; RunCommandResultPayload run_command_result_payload = 14; WebRequestResultPayload web_request_result_payload = 15; CommandPaneOpenedPayload command_pane_opened_payload = 16; CommandPaneExitedPayload command_pane_exited_payload = 17; PaneClosedPayload pane_closed_payload = 18; EditPaneOpenedPayload edit_pane_opened_payload = 19; EditPaneExitedPayload edit_pane_exited_payload = 20; CommandPaneReRunPayload command_pane_rerun_payload = 21; FailedToWriteConfigToDiskPayload failed_to_write_config_to_disk_payload = 22; ListClientsPayload list_clients_payload = 23; HostFolderChangedPayload host_folder_changed_payload = 24; FailedToChangeHostFolderPayload failed_to_change_host_folder_payload = 25; PastedTextPayload pasted_text_payload = 26; WebServerStatusPayload web_server_status_payload = 27; FailedToStartWebServerPayload failed_to_start_web_server_payload = 28; key.Key intercepted_key_payload = 29; PaneRenderReportPayload pane_render_report_payload = 30; UserActionPayload user_action_payload = 31; ActionCompletePayload action_complete_payload = 32; CwdChangedPayload cwd_changed_payload = 33; AvailableLayoutInfoPayload available_layout_info_payload = 34; PluginConfigurationChangedPayload plugin_configuration_changed_payload = 35; HighlightClickedPayload highlight_clicked_payload = 36; PaneRenderReportPayload pane_render_report_with_ansi_payload = 37; InitialKeybindsPayload initial_keybinds_payload = 38; CommandChangedPayload command_changed_payload = 39; HostTerminalThemeChangedPayload host_terminal_theme_changed_payload = 40; SoftKeyboardVisibilityChangedPayload soft_keyboard_visibility_changed_payload = 41; HintTextPayload hint_text_payload = 42; ActivePaneScrollPayload active_pane_scroll_payload = 43; } } message HintTextPayload { map hint_text = 1; } message ActivePaneScrollPayload { optional uint32 position = 1; optional uint32 length = 2; } message StyledText { string text = 1; repeated StyledTextIndices indices = 2; } message StyledTextIndices { repeated uint32 indices = 1; } message HostTerminalThemeChangedPayload { HostTerminalThemeIndication mode = 1; } message SoftKeyboardVisibilityChangedPayload { bool visible = 1; } enum HostTerminalThemeIndication { Dark = 0; Light = 1; } message CwdChangedPayload { PaneId pane_id = 1; string new_cwd = 2; repeated uint32 focused_client_ids = 3; } message CommandChangedPayload { PaneId pane_id = 1; repeated string command = 2; bool is_foreground = 3; repeated uint32 focused_client_ids = 4; } message FailedToStartWebServerPayload { string error = 1; } message PastedTextPayload { string pasted_text = 1; } enum WebServerStatusIndication { Online = 0; Offline = 1; DifferentVersion = 2; } message WebServerStatusPayload { WebServerStatusIndication web_server_status_indication = 1; optional string payload = 2; } message FailedToChangeHostFolderPayload { optional string error_message = 1; } message HostFolderChangedPayload { string new_host_folder_path = 1; } message ListClientsPayload { repeated ClientInfo client_info = 1; } message ClientInfo { uint32 client_id = 1; PaneId pane_id = 2; string running_command = 3; bool is_current_client = 4; } message FailedToWriteConfigToDiskPayload { optional string file_path = 1; } message CommandPaneReRunPayload { uint32 terminal_pane_id = 1; repeated ContextItem context = 3; } message PaneClosedPayload { PaneId pane_id = 1; } // duplicate of plugin_command.PaneId because protobuffs don't like recursive imports message PaneId { PaneType pane_type = 1; uint32 id = 2; } // duplicate of plugin_command.PaneType because protobuffs don't like recursive imports enum PaneType { Terminal = 0; Plugin = 1; } message CommandPaneOpenedPayload { uint32 terminal_pane_id = 1; repeated ContextItem context = 2; } message EditPaneOpenedPayload { uint32 terminal_pane_id = 1; repeated ContextItem context = 2; } message CommandPaneExitedPayload { uint32 terminal_pane_id = 1; optional int32 exit_code = 2; repeated ContextItem context = 3; } message EditPaneExitedPayload { uint32 terminal_pane_id = 1; optional int32 exit_code = 2; repeated ContextItem context = 3; } message SessionUpdatePayload { repeated SessionManifest session_manifests = 1; repeated ResurrectableSession resurrectable_sessions = 2; } message AvailableLayoutInfoPayload { repeated LayoutInfo available_layouts = 1; repeated LayoutWithError layouts_with_errors = 2; } message RunCommandResultPayload { optional int32 exit_code = 1; bytes stdout = 2; bytes stderr = 3; repeated ContextItem context = 4; } message WebRequestResultPayload { int32 status = 1; repeated Header headers = 2; bytes body = 3; repeated ContextItem context = 4; } message ContextItem { string name = 1; string value = 2; } message Header { string name = 1; string value = 2; } message PermissionRequestResultPayload { bool granted = 1; } message FileListPayload { repeated string paths = 1; repeated FileMetadata paths_metadata = 2; } message FileMetadata { bool metadata_is_set = 1; // if this is false, the metadata for this file has not been read bool is_dir = 2; bool is_file = 3; bool is_symlink = 4; uint64 len = 5; } message CustomMessagePayload { string message_name = 1; string payload = 2; } enum CopyDestination { Command = 0; Primary = 1; System = 2; } message MouseEventPayload { MouseEventName mouse_event_name = 1; oneof mouse_event_payload { uint32 line_count = 2; action.Position position = 3; } } enum MouseEventName { MouseScrollUp = 0; MouseScrollDown = 1; MouseLeftClick = 2; MouseRightClick = 3; MouseHold = 4; MouseRelease = 5; MouseHover = 6; MouseScrollLeft = 7; MouseScrollRight = 8; } message TabUpdatePayload { repeated TabInfo tab_info = 1; } message PaneUpdatePayload { repeated PaneManifest pane_manifest = 1; } message PaneManifest { uint32 tab_index = 1; repeated PaneInfo panes = 2; } message SessionManifest { string name = 1; repeated TabInfo tabs = 2; repeated PaneManifest panes = 3; uint32 connected_clients = 4; bool is_current_session = 5; repeated LayoutInfo available_layouts = 6; repeated PluginInfo plugins = 7; bool web_clients_allowed = 8; uint32 web_client_count = 9; repeated ClientTabHistory tab_history = 10; repeated ClientPaneHistory pane_history = 11; uint64 creation_time = 12; } message ClientTabHistory { uint32 client_id = 1; repeated uint32 tab_history = 2; } message ClientPaneHistory { uint32 client_id = 1; repeated PaneId pane_history = 2; } message PluginInfo { uint32 plugin_id = 1; string plugin_url = 2; repeated ContextItem plugin_config = 3; } message LayoutInfo { string name = 1; string source = 2; optional LayoutMetadata layout_metadata = 5; } message LayoutWithError { string layout_name = 1; LayoutParsingError error = 2; } message LayoutParsingError { oneof error_type { KdlErrorVariant kdl_error = 1; SyntaxError syntax_error = 2; } } message KdlErrorVariant { KdlError kdl_error = 1; string file_name = 2; string source_code = 3; } message SyntaxError { // Empty message, just a marker } message KdlError { string error_message = 1; optional uint64 offset = 2; optional uint64 len = 3; optional string help_message = 4; } message LayoutMetadata { repeated TabMetadata tabs = 1; string creation_time = 2; string update_time = 3; } message TabMetadata { repeated PaneMetadata pane_metadata = 1; optional string name = 2; } message PaneMetadata { optional string name = 1; bool is_plugin = 2; bool is_builtin_plugin = 3; } message ResurrectableSession { string name = 1; uint64 creation_time = 2; } message PaneInfo { uint32 id = 1; bool is_plugin = 2; bool is_focused = 3; bool is_fullscreen = 4; bool is_floating = 5; bool is_suppressed = 6; string title = 7; bool exited = 8; optional int32 exit_status = 9; bool is_held = 10; uint32 pane_x = 11; uint32 pane_content_x = 12; uint32 pane_y = 13; uint32 pane_content_y = 14; uint32 pane_rows = 15; uint32 pane_content_rows = 16; uint32 pane_columns = 17; uint32 pane_content_columns = 18; optional action.Position cursor_coordinates_in_pane = 19; optional string terminal_command = 20; optional string plugin_url = 21; bool is_selectable = 22; repeated IndexInPaneGroup index_in_pane_group = 23; optional string default_fg = 24; optional string default_bg = 25; } message IndexInPaneGroup { uint32 client_id = 1; uint32 index = 2; } message TabInfo { uint32 position = 1; string name = 2; bool active = 3; uint32 panes_to_hide = 4; bool is_fullscreen_active = 5; bool is_sync_panes_active = 6; bool are_floating_panes_visible = 7; repeated uint32 other_focused_clients = 8; optional string active_swap_layout_name = 9; bool is_swap_layout_dirty = 10; uint32 viewport_rows = 11; uint32 viewport_columns = 12; uint32 display_area_rows = 13; uint32 display_area_columns = 14; uint32 selectable_tiled_panes_count = 15; uint32 selectable_floating_panes_count = 16; uint32 tab_id = 17; bool has_bell_notification = 18; bool is_flashing_bell = 19; } message ModeUpdatePayload { input_mode.InputMode current_mode = 1; repeated InputModeKeybinds keybinds = 2; style.Style style = 3; bool arrow_fonts_support = 4; optional string session_name = 5; optional input_mode.InputMode base_mode = 6; optional string editor = 7; optional string shell = 8; optional bool web_clients_allowed = 9; optional WebSharing web_sharing = 10; optional bool currently_marking_pane_group = 11; optional bool is_web_client = 12; optional string web_server_ip = 13; optional uint32 web_server_port = 14; optional bool web_server_capability = 15; optional PaneFrameStyle pane_frame_style = 16; optional bool session_dimmed = 17; repeated string ancestry = 18; optional bool host_fullscreen = 19; repeated string nested_ascend_keys = 20; optional bool session_ascended = 21; repeated string nested_descend_keys = 22; } enum WebSharing { On = 0; Off = 1; Disabled = 2; } enum PaneFrameStyle { Full = 0; Titles = 1; None = 2; } message InputModeKeybinds { input_mode.InputMode mode = 1; repeated KeyBind key_bind = 2; } message KeyBind { key.Key key = 1; repeated action.Action action = 2; } message PaneRenderReportPayload { repeated PaneContentsEntry pane_contents = 1; } message PaneContentsEntry { PaneId pane_id = 1; PaneContents pane_contents = 2; } message PaneContents { repeated string viewport = 1; optional SelectedText selected_text = 2; repeated string lines_above_viewport = 3; repeated string lines_below_viewport = 4; optional action.Position cursor = 5; } message PaneScrollbackResponse { oneof response { PaneContents ok = 1; string err = 2; } } message SelectedText { action.Position start = 1; action.Position end = 2; } message UserActionPayload { action.Action action = 1; uint32 client_id = 2; optional uint32 terminal_id = 3; optional uint32 cli_client_id = 4; } message ActionCompletePayload { action.Action action = 1; optional PaneId pane_id = 2; repeated ContextItem context = 3; } message PluginConfigurationChangedPayload { repeated ContextItem configuration = 1; } message HighlightClickedPayload { PaneId pane_id = 1; string pattern = 2; string matched_string = 3; repeated ContextItem context = 4; } message InitialKeybindsPayload { repeated InputModeKeybinds keybinds = 1; }