THEME AUTHORING GUIDE

从一组颜色,
到客厅里的新风格。

power-tv 主题包只包含配置与图片,不包含可执行代码。你可以从官方模板开始,完成配色后把它发布到社区。

选择主题包格式

三种格式使用同一份 theme.json,区别只在是否包含图片资源。

.ptheme

推荐格式。本质是 ZIP 容器,可以携带预览图和背景图,便于在 power-tv 与社区之间分享。

.zip

与 .ptheme 内容完全相同,仅扩展名不同。适合使用常见压缩工具制作和检查。

.json

直接上传 theme.json,适合纯配色主题。不能引用背景图片,也不会包含独立预览图。

六步完成一个主题

先完成最小可用版本,再逐步补充深色配色和素材。

01

获取模板与 Schema

复制官方模板开始编辑。模板包含必需字段;JSON Schema 可以为编辑器提供补全和校验,完整示例可用于了解可选字段的组织方式。

02

填写元数据与版本

以下字段决定主题在社区和 power-tv 中的身份。名称与描述可使用字符串,或包含 en、zh-CN 等键的本地化对象。

schemaVersion
当前固定为 1。
id
3–64 位字母、数字、点、下划线或连字符;不能包含连续点号,也不能使用 builtin. 前缀。
name
必填,每个语言版本最多 64 个字符。
description
可选,每个语言版本最多 512 个字符。
version
建议使用主.次.修订,例如 1.0.0;同一 ID 的每个版本只能发布一次。
minAppVersion
可选,声明主题所需的最低 power-tv 版本。
03

设计浅色与深色配色

schemes.light 是必需项,schemes.dark 可省略。primary 和 surface 足以建立基础风格;其余 Material 3 角色可按需补充,未指定的角色由 power-tv 派生。

建议明确设置 onPrimary、onSurface 等前景角色,并检查文字与背景的对比度。颜色支持 #RGB、#RRGGBB 和 #AARRGGBB。

还可配置 dataViz 图表强调色、系统字体、卡片圆角和仪表盘布局。使用 Material Theme Builder 时,只需将导出结果中的颜色角色整理到 schemes 中。

04

添加可选图片

将 theme.json 放在压缩包根目录。preview.webp 用于社区预览;背景图必须位于 assets 目录,并在 backdrop.image 中填写对应路径。

my-theme.ptheme
├── theme.json
├── preview.webp
└── assets/
    └── backdrop.webp
  • 图片使用 PNG、JPEG 或 WebP,扩展名必须与真实格式一致。
  • 背景路径示例:assets/backdrop.webp;dim 取值为 0–0.8。
  • 确保拥有图片、字体等素材的使用和再发布授权。
05

打包并检查

在包含 theme.json 的工作目录中打包。下面命令包含可选预览图和 assets 目录;没有这些素材时,从命令中移除对应项,或直接使用 .json。

cd my-theme
zip -r ../my-theme.ptheme theme.json preview.webp assets

不要先打包外层目录,否则 theme.json 会位于子目录而无法读取。上传前可解压检查结构,并在 power-tv 中预览实际效果。

06

发布到社区并导入 power-tv

使用 GitHub 登录社区后上传主题包。服务端校验通过后会公开展示;后续更新必须保持相同主题 ID,并使用未发布过的新版本号。已发布版本不可覆盖,历史版本仍可下载。

在 power-tv 中打开“设置 → 主题包 → 导入”,选择下载的 .ptheme、.zip 或 .json 文件,预览确认后应用。

上传安全限制

社区与 power-tv 都会检查不可信主题包,超限或结构不安全的文件会被拒绝。

10 MiB上传包最大值
8 MiBZIP 实际解压总量
64ZIP 条目上限
256 KiBtheme.json 上限
4 MiB单张图片上限
400 万像素单张图片像素上限

主题包不能包含脚本、可执行文件、绝对路径或 .. 路径段。ZIP 不支持加密、多磁盘和 ZIP64;重复条目、损坏图片及伪造扩展名也会被拒绝。

需要完整的字段参考?

上游官方文档维护最新的字段、布局预设、导入行为与已知边界。

阅读官方文档