Skip to content

术语表

本页面统一解释 Uniquenium 文档中使用的核心术语。这些概念存在层级包含关系,理解它们的区别是使用和开发 Uniquenium 的基础。

概念层级一览

主题 (Theme)
 ├── 组件组 / 页面布局
 ├── 全局外观设置(颜色、字体、壁纸、光标)
 ├── 插件 (Plugin)
 │    └── 组件 (Component) ← 由控件组合而成
 │         └── 控件 (Control)
 └── 模板 (Template) ← 组件组的预设快照

核心术语

控件(Control)

组成用户界面的最基础、不可再分的视觉元件。

控件是 UniDesk 控件库提供的原子级 UI 单元,例如按钮、文本框、图标、复选框等。控件本身不能直接显示在桌面上,而是作为构建组件的「积木」被组合使用。

  • 来源:由 Uniquenium 官方提供的 UniDesk 控件库(UniDesk.Controls 模块)
  • 数量:30+ 种(如 UniDeskButtonUniDeskTextUniDeskWindow 等)
  • 能否独立显示:❌ 不能直接拖到桌面,必须在组件内使用
  • 命名规范UniDesk + 控件名(如 UniDeskButton

类比

控件就像是 LEGO 积木中的单个零件——一块砖、一个轮子、一扇窗。它们本身不是完整的作品,但是组合起来可以构建任何东西。

📖 详见:UniDesk 控件库概览


组件(Component)

由一个或多个控件组合而成的独立功能单元,直接渲染在桌面上供用户使用。

组件是用户在桌面上实际看到和交互的对象。每个组件由插件定义,用户可在插件提供的范围内自由组合控件,定制组件的外观和行为。

  • 来源:由插件提供
  • 能否独立显示:✅ 直接显示在桌面上
  • 包含关系:组件 = 多个控件 + 布局 + 逻辑
  • 标识:每个组件实例都有唯一的 标识符

类比

如果控件是 LEGO 零件,那么组件就是用这些零件拼装成的一辆小汽车、一栋小房子——它是一个完整可用的作品,摆放在桌面上。

示例:一个「时钟组件」可能由以下控件组合而成:

  • UniDeskFrame(外框)
  • UniDeskText(时间显示)
  • UniDeskText(日期显示)
  • UniDeskButton(设置按钮)

插件(Plugin)

Uniquenium 的扩展单元,一个插件可以包含一个或多个组件,以及配套的选项窗口、设置和多语言资源。

插件是 Uniquenium 扩展功能的主要方式。每个插件是一个独立的模块,可以:

  • 提供一个或多个组件供用户添加到桌面
  • 提供组件对应的选项窗口(可选),让用户配置组件参数
  • 提供插件全局设置窗口(规划中),管理插件级偏好
  • 自带多语言资源,支持国际化
组成部分是否必需说明
组件✅ 必需至少提供一个组件
选项窗口❌ 可选组件的配置 UI
设置窗口❌ 可选插件全局设置(后期制作)
语言文件❌ 可选多语言翻译资源

类比

插件就像一个「组件礼包」——它打包了一组相关的组件以及配套的配置工具。安装一个天气插件,你就同时获得了「当前天气」「天气预报」「空气质量」等多个组件,以及它们的设置入口。

📖 详见:插件开发指南


标识符(identification)

系统为每个组件实例分配的唯一标识,用于在内部引用、定位和管理。

关于命名

「identification」一词并非标准英语(正确说法应为 identifier 或 ID),但它作为 Uniquenium 代码与文档中的专有术语被保留使用。在阅读源码或 API 时请将其理解为「标识符」。

  • 作用:区分同一类型的多个组件实例(例如桌面上有 3 个时钟组件)
  • 生成方式:由系统自动生成(通常基于 UUID)
  • 生命周期:组件创建时分配,组件删除时失效
  • 用途:脚本引用、事件绑定、属性查询、组件间通信
qml
// 示例:通过标识符获取组件并修改属性
var com = UniDeskComManager.getComByIdentification("com_a1b2c3d4")
com.x = 100
com.visible = true

模板(Template)

一组预先配置好的组件集合,保存了组件的布局、属性和关联关系,支持预设参数。

模板是「组件组的快照」,让用户可以:

  • 快速复用:一键应用一整套桌面布局,无需逐个添加组件
  • 备份分享:将精心设计的桌面配置导出为 .uniq-template 文件
  • 预设参数:模板可保存组件的预设值,导入时可选择应用或自定义

拼写说明

正确拼写为 Template。早期版本中曾被误拼为 "templete"(未查词典的生造拼写),如果你在旧文档、代码变量或文件名中看到 templete,请理解为 template。新版本已统一修正。

  • 文件格式.uniq-template(本质是 ZIP 压缩包)
  • 包含内容:组件树结构 + 各组件属性 + 预览图
  • 不包含:外部图片/字体资源、插件本身(需另行安装)

类比

模板就像「桌面布局的存档」——你花了一下午精心摆放的桌面,可以存成模板,下次重装系统或换电脑时一键恢复,也可以发给朋友让他们体验同款桌面。

📖 详见:模板系统


主题(Theme)

一套完整的桌面配置方案,包含所有组件组页面布局、全局外观设置、已启用的插件列表以及关联的模板。

主题是 Uniquenium 中最高层级的配置单元,切换主题即可一键切换整套桌面风格。一个主题包含:

组成部分说明
组件组页面布局所有页面的组件摆放、尺寸、层级
全局外观设置主题色、深浅模式、字体、壁纸、光标样式
插件列表该主题下启用的插件及版本
模板关联该主题引用的模板集合

类比

主题就像手机上的「主题商店」——不只是换张壁纸那么简单,而是图标、字体、铃声、布局一起换。Uniquenium 的主题也是一站式切换整套桌面体验。


术语关系对照表

术语英文层级能否独立显示由谁提供
控件Control最底层(原子)UniDesk 控件库(官方)
组件Component中间层(分子)✅ 桌面显示插件
插件Plugin扩展层(礼包)❌(提供组件)开发者 / 社区
模板Template预设层(快照)❌(应用后显示)用户导出 / 社区分享
主题Theme顶层(方案)❌(应用后生效)用户 / 官方预设
标识符identification内部引用系统自动生成

常见混淆辨析

Q: 「控件」和「组件」有什么区别?

控件是 UI 的原子单元(如一个按钮),不能独立显示在桌面;组件是由控件组合而成的功能单元(如一个时钟),可以直接显示在桌面。

✅ 正确说法:「我在桌面上添加了一个时钟组件」 ❌ 错误说法:「我在桌面上添加了一个时钟控件

Q: 「插件」和「组件」有什么区别?

插件是容器/礼包,组件是插件提供的具体内容。一个插件可以包含多个组件。

✅ 正确说法:「我安装了天气插件,它提供了 3 个天气相关的组件」 ❌ 错误说法:「我安装了一个天气组件

Q: 「模板」和「主题」有什么区别?

模板保存的是单个组件组的布局快照;主题是整套桌面配置(包含多个组件组布局 + 外观 + 插件 + 模板)。

✅ 正确说法:「我切换了一个主题,整个桌面风格都变了」 ✅ 正确说法:「我把这个面板导出为模板,方便以后复用」


在代码中的体现

qml
// === 控件(Control)===
// 来自 UniDesk.Controls 模块,是构建组件的原子单元
import UniDesk.Controls 1.0

UniDeskButton {           // ← 这是控件
    contentText: "点我"
}

// === 组件(Component)===
// 由插件定义,组合多个控件,可显示在桌面
// 通常位于 Plugins/MyPlugin/Components/ 目录
Item {
    id: clockComponent    // ← 这是组件(由控件组合而成)
    
    UniDeskFrame { ... }  // 控件
    UniDeskText { ... }   // 控件
    UniDeskText { ... }   // 控件
}

// === 标识符(identification)===
// 每个组件实例的唯一 ID
var myCom = UniDeskComManager.createCom("ClockPlugin.ClockComponent")
console.log(myCom.identification)  // 例如 "com_a1b2c3d4-e5f6-7890"

// === 插件(Plugin)===
// 通常是一个文件夹,包含 plugin.json + 组件 + 选项窗口
// Plugins/WeatherPlugin/
//   ├── plugin.json
//   ├── CurrentWeather.qml      (组件)
//   ├── WeatherForecast.qml     (组件)
//   └── WeatherOptions.qml      (选项窗口)

// === 模板(Template)===
// .uniq-template 文件,组件组的预设快照
// 加载方式:
UniDeskComManager.loadTemplate("file:///C:/Templates/MyPanel.uniq-template")

// === 主题(Theme)===
// 完整的桌面配置方案,包含上述所有内容
// 切换方式:
UniDeskSettings.applyTheme("file:///C:/Themes/DarkMode.uniq-theme")

相关文档

遵循 CC BY-SA 4.0 协议开源文档。