diff --git a/orion-ops-ui/src/utils/bell.ts b/orion-ops-ui/src/utils/bell.ts
new file mode 100644
index 00000000..b89e73e1
--- /dev/null
+++ b/orion-ops-ui/src/utils/bell.ts
@@ -0,0 +1,33 @@
+/**
+ * 钟鸣
+ * @param frequency 蜂鸣器频率Hz
+ * @param duration 持续时间
+ */
+export const playBell = (frequency: number = 400, duration: number = .2) => {
+ try {
+ // 创建 AudioContext 对象
+ const audioCtx = new (window.AudioContext)();
+ const buffer = audioCtx.createBuffer(1, audioCtx.sampleRate, audioCtx.sampleRate);
+ const channelData = buffer.getChannelData(0);
+ // 获取正弦波形数据
+ const sampleRate = audioCtx.sampleRate;
+ const numSamples = Math.floor(duration * sampleRate);
+ const sineWaveData = [];
+ for (let i = 0; i < numSamples; ++i) {
+ const time = i / sampleRate;
+ // 计算当前样本点的值
+ const value = Math.sin(2 * Math.PI * frequency * time);
+ // 将值转换为-1到+1之间的范围内
+ sineWaveData[i] = value > 0 ? value : -value;
+ }
+ // 复制正弦波形数据到buffer中
+ for (let i = 0; i < sineWaveData.length; ++i) {
+ channelData[i] = sineWaveData[i];
+ }
+ const source = audioCtx.createBufferSource();
+ source.buffer = buffer;
+ source.connect(audioCtx.destination);
+ source.start();
+ } catch (e) {
+ }
+};
diff --git a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue
index 1e9d2c2d..3b8c5c26 100644
--- a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue
+++ b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue
@@ -13,6 +13,8 @@
+
+
@@ -33,9 +35,10 @@
import { TabType, InnerTabs } from '../../types/terminal.const';
import { useTerminalStore } from '@/store';
import { watch } from 'vue';
+ import NewConnectionView from '../new-connection/new-connection-view.vue';
import TerminalDisplaySetting from '../view-setting/terminal-display-setting.vue';
import TerminalThemeSetting from '../view-setting/terminal-theme-setting.vue';
- import NewConnectionView from '../new-connection/new-connection-view.vue';
+ import TerminalGeneralSetting from '../view-setting/terminal-general-setting.vue';
import TerminalView from '../xterm/terminal-view.vue';
const { tabManager, sessionManager } = useTerminalStore();
diff --git a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-left-sidebar.vue b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-left-sidebar.vue
index 1b12021d..614f7538 100644
--- a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-left-sidebar.vue
+++ b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-left-sidebar.vue
@@ -46,11 +46,6 @@
content: InnerTabs.DISPLAY_SETTING.title,
click: () => tabManager.openTab(InnerTabs.DISPLAY_SETTING)
},
- {
- icon: 'icon-stamp',
- content: InnerTabs.INTERACT_SETTING.title,
- click: () => tabManager.openTab(InnerTabs.INTERACT_SETTING)
- },
{
icon: 'icon-palette',
content: InnerTabs.THEME_SETTING.title,
diff --git a/orion-ops-ui/src/views/host/terminal/components/view-setting/terminal-general-setting.vue b/orion-ops-ui/src/views/host/terminal/components/view-setting/terminal-general-setting.vue
new file mode 100644
index 00000000..77065573
--- /dev/null
+++ b/orion-ops-ui/src/views/host/terminal/components/view-setting/terminal-general-setting.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
diff --git a/orion-ops-ui/src/views/host/terminal/components/view-setting/terminal-interact-block.vue b/orion-ops-ui/src/views/host/terminal/components/view-setting/terminal-interact-block.vue
new file mode 100644
index 00000000..7eec1dd6
--- /dev/null
+++ b/orion-ops-ui/src/views/host/terminal/components/view-setting/terminal-interact-block.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+ 交互设置
+
+
+
+
修改后会立刻保存, 刷新页面后生效
+
+
+
+
+
+
+
+
+
+
diff --git a/orion-ops-ui/src/views/host/terminal/components/view-setting/terminal-session-block.vue b/orion-ops-ui/src/views/host/terminal/components/view-setting/terminal-session-block.vue
new file mode 100644
index 00000000..7ed4419a
--- /dev/null
+++ b/orion-ops-ui/src/views/host/terminal/components/view-setting/terminal-session-block.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+ 会话设置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/orion-ops-ui/src/views/host/terminal/components/xterm/terminal-view.vue b/orion-ops-ui/src/views/host/terminal/components/xterm/terminal-view.vue
index a377bbda..d0c9f9c1 100644
--- a/orion-ops-ui/src/views/host/terminal/components/xterm/terminal-view.vue
+++ b/orion-ops-ui/src/views/host/terminal/components/xterm/terminal-view.vue
@@ -86,26 +86,7 @@
// 右键菜单补充
// 搜索 search color 配置
// 截屏
- // 主机获取逻辑 最近连接逻辑 偏好逻辑
-
-
- // TODO
- // 交互设置
- // 右键选中词条
- // 右键粘贴
- // 启用右键菜单
- // 自动将选中内容复制到剪切板
- // 粘贴时删除空格
- // 复制时删除空格
- // 分隔符 /\()"'-.,:;<>~!@#$%^&*|+=[]{}~?│ 在终端中双击文本将使用到这些符号
- // 自动检测 url 并可以点击
- // 支持显示图片 使用 sixel 打开图片
-
- // 终端设置
- // bell sound
- // terminal emulation type: xterm 256color
- // 回滚(ScrollBack)
- // 保存在缓冲区的行数
+ // 主机获取逻辑 最近连接逻辑
// 发送命令
const writeCommandInput = async (e: KeyboardEvent) => {
diff --git a/orion-ops-ui/src/views/host/terminal/handler/terminal-session.ts b/orion-ops-ui/src/views/host/terminal/handler/terminal-session.ts
index 1812ea70..43ffded3 100644
--- a/orion-ops-ui/src/views/host/terminal/handler/terminal-session.ts
+++ b/orion-ops-ui/src/views/host/terminal/handler/terminal-session.ts
@@ -48,7 +48,7 @@ export default class TerminalSession implements ITerminalSession {
this.inst = new Terminal({
...(preference.displaySetting as any),
theme: preference.theme.schema,
- fastScrollModifier: 'shift',
+ fastScrollModifier: 'ctrl',
fontFamily: preference.displaySetting.fontFamily + fontFamilySuffix,
});
// 注册插件
diff --git a/orion-ops-ui/src/views/host/terminal/index.vue b/orion-ops-ui/src/views/host/terminal/index.vue
index fb8a484d..81f9d0f5 100644
--- a/orion-ops-ui/src/views/host/terminal/index.vue
+++ b/orion-ops-ui/src/views/host/terminal/index.vue
@@ -68,7 +68,7 @@
// 注册关闭视口事件
onMounted(() => {
- // TODO 开发阶段
+ // FIXME 开发阶段
// window.addEventListener('beforeunload', handleBeforeUnload);
});
diff --git a/orion-ops-ui/src/views/host/terminal/types/terminal.const.ts b/orion-ops-ui/src/views/host/terminal/types/terminal.const.ts
index 61c10e5d..86ad813f 100644
--- a/orion-ops-ui/src/views/host/terminal/types/terminal.const.ts
+++ b/orion-ops-ui/src/views/host/terminal/types/terminal.const.ts
@@ -23,11 +23,6 @@ export const InnerTabs = {
title: '显示设置',
type: TabType.SETTING
},
- INTERACT_SETTING: {
- key: 'interactSetting',
- title: '交互设置',
- type: TabType.SETTING
- },
THEME_SETTING: {
key: 'themeSetting',
title: '主题设置',