aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/assets
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2025-06-23 19:19:37 +0200
committerGitHub <noreply@github.com>2025-06-23 19:19:37 +0200
commitc5ac7968809ddb1033b625562eae22019cccc2f4 (patch)
tree932cf07d898dfbcc6ec6a9d4cf5353c06a47accc /zellij-utils/assets
parentfeat(ui): add optional tooltip with key hints to the compact bar (#4225) (diff)
downloadsl0ppij-c5ac7968809ddb1033b625562eae22019cccc2f4.tar.gz
sl0ppij-c5ac7968809ddb1033b625562eae22019cccc2f4.tar.xz
sl0ppij-c5ac7968809ddb1033b625562eae22019cccc2f4.zip
Feature: web-client/server to share your sessions in the browser (#4242)
* work * moar work * notes * work * separate to terminal and control channels * stdin working * serve html web client initial * serve static assets loaded with include_dir * merge * enable_web_server config parameter * compile time flag to disable web server capability * rustfmt * add license to all xterm.js assets * mouse working except copy/paste * helpful comment * web client improvements - move script to js file - add favicon - add nerd font - change title TODO: investigate if font license embedded in otf is sufficient * get mouse to work properly * kitty keyboard support initial * fix wrong type in preload link * wip axum websocket handlers - upgrade axum to v0.8.1, enable ws feature - begin setup of websocket handlers - tidy up imports * replace control listener * handle terminal websocket with axum * cleanup Cargo.toml * kitty fixes and bracketed paste * fix(mouse): pane not found crash * initial session switching infra * add `web_client_font` option * session switching, creation and resurrection working through the session manager * move session module to zellij-utils and share logic with web-client * some cleanups * require restart for enable-web-server * use session name from router * write config to disk and watch for config changes * rename session name to ipc path * add basic panic handler, make render_to_client exit on channel close * use while let instead of loop * handle websocket close * add mouse motions * make clipboard work * add weblink handling and webgl rendering * add todo * fix: use session name instead of patch on session switch * use "default" layout for new sessions * ui indication for session being shared * share this session ui * plugin assets * Fix process crash on mac with notify watcher. Use poll watcher instead of recommended as a workaround. * make url session switching and creation work * start welcome screen on root url * scaffold control messages, set font from config * set dimensions on session start * bring back session name from url * send bytes on terminal websocket instead of json - create web client os input and id before websocket connection * draft ui * work * refactor ui * remove otf font, remove margins to avoid scrollbar * version query endpoint for server status * web session info query endpoint * refactor: move stuff around * add web client info to session metadata * make tests pass * populate real data in session list * remove unnecessary endpoint * add web_client node to config, add font option * remove web_client_font * allow disabling the web session through the config - WIP * formalize sharing/not-sharing configuration * fix tests * allow shutting down web server * display error when web clients are forbidden to attach * only show sessions that allow web clients if this is a web client * style(fmt): rustfmt * fix: query web server from Zellij rather than from each plugin * remove log spam * handle some error paths better in the web client * allow controlling the web server through the cli * allow configuring the web server's ip/port * fix tests and format code * use direct WebServerStatus event instead of piggy-backing on SessionInfo * plugin revamp initial * make plugin responsive * adjust plugin title * refactor: share plugin * refactor: share plugin * add cors middleware * some fixes for running without a compiled web server capability * display error when starting the share plugin without web server support * clarify config * add pipelines to compile zellij without web support * display error when unable to start web server * only query web server when share plugin is running * refactor(web-client): connection table * give zellij_server_listener access to the control channel * fixes and clarifications * refactor: consolidate generate_unique_session_name * give proper error when trying to attach to a forbidden session * change browser URL when switching sessions * add keyboard shortcut * enforce https when bound to non-loopback ip * initial authentication token implementation * background color from theme * initial web client theme config * basic token generation ui * refactor set config message creation * also set body background * allow editing scrollback for plugins too * set scrollback to 0 * properly parse colors in config * generate token from plugin * nice login modals * initial token management screen * implement token authentication * refactor(share): token management screen * style(fmt): rustfmt * fix(plugin): some minor bugs * refactor(share): main screen * refactor(share): token screen * refactor(share): main * refactor(share): ui components * fix(responsiveness): properly send usage_width to the render function * fix cli commands and add some verbosity * add support for settings ansi and selection colors * add cursor and cursor accent * basic web client tests * fix tests * refactor: web client * use session tokens for authentication * improve modals * move shutdown to ipc * refactor: ipc logic * serialize theme config for web client * update tests * refactor: move some stuff around to prepare for config hot reload * config live reloading for the web clients * change remember-me UI wording * improve xterm.js link handling * make sure terminal is focused on mousemove * remove deprecated sharing indication from compact-bar * gate deps and functionality behind the web_server_compatibility feature * feat(build): add --no-web flag in all the places * fix some other build flows * add new assets * update CI for no-web (untested) * make more dependencies optional * update axum-extra * add web client configuration options * gracefully close connections on server exit * tests for graceful connection closing * handle client-side reconnect when server is down * fix: make sure ipc bus folder exists before starting * add commands to manage login tokens from the cli * style(fmt): rustfmt * some cleanups * fix(ux): allow alt-right-click on the web client without opening the context menu * fix: prevent attaching to welcome screen * fix: reload config issues * fix long socket path on macos * normalize config conversion and fix color gap in browser * revoke session_token cookie if it is not valid * fix: visual bug with multiple clients in extremely small screen sizes * fix: only include rusqlite for the web server capability builds * update e2e snapshots * refactor(web): client side js * some cleanups * moar cleanups * fix(tests): wait for server instead of using a fixed timeout * debug CI * fix(tests): use spawn_blocking for running the test web server * fix(tests): wait for http rather than tcp port * fix(tests): properly pass config path - hopefully this is the issue... * success! bring back the rest of the tests * attempt to fix the macos CI issue * docs(changelog): add PR --------- Co-authored-by: Thomas Linford <linford.t@gmail.com>
Diffstat (limited to 'zellij-utils/assets')
-rw-r--r--zellij-utils/assets/config/default.kdl75
-rwxr-xr-xzellij-utils/assets/plugins/about.wasmbin1229639 -> 1226820 bytes
-rwxr-xr-xzellij-utils/assets/plugins/compact-bar.wasmbin1336771 -> 1337570 bytes
-rwxr-xr-xzellij-utils/assets/plugins/configuration.wasmbin1289144 -> 1298380 bytes
-rwxr-xr-xzellij-utils/assets/plugins/fixture-plugin-for-tests.wasmbin1206105 -> 1237902 bytes
-rwxr-xr-xzellij-utils/assets/plugins/multiple-select.wasmbin1198888 -> 1199357 bytes
-rwxr-xr-xzellij-utils/assets/plugins/plugin-manager.wasmbin1184227 -> 1185467 bytes
-rwxr-xr-xzellij-utils/assets/plugins/session-manager.wasmbin1250940 -> 1269357 bytes
-rwxr-xr-xzellij-utils/assets/plugins/share.wasmbin0 -> 1180070 bytes
-rwxr-xr-xzellij-utils/assets/plugins/status-bar.wasmbin1412130 -> 1406910 bytes
-rwxr-xr-xzellij-utils/assets/plugins/strider.wasmbin1273869 -> 1308615 bytes
-rwxr-xr-xzellij-utils/assets/plugins/tab-bar.wasmbin1225290 -> 1261072 bytes
-rw-r--r--zellij-utils/assets/prost/api.event.rs106
-rw-r--r--zellij-utils/assets/prost/api.plugin_command.rs128
-rw-r--r--zellij-utils/assets/prost/api.plugin_permission.rs5
15 files changed, 301 insertions, 13 deletions
diff --git a/zellij-utils/assets/config/default.kdl b/zellij-utils/assets/config/default.kdl
index 722d9eff..0ea6ca78 100644
--- a/zellij-utils/assets/config/default.kdl
+++ b/zellij-utils/assets/config/default.kdl
@@ -142,6 +142,13 @@ keybinds {
};
SwitchToMode "Normal"
}
+ bind "s" {
+ LaunchOrFocusPlugin "zellij:share" {
+ floating true
+ move_to_focused_tab true
+ };
+ SwitchToMode "Normal"
+ }
}
tmux {
bind "[" { SwitchToMode "Scroll"; }
@@ -419,6 +426,70 @@ load_plugins {
//
// support_kitty_keyboard_protocol false
+// Whether to make sure a local web server is running when a new Zellij session starts.
+// This web server will allow creating new sessions and attaching to existing ones that have
+// opted in to being shared in the browser.
+// When enabled, navigate to http://127.0.0.1:8082
+// (Requires restart)
+//
+// Note: a local web server can still be manually started from within a Zellij session or from the CLI.
+// If this is not desired, one can use a version of Zellij compiled without
+// `web_server_capability`
+//
+// Possible values:
+// - true
+// - false
+// Default: false
+//
+// web_server true
+
+// Whether to allow sessions started in the terminal to be shared through a local web server, assuming one is
+// running (see the `web_server` option for more details).
+// (Requires restart)
+//
+// Note: This is an administrative separation and not intended as a security measure.
+//
+// Possible values:
+// - "on" (allow web sharing through the local web server if it
+// is online)
+// - "off" (do not allow web sharing unless sessions explicitly opt-in to it)
+// - "disabled" (do not allow web sharing and do not permit sessions started in the terminal to opt-in to it)
+// Default: "off"
+//
+// web_sharing "on"
+
+// The ip address the web server should listen on when it starts
+// Default: "127.0.0.1"
+// (Requires restart)
+//
+// web_server_ip "127.0.0.1"
+
+
+// A path to a certificate file to be used when setting up the web client to serve the
+// connection over HTTPs
+//
+// web_server_cert "/path/to/my/cert.pem"
+
+// A path to a key file to be used when setting up the web client to serve the
+// connection over HTTPs
+//
+// web_server_key "/path/to/my/key.pem"
+
+// Whether to enforce https connections to the web server when it is bound to localhost
+// (127.0.0.0/8)
+//
+// Note: https is ALWAYS enforced when bound to non-local interfaces
+//
+// Default: false
+//
+// enforce_https_for_localhost true
+
+// The port the web server should listen on when it starts
+// Default: 8082
+// (Requires restart)
+//
+// web_server_port 8082
+
// Whether to stack panes when resizing beyond a certain size
// Default: true
//
@@ -433,3 +504,7 @@ load_plugins {
// Default: true
//
// advanced_mouse_actions false
+
+web_client {
+ font "monospace"
+}
diff --git a/zellij-utils/assets/plugins/about.wasm b/zellij-utils/assets/plugins/about.wasm
index 86891995..a7a4063f 100755
--- a/zellij-utils/assets/plugins/about.wasm
+++ b/zellij-utils/assets/plugins/about.wasm
Binary files differ
diff --git a/zellij-utils/assets/plugins/compact-bar.wasm b/zellij-utils/assets/plugins/compact-bar.wasm
index 8d6e7105..a6991294 100755
--- a/zellij-utils/assets/plugins/compact-bar.wasm
+++ b/zellij-utils/assets/plugins/compact-bar.wasm
Binary files differ
diff --git a/zellij-utils/assets/plugins/configuration.wasm b/zellij-utils/assets/plugins/configuration.wasm
index bcf8110a..c98f2aae 100755
--- a/zellij-utils/assets/plugins/configuration.wasm
+++ b/zellij-utils/assets/plugins/configuration.wasm
Binary files differ
diff --git a/zellij-utils/assets/plugins/fixture-plugin-for-tests.wasm b/zellij-utils/assets/plugins/fixture-plugin-for-tests.wasm
index a3a0171c..e12f7622 100755
--- a/zellij-utils/assets/plugins/fixture-plugin-for-tests.wasm
+++ b/zellij-utils/assets/plugins/fixture-plugin-for-tests.wasm
Binary files differ
diff --git a/zellij-utils/assets/plugins/multiple-select.wasm b/zellij-utils/assets/plugins/multiple-select.wasm
index 011a4ecc..894f4ce9 100755
--- a/zellij-utils/assets/plugins/multiple-select.wasm
+++ b/zellij-utils/assets/plugins/multiple-select.wasm
Binary files differ
diff --git a/zellij-utils/assets/plugins/plugin-manager.wasm b/zellij-utils/assets/plugins/plugin-manager.wasm
index a440cc97..4efb3c3a 100755
--- a/zellij-utils/assets/plugins/plugin-manager.wasm
+++ b/zellij-utils/assets/plugins/plugin-manager.wasm
Binary files differ
diff --git a/zellij-utils/assets/plugins/session-manager.wasm b/zellij-utils/assets/plugins/session-manager.wasm
index 503fc235..b3b00fa7 100755
--- a/zellij-utils/assets/plugins/session-manager.wasm
+++ b/zellij-utils/assets/plugins/session-manager.wasm
Binary files differ
diff --git a/zellij-utils/assets/plugins/share.wasm b/zellij-utils/assets/plugins/share.wasm
new file mode 100755
index 00000000..2fc17d8d
--- /dev/null
+++ b/zellij-utils/assets/plugins/share.wasm
Binary files differ
diff --git a/zellij-utils/assets/plugins/status-bar.wasm b/zellij-utils/assets/plugins/status-bar.wasm
index 061528d7..b93f30f3 100755
--- a/zellij-utils/assets/plugins/status-bar.wasm
+++ b/zellij-utils/assets/plugins/status-bar.wasm
Binary files differ
diff --git a/zellij-utils/assets/plugins/strider.wasm b/zellij-utils/assets/plugins/strider.wasm
index 8a5cb6b6..ea2d4878 100755
--- a/zellij-utils/assets/plugins/strider.wasm
+++ b/zellij-utils/assets/plugins/strider.wasm
Binary files differ
diff --git a/zellij-utils/assets/plugins/tab-bar.wasm b/zellij-utils/assets/plugins/tab-bar.wasm
index 8a5820cc..6b24f066 100755
--- a/zellij-utils/assets/plugins/tab-bar.wasm
+++ b/zellij-utils/assets/plugins/tab-bar.wasm
Binary files differ
diff --git a/zellij-utils/assets/prost/api.event.rs b/zellij-utils/assets/prost/api.event.rs
index 7ec6e076..a1240693 100644
--- a/zellij-utils/assets/prost/api.event.rs
+++ b/zellij-utils/assets/prost/api.event.rs
@@ -9,7 +9,7 @@ pub struct EventNameList {
pub struct Event {
#[prost(enumeration="EventType", tag="1")]
pub name: i32,
- #[prost(oneof="event::Payload", tags="2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27")]
+ #[prost(oneof="event::Payload", tags="2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29")]
pub payload: ::core::option::Option<event::Payload>,
}
/// Nested message and enum types in `Event`.
@@ -68,17 +68,35 @@ pub mod event {
#[prost(message, tag="26")]
PastedTextPayload(super::PastedTextPayload),
#[prost(message, tag="27")]
+ WebServerStatusPayload(super::WebServerStatusPayload),
+ #[prost(message, tag="28")]
+ FailedToStartWebServerPayload(super::FailedToStartWebServerPayload),
+ #[prost(message, tag="29")]
InterceptedKeyPayload(super::super::key::Key),
}
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct FailedToStartWebServerPayload {
+ #[prost(string, tag="1")]
+ pub error: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PastedTextPayload {
#[prost(string, tag="1")]
pub pasted_text: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct WebServerStatusPayload {
+ #[prost(enumeration="WebServerStatusIndication", tag="1")]
+ pub web_server_status_indication: i32,
+ #[prost(string, optional, tag="2")]
+ pub payload: ::core::option::Option<::prost::alloc::string::String>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FailedToChangeHostFolderPayload {
#[prost(string, optional, tag="1")]
pub error_message: ::core::option::Option<::prost::alloc::string::String>,
@@ -313,7 +331,11 @@ pub struct SessionManifest {
pub available_layouts: ::prost::alloc::vec::Vec<LayoutInfo>,
#[prost(message, repeated, tag="7")]
pub plugins: ::prost::alloc::vec::Vec<PluginInfo>,
- #[prost(message, repeated, tag="8")]
+ #[prost(bool, tag="8")]
+ pub web_clients_allowed: bool,
+ #[prost(uint32, tag="9")]
+ pub web_client_count: u32,
+ #[prost(message, repeated, tag="10")]
pub tab_history: ::prost::alloc::vec::Vec<ClientTabHistory>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
@@ -464,7 +486,19 @@ pub struct ModeUpdatePayload {
#[prost(string, optional, tag="8")]
pub shell: ::core::option::Option<::prost::alloc::string::String>,
#[prost(bool, optional, tag="9")]
+ pub web_clients_allowed: ::core::option::Option<bool>,
+ #[prost(enumeration="WebSharing", optional, tag="10")]
+ pub web_sharing: ::core::option::Option<i32>,
+ #[prost(bool, optional, tag="11")]
pub currently_marking_pane_group: ::core::option::Option<bool>,
+ #[prost(bool, optional, tag="12")]
+ pub is_web_client: ::core::option::Option<bool>,
+ #[prost(string, optional, tag="13")]
+ pub web_server_ip: ::core::option::Option<::prost::alloc::string::String>,
+ #[prost(uint32, optional, tag="14")]
+ pub web_server_port: ::core::option::Option<u32>,
+ #[prost(bool, optional, tag="15")]
+ pub web_server_capability: ::core::option::Option<bool>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
@@ -531,8 +565,10 @@ pub enum EventType {
FailedToChangeHostFolder = 28,
PastedText = 29,
ConfigWasWrittenToDisk = 30,
- BeforeClose = 31,
- InterceptedKeyPress = 32,
+ WebServerStatus = 31,
+ BeforeClose = 32,
+ FailedToStartWebServer = 34,
+ InterceptedKeyPress = 35,
}
impl EventType {
/// String value of the enum field names used in the ProtoBuf definition.
@@ -572,7 +608,9 @@ impl EventType {
EventType::FailedToChangeHostFolder => "FailedToChangeHostFolder",
EventType::PastedText => "PastedText",
EventType::ConfigWasWrittenToDisk => "ConfigWasWrittenToDisk",
+ EventType::WebServerStatus => "WebServerStatus",
EventType::BeforeClose => "BeforeClose",
+ EventType::FailedToStartWebServer => "FailedToStartWebServer",
EventType::InterceptedKeyPress => "InterceptedKeyPress",
}
}
@@ -610,12 +648,43 @@ impl EventType {
"FailedToChangeHostFolder" => Some(Self::FailedToChangeHostFolder),
"PastedText" => Some(Self::PastedText),
"ConfigWasWrittenToDisk" => Some(Self::ConfigWasWrittenToDisk),
+ "WebServerStatus" => Some(Self::WebServerStatus),
"BeforeClose" => Some(Self::BeforeClose),
+ "FailedToStartWebServer" => Some(Self::FailedToStartWebServer),
"InterceptedKeyPress" => Some(Self::InterceptedKeyPress),
_ => None,
}
}
}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
+#[repr(i32)]
+pub enum WebServerStatusIndication {
+ Online = 0,
+ Offline = 1,
+ DifferentVersion = 2,
+}
+impl WebServerStatusIndication {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ WebServerStatusIndication::Online => "Online",
+ WebServerStatusIndication::Offline => "Offline",
+ WebServerStatusIndication::DifferentVersion => "DifferentVersion",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "Online" => Some(Self::Online),
+ "Offline" => Some(Self::Offline),
+ "DifferentVersion" => Some(Self::DifferentVersion),
+ _ => None,
+ }
+ }
+}
/// duplicate of plugin_command.PaneType because protobuffs don't like recursive imports
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
@@ -713,3 +782,32 @@ impl MouseEventName {
}
}
}
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
+#[repr(i32)]
+pub enum WebSharing {
+ On = 0,
+ Off = 1,
+ Disabled = 2,
+}
+impl WebSharing {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ WebSharing::On => "On",
+ WebSharing::Off => "Off",
+ WebSharing::Disabled => "Disabled",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "On" => Some(Self::On),
+ "Off" => Some(Self::Off),
+ "Disabled" => Some(Self::Disabled),
+ _ => None,
+ }
+ }
+}
diff --git a/zellij-utils/assets/prost/api.plugin_command.rs b/zellij-utils/assets/prost/api.plugin_command.rs
index b6b3d96d..52a8cd42 100644
--- a/zellij-utils/assets/prost/api.plugin_command.rs
+++ b/zellij-utils/assets/prost/api.plugin_command.rs
@@ -3,7 +3,7 @@
pub struct PluginCommand {
#[prost(enumeration="CommandName", tag="1")]
pub name: i32,
- #[prost(oneof="plugin_command::Payload", tags="2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106")]
+ #[prost(oneof="plugin_command::Payload", tags="2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110")]
pub payload: ::core::option::Option<plugin_command::Payload>,
}
/// Nested message and enum types in `PluginCommand`.
@@ -203,10 +203,44 @@ pub mod plugin_command {
FloatMultiplePanesPayload(super::FloatMultiplePanesPayload),
#[prost(message, tag="106")]
EmbedMultiplePanesPayload(super::EmbedMultiplePanesPayload),
+ #[prost(message, tag="107")]
+ SetSelfMouseSelectionSupportPayload(super::SetSelfMouseSelectionSupportPayload),
+ #[prost(message, tag="108")]
+ GenerateWebLoginTokenPayload(super::GenerateWebLoginTokenPayload),
+ #[prost(message, tag="109")]
+ RevokeWebLoginTokenPayload(super::RevokeWebLoginTokenPayload),
+ #[prost(message, tag="110")]
+ RenameWebLoginTokenPayload(super::RenameWebLoginTokenPayload),
}
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct RenameWebLoginTokenPayload {
+ #[prost(string, tag="1")]
+ pub old_name: ::prost::alloc::string::String,
+ #[prost(string, tag="2")]
+ pub new_name: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct RevokeWebLoginTokenPayload {
+ #[prost(string, tag="1")]
+ pub token_label: ::prost::alloc::string::String,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct GenerateWebLoginTokenPayload {
+ #[prost(string, optional, tag="1")]
+ pub token_label: ::core::option::Option<::prost::alloc::string::String>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct SetSelfMouseSelectionSupportPayload {
+ #[prost(bool, tag="1")]
+ pub support_mouse_selection: bool,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EmbedMultiplePanesPayload {
#[prost(message, repeated, tag="1")]
pub pane_ids: ::prost::alloc::vec::Vec<PaneId>,
@@ -786,6 +820,51 @@ pub struct FixedOrPercentValue {
#[prost(uint32, tag="2")]
pub value: u32,
}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct CreateTokenResponse {
+ #[prost(string, optional, tag="1")]
+ pub token: ::core::option::Option<::prost::alloc::string::String>,
+ #[prost(string, optional, tag="2")]
+ pub token_label: ::core::option::Option<::prost::alloc::string::String>,
+ #[prost(string, optional, tag="3")]
+ pub error: ::core::option::Option<::prost::alloc::string::String>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct RevokeTokenResponse {
+ #[prost(bool, tag="1")]
+ pub successfully_revoked: bool,
+ #[prost(string, optional, tag="2")]
+ pub error: ::core::option::Option<::prost::alloc::string::String>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ListTokensResponse {
+ /// tokens/creation_times should be synchronized
+ #[prost(string, repeated, tag="1")]
+ pub tokens: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ #[prost(string, repeated, tag="2")]
+ pub creation_times: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ #[prost(string, optional, tag="3")]
+ pub error: ::core::option::Option<::prost::alloc::string::String>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct RevokeAllWebTokensResponse {
+ #[prost(bool, tag="1")]
+ pub successfully_revoked: bool,
+ #[prost(string, optional, tag="2")]
+ pub error: ::core::option::Option<::prost::alloc::string::String>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct RenameWebTokenResponse {
+ #[prost(bool, tag="1")]
+ pub successfully_renamed: bool,
+ #[prost(string, optional, tag="2")]
+ pub error: ::core::option::Option<::prost::alloc::string::String>,
+}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum CommandName {
@@ -916,13 +995,24 @@ pub enum CommandName {
OpenFileNearPlugin = 124,
OpenFileFloatingNearPlugin = 125,
OpenFileInPlaceOfPlugin = 126,
- GroupAndUngroupPanes = 127,
- HighlightAndUnhighlightPanes = 128,
- CloseMultiplePanes = 129,
- FloatMultiplePanes = 130,
- EmbedMultiplePanes = 131,
- InterceptKeyPresses = 132,
- ClearKeyPressesIntercepts = 133,
+ StartWebServer = 127,
+ GroupAndUngroupPanes = 128,
+ HighlightAndUnhighlightPanes = 129,
+ CloseMultiplePanes = 130,
+ FloatMultiplePanes = 131,
+ EmbedMultiplePanes = 132,
+ ShareCurrentSession = 133,
+ StopSharingCurrentSession = 134,
+ StopWebServer = 135,
+ QueryWebServerStatus = 136,
+ SetSelfMouseSelectionSupport = 137,
+ GenerateWebLoginToken = 138,
+ RevokeWebLoginToken = 139,
+ ListWebLoginTokens = 140,
+ RevokeAllWebLoginTokens = 141,
+ RenameWebLoginToken = 142,
+ InterceptKeyPresses = 143,
+ ClearKeyPressesIntercepts = 144,
}
impl CommandName {
/// String value of the enum field names used in the ProtoBuf definition.
@@ -1058,11 +1148,22 @@ impl CommandName {
CommandName::OpenFileNearPlugin => "OpenFileNearPlugin",
CommandName::OpenFileFloatingNearPlugin => "OpenFileFloatingNearPlugin",
CommandName::OpenFileInPlaceOfPlugin => "OpenFileInPlaceOfPlugin",
+ CommandName::StartWebServer => "StartWebServer",
CommandName::GroupAndUngroupPanes => "GroupAndUngroupPanes",
CommandName::HighlightAndUnhighlightPanes => "HighlightAndUnhighlightPanes",
CommandName::CloseMultiplePanes => "CloseMultiplePanes",
CommandName::FloatMultiplePanes => "FloatMultiplePanes",
CommandName::EmbedMultiplePanes => "EmbedMultiplePanes",
+ CommandName::ShareCurrentSession => "ShareCurrentSession",
+ CommandName::StopSharingCurrentSession => "StopSharingCurrentSession",
+ CommandName::StopWebServer => "StopWebServer",
+ CommandName::QueryWebServerStatus => "QueryWebServerStatus",
+ CommandName::SetSelfMouseSelectionSupport => "SetSelfMouseSelectionSupport",
+ CommandName::GenerateWebLoginToken => "GenerateWebLoginToken",
+ CommandName::RevokeWebLoginToken => "RevokeWebLoginToken",
+ CommandName::ListWebLoginTokens => "ListWebLoginTokens",
+ CommandName::RevokeAllWebLoginTokens => "RevokeAllWebLoginTokens",
+ CommandName::RenameWebLoginToken => "RenameWebLoginToken",
CommandName::InterceptKeyPresses => "InterceptKeyPresses",
CommandName::ClearKeyPressesIntercepts => "ClearKeyPressesIntercepts",
}
@@ -1197,11 +1298,22 @@ impl CommandName {
"OpenFileNearPlugin" => Some(Self::OpenFileNearPlugin),
"OpenFileFloatingNearPlugin" => Some(Self::OpenFileFloatingNearPlugin),
"OpenFileInPlaceOfPlugin" => Some(Self::OpenFileInPlaceOfPlugin),
+ "StartWebServer" => Some(Self::StartWebServer),
"GroupAndUngroupPanes" => Some(Self::GroupAndUngroupPanes),
"HighlightAndUnhighlightPanes" => Some(Self::HighlightAndUnhighlightPanes),
"CloseMultiplePanes" => Some(Self::CloseMultiplePanes),
"FloatMultiplePanes" => Some(Self::FloatMultiplePanes),
"EmbedMultiplePanes" => Some(Self::EmbedMultiplePanes),
+ "ShareCurrentSession" => Some(Self::ShareCurrentSession),
+ "StopSharingCurrentSession" => Some(Self::StopSharingCurrentSession),
+ "StopWebServer" => Some(Self::StopWebServer),
+ "QueryWebServerStatus" => Some(Self::QueryWebServerStatus),
+ "SetSelfMouseSelectionSupport" => Some(Self::SetSelfMouseSelectionSupport),
+ "GenerateWebLoginToken" => Some(Self::GenerateWebLoginToken),
+ "RevokeWebLoginToken" => Some(Self::RevokeWebLoginToken),
+ "ListWebLoginTokens" => Some(Self::ListWebLoginTokens),
+ "RevokeAllWebLoginTokens" => Some(Self::RevokeAllWebLoginTokens),
+ "RenameWebLoginToken" => Some(Self::RenameWebLoginToken),
"InterceptKeyPresses" => Some(Self::InterceptKeyPresses),
"ClearKeyPressesIntercepts" => Some(Self::ClearKeyPressesIntercepts),
_ => None,
diff --git a/zellij-utils/assets/prost/api.plugin_permission.rs b/zellij-utils/assets/prost/api.plugin_permission.rs
index 4e837373..44d0330a 100644
--- a/zellij-utils/assets/prost/api.plugin_permission.rs
+++ b/zellij-utils/assets/prost/api.plugin_permission.rs
@@ -12,7 +12,8 @@ pub enum PermissionType {
MessageAndLaunchOtherPlugins = 8,
Reconfigure = 9,
FullHdAccess = 10,
- InterceptInput = 11,
+ StartWebServer = 11,
+ InterceptInput = 12,
}
impl PermissionType {
/// String value of the enum field names used in the ProtoBuf definition.
@@ -32,6 +33,7 @@ impl PermissionType {
PermissionType::MessageAndLaunchOtherPlugins => "MessageAndLaunchOtherPlugins",
PermissionType::Reconfigure => "Reconfigure",
PermissionType::FullHdAccess => "FullHdAccess",
+ PermissionType::StartWebServer => "StartWebServer",
PermissionType::InterceptInput => "InterceptInput",
}
}
@@ -49,6 +51,7 @@ impl PermissionType {
"MessageAndLaunchOtherPlugins" => Some(Self::MessageAndLaunchOtherPlugins),
"Reconfigure" => Some(Self::Reconfigure),
"FullHdAccess" => Some(Self::FullHdAccess),
+ "StartWebServer" => Some(Self::StartWebServer),
"InterceptInput" => Some(Self::InterceptInput),
_ => None,
}