Files
msime-windows/examples/skin-examples/skins/niya-demo/skin.toml
T
Lu Fan(SonnyCalcr) 1b875267db refactor: 移除 WebView2,界面只保留 Direct2D (#1013)
* refactor(engine): 语音独立工具改用原生托盘菜单,移除 WebView2

托盘菜单改用 Win32 弹出菜单,设置项改为用关联编辑器打开 config.toml,关于页改为消息框。删除 window_webview2 与两份 HTML 资源,windows-app 特性不再依赖 webview2 端口。

* refactor(server): 移除 WebView2,候选窗、工具栏、托盘菜单与设置窗口只保留 Direct2D

删除 src/webview2 与 webview_utils,小窗口的置顶、皮肤重载和工具栏状态缓存移到 window/small_windows,presenter 成为唯一路径,D2D 下的置顶时序与 cloak 行为保持不变。设置进程去掉 WebView2 宿主、鼠标转发与启动图,只构建原生窗口;旧快捷方式传入的 --d2d / --webview2 被忽略。删除 appearance.ui_backend 与 appearance.settings_ui_backend(读取、写入、设置页下拉框与两份配置模板),升级时由模板合并丢弃旧值。设置窗口的图片资源移到 server/assets/settings,安装到数据目录的 assets\settings。不再链接 WebView2Loader,vcpkg 去掉 webview2 端口。

* build(installer): 打包与 CI 不再处理 WebView2 页面和运行时

Prepare-PackageFiles 去掉 -UiHtmlDirectory 与 html 暂存,改为暂存 server/assets/settings;安装器不再检查 WebView2 Runtime、不再创建 ProgramData 下的 WebView2 用户数据目录,升级和卸载时清理旧版留下的 webview2 / webview2-settings 与数据目录里的 html。CI 删除设置页构建、契约同步检查和候选窗 DOM 测试,release 的打包任务不再依赖网页产物;dependabot 去掉 npm。第三方声明去掉 WebView2Loader。

* refactor(ui-html): 删除 WebView2 页面与设置页前端工程

候选窗、工具栏、托盘菜单、设置页、主题和契约副本都已没有使用者;设置窗口用到的图片资源已移到 server/assets/settings。sync-contracts.py 与 pnpm/Vite/TypeScript 工程一并删除,契约仍以 engine/contracts/webview 为唯一来源。

* docs(server): 文档改为只描述 Direct2D 界面

仓库地图去掉 ui-html,组件边界、uiAccess 与置顶时序、设置窗口和配置读写的说明改写为 Direct2D 唯一界面;安装说明去掉 WebView2 Runtime 检查,打包命令去掉 -UiHtmlDirectory;engine/contracts/webview 的说明改为设置窗口是唯一使用者,名字是历史遗留。

* docs(skins): 皮肤说明不再区分 WebView2 与 D2D 渲染器

v2 字段去掉「仅 WebView2」,改为说明由 Direct2D 原生渲染、部分字段仍在补全;颜色必须带 # 改为清单格式约定。随包的 skins/niya-demo/skin.toml 不改,免得用户机器上的同名皮肤在升级时被当成已修改而改名备份。

* docs(ui): demo 说明文字不再提 WebView2
2026-10-17 02:48:02 +08:00

170 lines
9.9 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 水杉输入法官方外部皮肤样例:演示候选框的装饰图、背景图、自定义圆角、配色和工具栏样式。
# 本文件写出了 schema_version 1 支持的全部键。除标注「必填」的以外都可以省略,省略的键沿用 base 皮肤。
# 所有图片路径都相对于本皮肤目录,且必须留在目录之内。
#
# 颜色写法:所有颜色键([candidate.*]、[candidate.*.menu]、[toolbar.*] 里除 show_selected_bar 外的键)
# 都接受下面任意一种,不能写颜色的是数字、布尔、枚举和路径类的键。
# - 十六进制:#rgb、#rgba、#rrggbb、#rrggbbaa,大小写均可。
# 必须带 #:这是清单格式的约定,与 CSS 写法一致;渲染器不带 # 也能认,但不要依赖它。
# 不透明度在末尾(#RRGGBBAA),不是 Windows 常见的 #AARRGGBB;例如 #e9e8e89d ≈ 62% 不透明。
# - rgb(r, g, b) / rgba(r, g, b, a):r、g、b 为 0–255,a 为 0–1。
# 例如 rgba(224, 138, 168, 0.28) 与 #e08aa847 等价。
# - transparent:全透明,等同 #0000。
# ---------------------------------------------------------------------------
# 基本信息
# ---------------------------------------------------------------------------
schema_version = 1 # 必填,皮肤格式版本,目前只能是 1
id = "niya-demo" # 必填,必须与目录名一致;小写字母、数字、. _ -,最长 64 字节
name = "Niya Demo" # 必填,设置页里显示的名字,最长 80 字节
version = "0.3.0" # 必填,皮肤自身的版本号,最长 32 字节
author = "Metasequoia IME contributors" # 可选,作者,最长 120 字节
description = "天元突破·妮娅:卡片上方右对齐的人物装饰、带星点的背景图、12dip 圆角,以及配套的悬浮工具栏配色。" # 可选,最长 500 字节
# 必填,继承的内置皮肤:fluent | wechat | graphite | willow_green | autumn_osmanthus | microsoft,
# 或与 msime 共享的基底:system | shuishan | light | paper | night | ink(按 fluent 结构绘制)。
# 下面没写的键、以及皮肤无法描述的排版(字号、间距、内边距)都取自 base。
base = "fluent"
# 必填,本皮肤支持的布局和主题;用户选了不支持的组合时不会套用本皮肤。
[supports]
layouts = ["horizontal", "vertical"] # horizontal(横排)| vertical(竖排)
themes = ["dark", "light"] # dark(深色)| light(浅色)
# ---------------------------------------------------------------------------
# 候选框外形(必填这张表,表内各键可省略)
# ---------------------------------------------------------------------------
[candidate_window]
# 卡片的最小宽度,0–1000;实际最小宽度还会被装饰图的 width_dip 撑大。
min_width_dip = 176
# 卡片圆角,0–32。不写则沿用 base 皮肤的圆角。
corner_radius_dip = 12
# 卡片外框线宽,0–4,可以是小数;颜色取下面的 border。写 0 就没有外框。
border_width_dip = 1.5
# 选中 / 悬停高亮的圆角,0–16;贴着卡片四角的角仍跟 corner_radius_dip。
item_corner_radius_dip = 6
# 卡片阴影:none | soft | strong,只影响候选卡片,不影响右键菜单。
shadow = "soft"
# 候选字体名,排在用户设置的字体前面,缺字时仍回落到用户字体;字号不由皮肤决定。
# UTF-8 最长 64 字节,不能含引号、反斜杠、逗号、分号、尖括号、花括号和反引号,一次只能写一个字体。
# Segoe UI 没有汉字,所以这里只改西文和数字,汉字仍用用户设置的字体。
font_family = "Segoe UI"
# 翻页箭头:true | false。横排时在候选右侧贴着最后一行,竖排时在最后一行下方、与序号左对齐;
# 颜色取 number,悬停底色取 hover。不写则沿用数据目录 skins\default\<base>\skin.toml 里的设置(出厂为 false)。
page_arrows = false
# 卡片上方的装饰图。不需要装饰就整张表不写;写了就必须给出 image、top_inset_dip 和 width_dip。
# 图片在 width_dip × top_inset_dip 的框里等比缩放,框贴在卡片上方,不与卡片重叠。
[candidate_window.decoration]
image = "assets/character.png" # 必填,图片路径
top_inset_dip = 88 # 必填,装饰框的高,大于 0、不超过 500
width_dip = 102 # 必填,装饰框的宽,大于 0、不超过 1000;与 408×353 的原图比例一致,框里不留空白
align = "right" # left | center | right,相对卡片
# 卡片背景图,画在底色之上、文字之下,按圆角裁剪。背景图对深浅两套主题都生效,
# 所以这里用的是大部分透明的纹理,而不是一张实心图。不需要就整张表不写;写了就必须给出 image。
[candidate_window.background]
image = "assets/background.png" # 必填,图片路径
fit = "cover" # cover(铺满裁切)| contain(完整显示)| stretch(拉伸)
opacity = 0.3 # 0–1
# ---------------------------------------------------------------------------
# 候选配色:深色、浅色各一套,键完全相同,都可省略
# 设置页里的「候选文字颜色」优先于 text、candidate_text 和 preedit_text。
# ---------------------------------------------------------------------------
[candidate.dark]
# 基础色
accent = "#e08aa8" # 主题色:预编辑光标、选中竖条的默认颜色
selected = "rgba(224, 138, 168, 0.28)" # 选中候选的底色
hover = "rgba(224, 138, 168, 0.16)" # 鼠标悬停候选的底色,也用于翻页箭头的悬停
surface = "#202020" # 卡片底色(背景图画在它上面)
border = "rgba(155, 155, 155, 0.18)" # 卡片外框颜色
text = "#e9e8e8" # 文字色,candidate_text 和 preedit_text 不写时用它
number = "rgba(233, 232, 232, 0.62)" # 候选序号,也是翻页箭头的颜色
translation = "#9d68d3" # 翻译文字,不写时取候选文字色的 62% 不透明度
translation_pos = "#e255a180" # 翻译里的词性(n. / adj. …),不写时与翻译同色
translation_separator = "#9d68d373" # 义项分隔符(; / ;),不写时与翻译同色
show_selected_bar = true # 是否在选中候选左侧画一道竖条:true | false
# 细分配色,不写时按注释里的规则回落
candidate_text = "#e9e8e8" # 普通候选的文字,回落到 text
preedit_text = "#f0b8cb" # 预编辑(拼音)文字,回落到 text
preedit_caret = "#e08aa8" # 预编辑光标,回落到 accent
selected_text = "#fff4f8" # 选中候选的文字,回落到 base 的选中文字色
selected_number = "rgba(233, 232, 232, 0.62)" # 选中候选的序号,回落到 base 的选中序号色
selected_translation = "#c4a4e5" # 选中候选的翻译,回落到 translation,再回落到选中文字色的 62% 不透明度
selected_translation_pos = "#e255a180"
selected_translation_separator = "#c4a4e573"
selected_bar = "#e08aa8" # 选中候选左侧的竖条,回落到 accent
preedit_background = "rgba(224, 138, 168, 0.10)" # 预编辑行底色,圆角同高亮圆角;不写时透明
preedit_divider = "rgba(224, 138, 168, 0.30)" # 预编辑行下方的 1px 分隔线;不写时没有
# 候选窗右键菜单,可省略
[candidate.dark.menu]
background = "#221a1e" # 菜单底色
border = "rgba(224, 138, 168, 0.38)" # 菜单边框
text = "#f6e4eb" # 菜单文字
hover = "rgba(224, 138, 168, 0.20)" # 菜单项悬停底色
[candidate.light]
# 基础色
accent = "#c45c7a"
selected = "rgba(196, 92, 122, 0.18)"
hover = "rgba(196, 92, 122, 0.10)"
surface = "#fff7fa"
border = "rgba(176, 80, 110, 0.22)"
text = "#1a1a1a"
number = "rgba(26, 26, 26, 0.55)"
translation = "#9065b0"
translation_pos = "#ad1a7280"
translation_separator = "#9065b073"
show_selected_bar = true
# 细分配色
candidate_text = "#1a1a1a"
preedit_text = "#9c3f5c"
preedit_caret = "#c45c7a"
selected_text = "#1a1a1a"
selected_number = "rgba(26, 26, 26, 0.55)"
selected_translation = "#795594"
selected_translation_pos = "#ad1a7280"
selected_translation_separator = "#79559473"
selected_bar = "#c45c7a"
preedit_background = "rgba(196, 92, 122, 0.06)"
preedit_divider = "rgba(176, 80, 110, 0.22)"
[candidate.light.menu]
background = "#fff7fa"
border = "rgba(176, 80, 110, 0.22)"
text = "#3a2a30"
hover = "rgba(196, 92, 122, 0.12)"
# ---------------------------------------------------------------------------
# 悬浮工具栏:所有键都可省略,不写的沿用 base
# ---------------------------------------------------------------------------
[toolbar]
corner_radius_dip = 8 # 工具栏圆角,0–32
[toolbar.dark]
background = "#221a1e" # 工具栏底色
border = "rgba(224, 138, 168, 0.38)" # 工具栏边框
handle = "#e08aa8" # 左侧拖动条
divider = "rgba(224, 138, 168, 0.30)" # 按钮之间的分隔线
icon = "#f6e4eb" # 图标颜色
hover = "rgba(224, 138, 168, 0.20)" # 按钮悬停底色
[toolbar.light]
background = "#fff7fa"
border = "rgba(176, 80, 110, 0.22)"
handle = "#c45c7a"
divider = "rgba(176, 80, 110, 0.22)"
icon = "#3a2a30"
hover = "rgba(196, 92, 122, 0.12)"
# ---------------------------------------------------------------------------
# 授权信息:给人看的声明,输入法不读取
# ---------------------------------------------------------------------------
[license]
code = "MIT" # skin.toml 本身的授权
assets = "UNVERIFIED-DEMO-ONLY" # 图片等素材的授权
source = "Replace this value with the asset source and permission before publishing." # 素材来源与授权说明