From b55efe035d7fa9b1a124812330cc2865dfab08f8 Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Sun, 29 Jun 2025 00:48:18 +0800 Subject: [PATCH] =?UTF-8?q?:hammer:=20=E4=BF=AE=E6=94=B9=E7=BB=88=E7=AB=AF?= =?UTF-8?q?=E9=85=8D=E7=BD=AE.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/TerminalPreferenceModel.java | 344 +++++++++--------- .../strategy/TerminalPreferenceStrategy.java | 166 ++++----- .../handler/guacd/constant/GuacdConst.java | 7 +- .../terminal/model/TerminalChannelExtra.java | 10 + .../handler/terminal/session/RdpSession.java | 6 +- .../src/store/modules/terminal/index.ts | 46 +-- .../src/store/modules/terminal/types.ts | 86 ++--- .../components/setting/block-setting-item.vue | 8 +- .../display/terminal-display-setting.vue | 6 +- .../display/terminal-ssh-display-block.vue | 6 +- ....vue => terminal-ssh-right-menu-block.vue} | 8 +- .../general/terminal-general-setting.vue | 18 +- .../general/terminal-rdp-graph-block.vue | 30 +- .../general/terminal-rdp-session-block.vue | 66 ++++ .../general/terminal-session-block.vue | 70 ---- ...ck.vue => terminal-ssh-interact-block.vue} | 37 +- ...ock.vue => terminal-ssh-plugins-block.vue} | 10 +- ...block.vue => terminal-ssh-theme-block.vue} | 10 +- .../setting/theme/terminal-theme-setting.vue | 6 +- .../components/view/sftp/sftp-editor.vue | 2 +- .../components/view/ssh/ssh-context-menu.vue | 6 +- .../terminal/components/view/ssh/ssh-view.vue | 2 +- orion-visor-ui/src/views/terminal/index.vue | 2 +- .../terminal/service/channel/rdp-channel.ts | 32 +- .../terminal/service/channel/ssh-channel.ts | 2 +- .../service/handler/ssh-session-handler.ts | 6 +- .../terminal/service/session/rdp-session.ts | 2 +- .../terminal/service/session/ssh-session.ts | 28 +- .../src/views/terminal/types/const.ts | 5 +- .../src/views/terminal/types/utils.ts | 2 +- 30 files changed, 542 insertions(+), 487 deletions(-) rename orion-visor-ui/src/views/terminal/components/setting/display/{terminal-right-menu-block.vue => terminal-ssh-right-menu-block.vue} (95%) create mode 100644 orion-visor-ui/src/views/terminal/components/setting/general/terminal-rdp-session-block.vue delete mode 100644 orion-visor-ui/src/views/terminal/components/setting/general/terminal-session-block.vue rename orion-visor-ui/src/views/terminal/components/setting/general/{terminal-interact-block.vue => terminal-ssh-interact-block.vue} (74%) rename orion-visor-ui/src/views/terminal/components/setting/general/{terminal-plugins-block.vue => terminal-ssh-plugins-block.vue} (86%) rename orion-visor-ui/src/views/terminal/components/setting/theme/{terminal-theme-block.vue => terminal-ssh-theme-block.vue} (94%) diff --git a/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/handler/preference/model/TerminalPreferenceModel.java b/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/handler/preference/model/TerminalPreferenceModel.java index 6e9eb68d..b57614ca 100644 --- a/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/handler/preference/model/TerminalPreferenceModel.java +++ b/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/handler/preference/model/TerminalPreferenceModel.java @@ -51,9 +51,9 @@ public class TerminalPreferenceModel implements GenericsDataModel { private String newConnectionType; /** - * 终端主题 + * ssh 主题 */ - private JSONObject theme; + private JSONObject sshTheme; /** * ssh 显示设置 @@ -61,40 +61,40 @@ public class TerminalPreferenceModel implements GenericsDataModel { private JSONObject sshDisplaySetting; /** - * rdp 图形化设置 + * ssh 右键菜单设置 */ - private JSONObject rdpGraphSetting; + private List sshRightMenuSetting; /** * ssh 操作栏设置 */ private JSONObject sshActionBarSetting; + /** + * ssh 交互设置 + */ + private JSONObject sshInteractSetting; + + /** + * ssh 插件设置 + */ + private JSONObject sshPluginsSetting; + + /** + * rdp 会话设置 + */ + private JSONObject rdpSessionSetting; + + /** + * rdp 图形化设置 + */ + private JSONObject rdpGraphSetting; + /** * rdp 操作栏设置 */ private JSONObject rdpActionBarSetting; - /** - * 右键菜单设置 - */ - private List rightMenuSetting; - - /** - * 交互设置 - */ - private JSONObject interactSetting; - - /** - * 插件设置 - */ - private JSONObject pluginsSetting; - - /** - * 会话设置 - */ - private JSONObject sessionSetting; - /** * 快捷键设置 */ @@ -148,94 +148,6 @@ public class TerminalPreferenceModel implements GenericsDataModel { } - @Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class RdpGraphSettingModel implements IJsonObject { - - /** - * 显示大小 - */ - private String displaySize; - - /** - * 显示宽度 - */ - private Integer displayWidth; - - /** - * 显示高度 - */ - private Integer displayHeight; - - /** - * 启用音频输入 - */ - private Boolean enableAudioInput; - - /** - * 启用音频输出 - */ - private Boolean enableAudioOutput; - - /** - * 颜色深度 - */ - private Integer colorDepth; - - /** - * 无损压缩 - */ - private Boolean forceLossless; - - /** - * 启用壁纸 - */ - private Boolean enableWallpaper; - - /** - * 启用主题 - */ - private Boolean enableTheming; - - /** - * 启动平滑字体 - */ - private Boolean enableFontSmoothing; - - /** - * 启用窗口拖动 - */ - private Boolean enableFullWindowDrag; - - /** - * 启用桌面合成 - */ - private Boolean enableDesktopComposition; - - /** - * 启用菜单动画 - */ - private Boolean enableMenuAnimations; - - /** - * 禁用位图缓存 - */ - private Boolean disableBitmapCaching; - - /** - * 禁用离屏缓存 - */ - private Boolean disableOffscreenCaching; - - /** - * 禁用字形缓存 - */ - private Boolean disableGlyphCaching; - - } - @Data @Builder @NoArgsConstructor @@ -323,55 +235,7 @@ public class TerminalPreferenceModel implements GenericsDataModel { @Builder @NoArgsConstructor @AllArgsConstructor - public static class RdpActionBarSettingModel implements IJsonObject { - - /** - * 位置 - */ - private String position; - - /** - * 显示设置 - */ - private Boolean display; - - /** - * 组合键 - */ - private Boolean combinationKey; - - /** - * 剪切板 - */ - private Boolean clipboard; - - /** - * 上传 - */ - private Boolean upload; - - /** - * 保存为 rdp 文件 - */ - private Boolean saveRdp; - - /** - * 断开连接 - */ - private Boolean disconnect; - - /** - * 关闭 - */ - private Boolean close; - - } - - @Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class InteractSettingModel implements IJsonObject { + public static class SshInteractSettingModel implements IJsonObject { /** * 快速滚动 @@ -423,13 +287,23 @@ public class TerminalPreferenceModel implements GenericsDataModel { */ private String wordSeparator; + /** + * 伪终端类型 + */ + private String terminalEmulationType; + + /** + * 保存在缓冲区的行数 + */ + private Integer scrollBackLine; + } @Data @Builder @NoArgsConstructor @AllArgsConstructor - public static class PluginsSettingModel implements IJsonObject { + public static class SshPluginsSettingModel implements IJsonObject { /** * 超链接插件 @@ -457,17 +331,153 @@ public class TerminalPreferenceModel implements GenericsDataModel { @Builder @NoArgsConstructor @AllArgsConstructor - public static class SessionSettingModel implements IJsonObject { + public static class RdpGraphSettingModel implements IJsonObject { /** - * 伪终端类型 + * 显示大小 */ - private String terminalEmulationType; + private String displaySize; /** - * 保存在缓冲区的行数 + * 显示宽度 */ - private Integer scrollBackLine; + private Integer displayWidth; + + /** + * 显示高度 + */ + private Integer displayHeight; + + /** + * 颜色深度 + */ + private Integer colorDepth; + + /** + * 无损压缩 + */ + private Boolean forceLossless; + + /** + * 启用壁纸 + */ + private Boolean enableWallpaper; + + /** + * 启用主题 + */ + private Boolean enableTheming; + + /** + * 启动平滑字体 + */ + private Boolean enableFontSmoothing; + + /** + * 启用窗口拖动 + */ + private Boolean enableFullWindowDrag; + + /** + * 启用桌面合成 + */ + private Boolean enableDesktopComposition; + + /** + * 启用菜单动画 + */ + private Boolean enableMenuAnimations; + + /** + * 禁用位图缓存 + */ + private Boolean disableBitmapCaching; + + /** + * 禁用离屏缓存 + */ + private Boolean disableOffscreenCaching; + + /** + * 禁用字形缓存 + */ + private Boolean disableGlyphCaching; + + /** + * 禁用图形加速 + */ + private Boolean disableGfx; + + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RdpActionBarSettingModel implements IJsonObject { + + /** + * 位置 + */ + private String position; + + /** + * 显示设置 + */ + private Boolean display; + + /** + * 组合键 + */ + private Boolean combinationKey; + + /** + * 剪切板 + */ + private Boolean clipboard; + + /** + * 上传 + */ + private Boolean upload; + + /** + * 保存为 rdp 文件 + */ + private Boolean saveRdp; + + /** + * 断开连接 + */ + private Boolean disconnect; + + /** + * 关闭 + */ + private Boolean close; + + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class RdpSessionSettingModel implements IJsonObject { + + /** + * 启用音频输入 + */ + private Boolean enableAudioInput; + + /** + * 启用音频输出 + */ + private Boolean enableAudioOutput; + + /** + * 驱动挂载模式 + */ + private String driveMountMode; } diff --git a/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java b/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java index 6bf4a98b..68458b26 100644 --- a/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java +++ b/orion-visor-modules/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/org/dromara/visor/module/infra/handler/preference/strategy/TerminalPreferenceStrategy.java @@ -51,23 +51,23 @@ public class TerminalPreferenceStrategy extends AbstractGenericsDataStrategy getDefaultSshRightMenuSetting() { + return Lists.of("selectAll", "copy", "paste", "search", "clear"); } /** @@ -147,6 +129,70 @@ public class TerminalPreferenceStrategy extends AbstractGenericsDataStrategy~!@#$%^&*|+=[]{}~?│") + .terminalEmulationType(TerminalType.XTERM.getType()) + .scrollBackLine(1000) + .build() + .toJsonString(); + } + + /** + * 获取默认插件设置 + * + * @return setting + */ + private String getDefaultSshPluginsSetting() { + return TerminalPreferenceModel.SshPluginsSettingModel.builder() + .enableWeblinkPlugin(true) + .enableWebglPlugin(true) + .enableUnicodePlugin(true) + .enableImagePlugin(false) + .build() + .toJsonString(); + } + + /** + * 获取 rdp 图形化默认设置 + * + * @return setting + */ + private String getDefaultRdpGraphSetting() { + return TerminalPreferenceModel.RdpGraphSettingModel.builder() + .displaySize("fit") + .displayWidth(0) + .displayHeight(0) + .colorDepth(24) + .forceLossless(true) + .enableWallpaper(true) + .enableTheming(true) + .enableFontSmoothing(true) + .enableFullWindowDrag(true) + .enableDesktopComposition(true) + .enableMenuAnimations(false) + .disableBitmapCaching(false) + .disableOffscreenCaching(false) + .disableGlyphCaching(false) + .disableGfx(false) + .build() + .toJsonString(); + } + /** * 获取 rdp 操作栏默认设置 * @@ -167,59 +213,15 @@ public class TerminalPreferenceStrategy extends AbstractGenericsDataStrategy getDefaultRightMenuSetting() { - return Lists.of("selectAll", "copy", "paste", "search", "clear"); - } - - /** - * 获取默认交互设置 - * - * @return setting - */ - private String getDefaultInteractSetting() { - return TerminalPreferenceModel.InteractSettingModel.builder() - .fastScrollModifier(true) - .altClickMovesCursor(true) - .rightClickSelectsWord(false) - .selectionChangeCopy(false) - .copyAutoTrim(false) - .pasteAutoTrim(false) - .rightClickPaste(false) - .enableRightClickMenu(true) - .enableBell(false) - .wordSeparator("/\\()\"'` -.,:;<>~!@#$%^&*|+=[]{}~?│") - .build() - .toJsonString(); - } - - /** - * 获取默认插件设置 - * - * @return setting - */ - private String getDefaultPluginsSetting() { - return TerminalPreferenceModel.PluginsSettingModel.builder() - .enableWeblinkPlugin(true) - .enableWebglPlugin(true) - .enableUnicodePlugin(true) - .enableImagePlugin(false) - .build() - .toJsonString(); - } - - /** - * 获取默认会话设置 - * - * @return setting - */ - private String getDefaultSessionSetting() { - return TerminalPreferenceModel.SessionSettingModel.builder() - .terminalEmulationType(TerminalType.XTERM.getType()) - .scrollBackLine(1000) + private String getDefaultRdpSessionSetting() { + return TerminalPreferenceModel.RdpSessionSettingModel.builder() + .enableAudioInput(false) + .enableAudioOutput(true) + .driveMountMode("ASSET") .build() .toJsonString(); } diff --git a/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/guacd/constant/GuacdConst.java b/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/guacd/constant/GuacdConst.java index 16c927ec..c0edfb9e 100644 --- a/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/guacd/constant/GuacdConst.java +++ b/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/guacd/constant/GuacdConst.java @@ -306,10 +306,15 @@ public interface GuacdConst { String DISABLE_OFFSCREEN_CACHING = "disable-offscreen-caching"; /** - * 禁用字形缓存 boolean 默认禁用 + * 禁用字形缓存 boolean */ String DISABLE_GLYPH_CACHING = "disable-glyph-caching"; + /** + * 禁用图形加速 boolean + */ + String DISABLE_GFX = "disable-gfx"; + /** * 远程应用名称 */ diff --git a/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/terminal/model/TerminalChannelExtra.java b/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/terminal/model/TerminalChannelExtra.java index 2dcc9fcb..92c39b95 100644 --- a/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/terminal/model/TerminalChannelExtra.java +++ b/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/terminal/model/TerminalChannelExtra.java @@ -126,6 +126,16 @@ public class TerminalChannelExtra { */ private Boolean disableGlyphCaching; + /** + * 禁用图形加速 + */ + private Boolean disableGfx; + + /** + * 驱动挂载模式 + */ + private String driveMountMode; + // -------------------- vnc -------------------- } diff --git a/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/terminal/session/RdpSession.java b/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/terminal/session/RdpSession.java index e9507cad..2f195757 100644 --- a/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/terminal/session/RdpSession.java +++ b/orion-visor-modules/orion-visor-module-terminal/orion-visor-module-terminal-service/src/main/java/org/dromara/visor/module/terminal/handler/terminal/session/RdpSession.java @@ -101,9 +101,10 @@ public class RdpSession extends AbstractGuacdSession i tunnel.setParameter(GuacdConst.ENABLE_FULL_WINDOW_DRAG, extra.getEnableFullWindowDrag()); tunnel.setParameter(GuacdConst.ENABLE_DESKTOP_COMPOSITION, extra.getEnableDesktopComposition()); tunnel.setParameter(GuacdConst.ENABLE_MENU_ANIMATIONS, extra.getEnableMenuAnimations()); + tunnel.setParameter(GuacdConst.DISABLE_BITMAP_CACHING, extra.getDisableBitmapCaching()); tunnel.setParameter(GuacdConst.DISABLE_OFFSCREEN_CACHING, extra.getDisableOffscreenCaching()); tunnel.setParameter(GuacdConst.DISABLE_GLYPH_CACHING, extra.getDisableGlyphCaching()); - tunnel.setParameter(GuacdConst.DISABLE_BITMAP_CACHING, extra.getDisableBitmapCaching()); + tunnel.setParameter(GuacdConst.DISABLE_GFX, extra.getDisableGfx()); // 音频 tunnel.setAudioMimeTypes(GuacdConst.AUDIO_MIMETYPES); tunnel.setParameter(GuacdConst.ENABLE_AUDIO_INPUT, extra.getEnableAudioInput()); @@ -153,8 +154,9 @@ public class RdpSession extends AbstractGuacdSession i extra.setEnableDesktopComposition(false); extra.setEnableMenuAnimations(false); extra.setDisableBitmapCaching(false); + extra.setDisableOffscreenCaching(false); extra.setDisableGlyphCaching(false); - extra.setDisableBitmapCaching(false); + extra.setDisableGfx(false); extra.setEnableAudioInput(false); extra.setEnableAudioOutput(false); } diff --git a/orion-visor-ui/src/store/modules/terminal/index.ts b/orion-visor-ui/src/store/modules/terminal/index.ts index a934a692..a7faab8b 100644 --- a/orion-visor-ui/src/store/modules/terminal/index.ts +++ b/orion-visor-ui/src/store/modules/terminal/index.ts @@ -1,13 +1,13 @@ import type { - TerminalInteractSetting, - TerminalPluginsSetting, TerminalPreference, TerminalRdpActionBarSetting, TerminalRdpGraphSetting, - TerminalSessionSetting, + TerminalRdpSessionSetting, TerminalShortcutSetting, TerminalSshActionBarSetting, TerminalSshDisplaySetting, + TerminalSshInteractSetting, + TerminalSshPluginsSetting, TerminalState } from './types'; import type { @@ -40,24 +40,24 @@ import TerminalTransferManager from '@/views/terminal/service/transfer/terminal- export const TerminalPreferenceItem = { // 新建连接类型 NEW_CONNECTION_TYPE: 'newConnectionType', - // 终端主题 - THEME: 'theme', + // ssh 主题 + SSH_THEME: 'sshTheme', // ssh 显示设置 SSH_DISPLAY_SETTING: 'sshDisplaySetting', - // rdp 图形化设置 - RDP_GRAPH_SETTING: 'rdpGraphSetting', // ssh 操作栏设置 SSH_ACTION_BAR_SETTING: 'sshActionBarSetting', + // ssh 右键菜单设置 + SSH_RIGHT_MENU_SETTING: 'sshRightMenuSetting', + // ssh 交互设置 + SSH_INTERACT_SETTING: 'sshInteractSetting', + // ssh 插件设置 + SSH_PLUGINS_SETTING: 'sshPluginsSetting', + // rdp 图形化设置 + RDP_GRAPH_SETTING: 'rdpGraphSetting', // rdp 操作栏设置 RDP_ACTION_BAR_SETTING: 'rdpActionBarSetting', - // 右键菜单设置 - RIGHT_MENU_SETTING: 'rightMenuSetting', - // 交互设置 - INTERACT_SETTING: 'interactSetting', - // 插件设置 - PLUGINS_SETTING: 'pluginsSetting', // 会话设置 - SESSION_SETTING: 'sessionSetting', + RDP_SESSION_SETTING: 'rdpSessionSetting', // 快捷键设置 SHORTCUT_SETTING: 'shortcutSetting', }; @@ -66,17 +66,17 @@ export default defineStore('terminal', { state: (): TerminalState => ({ preference: { newConnectionType: 'group', - theme: { + sshTheme: { schema: {} as TerminalThemeSchema } as TerminalTheme, sshDisplaySetting: {} as TerminalSshDisplaySetting, - rdpGraphSetting: {} as TerminalRdpGraphSetting, sshActionBarSetting: {} as TerminalSshActionBarSetting, + sshRightMenuSetting: [], + sshInteractSetting: {} as TerminalSshInteractSetting, + sshPluginsSetting: {} as TerminalSshPluginsSetting, + rdpGraphSetting: {} as TerminalRdpGraphSetting, + rdpSessionSetting: {} as TerminalRdpSessionSetting, rdpActionBarSetting: {} as TerminalRdpActionBarSetting, - rightMenuSetting: [], - interactSetting: {} as TerminalInteractSetting, - pluginsSetting: {} as TerminalPluginsSetting, - sessionSetting: {} as TerminalSessionSetting, shortcutSetting: { enabled: false, keys: [] @@ -100,11 +100,11 @@ export default defineStore('terminal', { // 加载偏好 const { data } = await getPreference('TERMINAL'); // theme 不存在则默认加载第一个 - if (!data.theme?.name) { + if (!data.sshTheme?.name) { const { data: themes } = await getTerminalThemes(); - data.theme = themes[0]; + data.sshTheme = themes[0]; // 更新默认主题偏好 - await this.updateTerminalPreference(TerminalPreferenceItem.THEME, data.theme); + await this.updateTerminalPreference(TerminalPreferenceItem.SSH_THEME, data.sshTheme); } // 移除禁用的快捷键 if (data.shortcutSetting?.enabled) { diff --git a/orion-visor-ui/src/store/modules/terminal/types.ts b/orion-visor-ui/src/store/modules/terminal/types.ts index 7c1a5119..cb067a25 100644 --- a/orion-visor-ui/src/store/modules/terminal/types.ts +++ b/orion-visor-ui/src/store/modules/terminal/types.ts @@ -14,15 +14,15 @@ export interface TerminalState { // 终端配置 export interface TerminalPreference { newConnectionType: string; - theme: TerminalTheme; + sshTheme: TerminalTheme; sshDisplaySetting: TerminalSshDisplaySetting; - rdpGraphSetting: TerminalRdpGraphSetting; sshActionBarSetting: TerminalSshActionBarSetting; + sshRightMenuSetting: Array, + sshInteractSetting: TerminalSshInteractSetting; + sshPluginsSetting: TerminalSshPluginsSetting; + rdpGraphSetting: TerminalRdpGraphSetting; rdpActionBarSetting: TerminalRdpActionBarSetting; - rightMenuSetting: Array, - interactSetting: TerminalInteractSetting; - pluginsSetting: TerminalPluginsSetting; - sessionSetting: TerminalSessionSetting; + rdpSessionSetting: TerminalRdpSessionSetting; shortcutSetting: TerminalShortcutSetting; } @@ -38,13 +38,44 @@ export interface TerminalSshDisplaySetting { cursorBlink?: boolean; } +// SSH 操作栏设置 +export interface TerminalSshActionBarSetting { + connectStatus?: boolean; + share?: boolean; + + [key: string]: unknown; +} + +// SSH 插件设置 +export interface TerminalSshPluginsSetting { + enableWeblinkPlugin: boolean; + enableWebglPlugin: boolean; + enableUnicodePlugin: boolean; + enableImagePlugin: boolean; +} + +// SSH 交互设置 +export interface TerminalSshInteractSetting { + fastScrollModifier: boolean; + altClickMovesCursor: boolean; + rightClickSelectsWord: boolean; + selectionChangeCopy: boolean; + copyAutoTrim: boolean; + pasteAutoTrim: boolean; + rightClickPaste: boolean; + enableRightClickMenu: boolean; + enableBell: boolean; + wordSeparator: string; + terminalEmulationType: string; + scrollBackLine: number; +} + // RDP 图形化设置 export interface TerminalRdpGraphSetting { displaySize?: string; displayWidth?: number; displayHeight?: number; - enableAudioInput?: boolean; - enableAudioOutput?: boolean; + colorDepth?: number; forceLossless?: boolean; enableWallpaper?: boolean; @@ -56,13 +87,7 @@ export interface TerminalRdpGraphSetting { disableBitmapCaching?: boolean; disableOffscreenCaching?: boolean; disableGlyphCaching?: boolean; -} - -// SSH 操作栏设置 -export interface TerminalSshActionBarSetting { - connectStatus?: boolean; - - [key: string]: unknown; + disableGfx?: boolean; } // RDP 操作栏设置 @@ -79,32 +104,11 @@ export interface TerminalRdpActionBarSetting { [key: string]: unknown; } -// 交互设置 -export interface TerminalInteractSetting { - fastScrollModifier: boolean; - altClickMovesCursor: boolean; - rightClickSelectsWord: boolean; - selectionChangeCopy: boolean; - copyAutoTrim: boolean; - pasteAutoTrim: boolean; - rightClickPaste: boolean; - enableRightClickMenu: boolean; - enableBell: boolean; - wordSeparator: string; -} - -// 插件设置 -export interface TerminalPluginsSetting { - enableWeblinkPlugin: boolean; - enableWebglPlugin: boolean; - enableUnicodePlugin: boolean; - enableImagePlugin: boolean; -} - -// 会话设置 -export interface TerminalSessionSetting { - terminalEmulationType: string; - scrollBackLine: number; +// RDP 会话设置 +export interface TerminalRdpSessionSetting { + enableAudioInput?: boolean; + enableAudioOutput?: boolean; + driveMountMode?: string; } // 终端快捷键设置 diff --git a/orion-visor-ui/src/views/terminal/components/setting/block-setting-item.vue b/orion-visor-ui/src/views/terminal/components/setting/block-setting-item.vue index 1b1a5e11..3dda1579 100644 --- a/orion-visor-ui/src/views/terminal/components/setting/block-setting-item.vue +++ b/orion-visor-ui/src/views/terminal/components/setting/block-setting-item.vue @@ -13,12 +13,12 @@
- - @@ -24,8 +24,8 @@ diff --git a/orion-visor-ui/src/views/terminal/components/setting/display/terminal-ssh-display-block.vue b/orion-visor-ui/src/views/terminal/components/setting/display/terminal-ssh-display-block.vue index 4d9a7bb6..6231e5d0 100644 --- a/orion-visor-ui/src/views/terminal/components/setting/display/terminal-ssh-display-block.vue +++ b/orion-visor-ui/src/views/terminal/components/setting/display/terminal-ssh-display-block.vue @@ -3,7 +3,7 @@

- 显示偏好 + SSH 显示偏好

@@ -99,7 +99,7 @@ 预览效果
-
@@ -127,7 +127,7 @@ const { toOptions, toRadioOptions } = useDictStore(); const { preference, updateTerminalPreference, sessionManager } = useTerminalStore(); - const background = preference.theme.schema.background; + const background = preference.sshTheme.schema.background; const previewTerminal = ref(); const formModel = ref({}); diff --git a/orion-visor-ui/src/views/terminal/components/setting/display/terminal-right-menu-block.vue b/orion-visor-ui/src/views/terminal/components/setting/display/terminal-ssh-right-menu-block.vue similarity index 95% rename from orion-visor-ui/src/views/terminal/components/setting/display/terminal-right-menu-block.vue rename to orion-visor-ui/src/views/terminal/components/setting/display/terminal-ssh-right-menu-block.vue index 2d5bb1b1..02ef7f63 100644 --- a/orion-visor-ui/src/views/terminal/components/setting/display/terminal-right-menu-block.vue +++ b/orion-visor-ui/src/views/terminal/components/setting/display/terminal-ssh-right-menu-block.vue @@ -3,7 +3,7 @@

- 右键菜单设置 + SSH 右键菜单设置

@@ -80,7 +80,7 @@ @@ -95,12 +95,12 @@ const { preference, updateTerminalPreference } = useTerminalStore(); const popupContainer = ref(); - const rightActionItems = ref>([...preference.rightMenuSetting]); + const rightActionItems = ref>([...preference.sshRightMenuSetting]); // // 监听同步 watch(rightActionItems, (v) => { // 同步 - updateTerminalPreference(TerminalPreferenceItem.RIGHT_MENU_SETTING, JSON.stringify(v), true); + updateTerminalPreference(TerminalPreferenceItem.SSH_RIGHT_MENU_SETTING, JSON.stringify(v), true); }, { deep: true }); // 实际操作项 diff --git a/orion-visor-ui/src/views/terminal/components/setting/general/terminal-general-setting.vue b/orion-visor-ui/src/views/terminal/components/setting/general/terminal-general-setting.vue index 2aba404b..113659c3 100644 --- a/orion-visor-ui/src/views/terminal/components/setting/general/terminal-general-setting.vue +++ b/orion-visor-ui/src/views/terminal/components/setting/general/terminal-general-setting.vue @@ -3,14 +3,14 @@

终端设置

- - - - - - + + + + + +
@@ -22,10 +22,10 @@ diff --git a/orion-visor-ui/src/views/terminal/components/setting/general/terminal-rdp-graph-block.vue b/orion-visor-ui/src/views/terminal/components/setting/general/terminal-rdp-graph-block.vue index 278c62ef..1d588c2f 100644 --- a/orion-visor-ui/src/views/terminal/components/setting/general/terminal-rdp-graph-block.vue +++ b/orion-visor-ui/src/views/terminal/components/setting/general/terminal-rdp-graph-block.vue @@ -3,7 +3,7 @@

- RDP 设置 + RDP 图形化设置

@@ -28,61 +28,61 @@ - - - - - - + + - - + + - - + + - - + + - - + + + + + + diff --git a/orion-visor-ui/src/views/terminal/components/setting/general/terminal-rdp-session-block.vue b/orion-visor-ui/src/views/terminal/components/setting/general/terminal-rdp-session-block.vue new file mode 100644 index 00000000..892324d3 --- /dev/null +++ b/orion-visor-ui/src/views/terminal/components/setting/general/terminal-rdp-session-block.vue @@ -0,0 +1,66 @@ + + + + + + + diff --git a/orion-visor-ui/src/views/terminal/components/setting/general/terminal-session-block.vue b/orion-visor-ui/src/views/terminal/components/setting/general/terminal-session-block.vue deleted file mode 100644 index a69b6c97..00000000 --- a/orion-visor-ui/src/views/terminal/components/setting/general/terminal-session-block.vue +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - diff --git a/orion-visor-ui/src/views/terminal/components/setting/general/terminal-interact-block.vue b/orion-visor-ui/src/views/terminal/components/setting/general/terminal-ssh-interact-block.vue similarity index 74% rename from orion-visor-ui/src/views/terminal/components/setting/general/terminal-interact-block.vue rename to orion-visor-ui/src/views/terminal/components/setting/general/terminal-ssh-interact-block.vue index 9973f300..9d2bdfbe 100644 --- a/orion-visor-ui/src/views/terminal/components/setting/general/terminal-interact-block.vue +++ b/orion-visor-ui/src/views/terminal/components/setting/general/terminal-ssh-interact-block.vue @@ -3,7 +3,7 @@

- 交互设置 + SSH 交互设置

@@ -56,9 +56,6 @@ - @@ -75,27 +72,49 @@ allow-clear /> + + + + + + + + + + diff --git a/orion-visor-ui/src/views/terminal/components/setting/general/terminal-plugins-block.vue b/orion-visor-ui/src/views/terminal/components/setting/general/terminal-ssh-plugins-block.vue similarity index 86% rename from orion-visor-ui/src/views/terminal/components/setting/general/terminal-plugins-block.vue rename to orion-visor-ui/src/views/terminal/components/setting/general/terminal-ssh-plugins-block.vue index 09e8bf58..520a18f5 100644 --- a/orion-visor-ui/src/views/terminal/components/setting/general/terminal-plugins-block.vue +++ b/orion-visor-ui/src/views/terminal/components/setting/general/terminal-ssh-plugins-block.vue @@ -3,7 +3,7 @@

- 插件设置 + SSH 插件设置

@@ -34,12 +34,12 @@ diff --git a/orion-visor-ui/src/views/terminal/components/setting/theme/terminal-theme-block.vue b/orion-visor-ui/src/views/terminal/components/setting/theme/terminal-ssh-theme-block.vue similarity index 94% rename from orion-visor-ui/src/views/terminal/components/setting/theme/terminal-theme-block.vue rename to orion-visor-ui/src/views/terminal/components/setting/theme/terminal-ssh-theme-block.vue index 317c64b9..4555d603 100644 --- a/orion-visor-ui/src/views/terminal/components/setting/theme/terminal-theme-block.vue +++ b/orion-visor-ui/src/views/terminal/components/setting/theme/terminal-ssh-theme-block.vue @@ -3,7 +3,7 @@

- 主题设置 + SSH 主题设置

@@ -49,7 +49,7 @@ @@ -86,14 +86,14 @@ }); // 同步 currentThemeName.value = theme.name; - await updateTerminalPreference(TerminalPreferenceItem.THEME, theme, true); + await updateTerminalPreference(TerminalPreferenceItem.SSH_THEME, theme, true); }; // 加载用户主题 onMounted(async () => { try { - const { data } = await getPreference>('TERMINAL', [TerminalPreferenceItem.THEME]); - currentThemeName.value = data[TerminalPreferenceItem.THEME]?.name; + const { data } = await getPreference>('TERMINAL', [TerminalPreferenceItem.SSH_THEME]); + currentThemeName.value = data[TerminalPreferenceItem.SSH_THEME]?.name; } catch (e) { } }); diff --git a/orion-visor-ui/src/views/terminal/components/setting/theme/terminal-theme-setting.vue b/orion-visor-ui/src/views/terminal/components/setting/theme/terminal-theme-setting.vue index ec244ab5..278a7e11 100644 --- a/orion-visor-ui/src/views/terminal/components/setting/theme/terminal-theme-setting.vue +++ b/orion-visor-ui/src/views/terminal/components/setting/theme/terminal-theme-setting.vue @@ -3,8 +3,8 @@

主题设置

- - + +
@@ -16,7 +16,7 @@ diff --git a/orion-visor-ui/src/views/terminal/components/view/sftp/sftp-editor.vue b/orion-visor-ui/src/views/terminal/components/view/sftp/sftp-editor.vue index 43b0bb42..9b8a0bb0 100644 --- a/orion-visor-ui/src/views/terminal/components/view/sftp/sftp-editor.vue +++ b/orion-visor-ui/src/views/terminal/components/view/sftp/sftp-editor.vue @@ -2,7 +2,7 @@ + :theme="preference.sshTheme.dark ? 'vs-dark' : 'vs'" />