From f850a167ac403444451cf90c64d39fa6d3a58e1a Mon Sep 17 00:00:00 2001 From: RustDesk <71636191+rustdesk@users.noreply.github.com> Date: Mon, 30 Jun 2025 00:31:09 +0800 Subject: [PATCH] terminal persistent --- protos/message.proto | 6 ++---- src/config.rs | 13 +++++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/protos/message.proto b/protos/message.proto index 689cd5b..9c227ea 100644 --- a/protos/message.proto +++ b/protos/message.proto @@ -90,9 +90,7 @@ message LoginRequest { } message Terminal { - // Empty message for terminal connection type - bool persistent = 1; // Whether to create a persistent terminal session - string service_id = 2; // Service ID for reconnecting to existing session + string service_id = 1; // Service ID for reconnecting to existing session } message Auth2FA { @@ -620,7 +618,6 @@ message PermissionInfo { Restart = 5; Recording = 6; BlockInput = 7; - Camera = 8; } Permission permission = 1; @@ -679,6 +676,7 @@ message OptionMessage { BoolOption follow_remote_cursor = 15; BoolOption follow_remote_window = 16; BoolOption disable_camera = 17; + BoolOption terminal_persistent = 18; } message TestDelay { diff --git a/src/config.rs b/src/config.rs index b3f0cd4..aecfa64 100644 --- a/src/config.rs +++ b/src/config.rs @@ -266,6 +266,8 @@ pub struct PeerConfig { #[serde(flatten)] pub lock_after_session_end: LockAfterSessionEnd, #[serde(flatten)] + pub terminal_persistent: TerminalPersistent, + #[serde(flatten)] pub privacy_mode: PrivacyMode, #[serde(flatten)] pub allow_swap_key: AllowSwapKey, @@ -357,6 +359,7 @@ impl Default for PeerConfig { custom_image_quality: Self::default_custom_image_quality(), show_remote_cursor: Default::default(), lock_after_session_end: Default::default(), + terminal_persistent: Default::default(), privacy_mode: Default::default(), allow_swap_key: Default::default(), port_forwards: Default::default(), @@ -1648,6 +1651,12 @@ serde_field_bool!( default_lock_after_session_end, "LockAfterSessionEnd::default_lock_after_session_end" ); +serde_field_bool!( + TerminalPersistent, + "terminal-persistent", + default_terminal_persistent, + "TerminalPersistent::default_terminal_persistent" +); serde_field_bool!( PrivacyMode, "privacy_mode", @@ -2430,6 +2439,8 @@ pub mod keys { pub const OPTION_ENABLE_CLIPBOARD: &str = "enable-clipboard"; pub const OPTION_ENABLE_FILE_TRANSFER: &str = "enable-file-transfer"; pub const OPTION_ENABLE_CAMERA: &str = "enable-camera"; + pub const OPTION_ENABLE_TERMINAL: &str = "enable-terminal"; + pub const OPTION_TERMINAL_PERSISTENT: &str = "terminal-persistent"; pub const OPTION_ENABLE_AUDIO: &str = "enable-audio"; pub const OPTION_ENABLE_TUNNEL: &str = "enable-tunnel"; pub const OPTION_ENABLE_REMOTE_RESTART: &str = "enable-remote-restart"; @@ -2552,6 +2563,7 @@ pub mod keys { OPTION_DISPLAYS_AS_INDIVIDUAL_WINDOWS, OPTION_USE_ALL_MY_DISPLAYS_FOR_THE_REMOTE_SESSION, OPTION_VIEW_STYLE, + OPTION_TERMINAL_PERSISTENT, OPTION_SCROLL_STYLE, OPTION_IMAGE_QUALITY, OPTION_CUSTOM_IMAGE_QUALITY, @@ -2602,6 +2614,7 @@ pub mod keys { OPTION_ENABLE_CLIPBOARD, OPTION_ENABLE_FILE_TRANSFER, OPTION_ENABLE_CAMERA, + OPTION_ENABLE_TERMINAL, OPTION_ENABLE_REMOTE_PRINTER, OPTION_ENABLE_AUDIO, OPTION_ENABLE_TUNNEL,