跳转到内容

主题

OxideTerm 包含一个全面的主题引擎,让你可以自定义应用外观的方方面面——从终端 ANSI 颜色到整个 UI 界面。

OxideTerm 附带 30+ 内置主题,均针对终端可读性优化。默认深色主题专为长时间终端工作设计,精心选择了对比度比例。

主题涵盖多种风格:经典深色/浅色、Dracula、Solarized、Monokai、Nord、One Dark、Gruvbox、Tokyo Night 等。

通过带实时预览的可视化编辑器创建自己的主题。更改即时可见——无需重启。

自定义全部 16 种 ANSI 颜色加 4 个额外字段:

字段描述
ANSI 0–7标准颜色(黑、红、绿、黄、蓝、品红、青、白)
ANSI 8–15高亮/粗体变体
前景色默认文本颜色
背景色终端背景
光标色光标颜色
选区色文本选择高亮

通过 CSS 自定义属性自定义整个应用 UI:

变量用途
--theme-bg主背景
--theme-bg-panel面板/侧边栏背景
--theme-bg-hover悬停状态背景
--theme-bg-active激活/按下状态
--theme-bg-secondary次要背景区域
--theme-bg-elevated浮起表面(对话框、菜单)
--theme-bg-sunken凹陷表面(输入框、凹槽)
变量用途
--theme-text主文本颜色
--theme-text-muted柔和/次要文本
--theme-text-secondary第三级文本(时间戳、提示)
--theme-text-heading标题文本颜色
变量用途
--theme-border标准边框
--theme-border-strong强调边框
--theme-divider分隔线
变量用途
--theme-accent主强调色(按钮、链接)
--theme-accent-hover强调色悬停状态
--theme-accent-text强调色背景上的文本
--theme-accent-secondary次要强调色元素
变量用途
--theme-success成功指示器
--theme-warning警告指示器
--theme-error错误指示器
--theme-info信息指示器
--theme-selection非终端选区颜色
  • 字体系列 — 终端等宽字体
  • 字体大小 — 像素值
  • 行高 — 行间距

主题引擎可自动从终端 ANSI 调色板生成 UI 颜色

  1. 设置你偏好的终端 ANSI 颜色(16 种标准颜色)
  2. 在主题编辑器中点击 自动衍生
  3. OxideTerm 分析调色板的色相、饱和度和亮度
  4. 生成与终端调色板协调一致的背景色、文本色、边框色和强调色

这意味着你可以从任何终端配色方案出发,一键获得匹配的完整应用主题。

自动衍生算法将终端颜色映射到 UI 颜色:

终端源生成的 UI 颜色
backgroundbgbgPanel (+15)、bgHover (+30)、bgActive (+40)、bgSecondary (+10)
foregroundtext
brightBlacktextMuted;与前景色混合 → textSecondary
backgroundborder (+30)、divider (+20)
cursoraccentaccentHover (−20);与背景色混合 → accentText
brightBlackaccentSecondary
greensuccess
yellowwarning
rederror
blueinfo

+N 表示对每个 RGB 通道添加固定增量(钳制在 0–255)。用户始终可以手动覆盖任何衍生颜色。

可视化主题编辑器提供:

  • 主题名称 输入 — 自由文本;自动生成 slug 作为主题 ID
  • 基于 下拉菜单 — 创建新主题时可从任何内置主题复制
  • 实时预览 — 迷你终端模拟,带彩色提示符、git 输出和闪烁光标;UI 镀铬条显示强调色按钮、悬停状态、面板和语义状态点
  • 终端颜色标签 — 4 列 20 个色块网格,每个带原生取色器和十六进制输入(#RRGGBB
  • UI 颜色标签 — 五个分组区域(背景、文本、边框、强调色、状态色),带”从终端自动衍生”按钮
  • 保存 — 持久化到 localStorage 并立即生效
  • 删除 — 移除自定义主题(仅编辑模式)
  1. 打开 设置外观
  2. 浏览内置主题并即时预览
  3. 选择主题即时生效——无需重启
  4. 点击新建主题并使用可视化编辑器创建自定义主题

内置主题在 CSS [data-theme="..."] 块中定义 UI 变量。选择内置主题时,<html> 元素的 data-theme 属性被更新,xterm.js 接收对应的配色方案。

自定义主题完全绕过 data-theme。通过 style.setProperty()<html> 元素上直接设置所有 19+ CSS 变量,利用 CSS 优先级覆盖内置主题块。

自定义主题存储在 localStorageoxide-custom-themes 键下:

{
"custom:my-neon": {
"name": "My Neon",
"terminalColors": {
"background": "#0a0a0f",
"foreground": "#e0e0ff",
"cursor": "#ff00ff",
"black": "#1a1a2e",
"red": "#ff3366"
},
"uiColors": {
"bg": "#0a0a0f",
"bgPanel": "#14142a",
"accent": "#ff00ff",
"success": "#00ff88",
"warning": "#ffcc00",
"error": "#ff3366",
"info": "#3388ff"
}
}
}

主题 ID 遵循 custom:{slug} 模式,slug 由显示名称衍生(小写,非字母数字字符替换为连字符,保留 CJK 字符)。

  • 导出:将自定义主题保存为 JSON 文件
  • 导入:从设置面板加载 JSON 主题文件
  • 主题 JSON 文件包含所有终端颜色、CSS 变量和字体设置,单个文件即可移植