🔨 修改终端配置.

This commit is contained in:
lijiahangmax
2025-06-29 00:48:18 +08:00
parent fa389f611e
commit b55efe035d
30 changed files with 542 additions and 487 deletions

View File

@@ -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<TerminalPreference>('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) {

View File

@@ -14,15 +14,15 @@ export interface TerminalState {
// 终端配置
export interface TerminalPreference {
newConnectionType: string;
theme: TerminalTheme;
sshTheme: TerminalTheme;
sshDisplaySetting: TerminalSshDisplaySetting;
rdpGraphSetting: TerminalRdpGraphSetting;
sshActionBarSetting: TerminalSshActionBarSetting;
sshRightMenuSetting: Array<string>,
sshInteractSetting: TerminalSshInteractSetting;
sshPluginsSetting: TerminalSshPluginsSetting;
rdpGraphSetting: TerminalRdpGraphSetting;
rdpActionBarSetting: TerminalRdpActionBarSetting;
rightMenuSetting: Array<string>,
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;
}
// 终端快捷键设置