换装第一步:主题改的是什么
纯黑背景看久了,难免想给家里的大电视换换气。CleanYourTV 的答案是「主题」:不改代码、不重新构建,只靠推送一份配置,就能把首页的背景、壁纸和布局换成另一副模样。
主题机制有三个关键词,先记住它们:
- 21 套:项目仓库随附 21 套主题(含内置的 default 默认主题),开箱即有得选。
- config.json:一套主题就是一份
config.json配置,规定背景、壁纸、布局长什么样。 - Wi-Fi 推送:主题通过 Wi-Fi 从电脑推送到电视,无需重新构建,无需数据线。
也就是说,换主题的成本低到「喝口水的时间」——挑一套、推过去、看一眼。不喜欢,推回 default 就好。下面按「怎么挑、怎么推、怎么收场」的顺序讲。
21 套主题:从 default 开始逛
21 是个适合慢慢逛的数字。建议的尝鲜顺序:
- 先用 default:内置默认主题就是你安装后见到的样子,纯黑背景、原版布局。把它作为「原点」,之后每换一套,都和它对比,才知道自己喜欢的是哪一口。
- 再挑风格接近的:有的主题只微调背景色或壁纸,和 default 差别小,适合作为第一步试探。
- 最后试反差大的:布局变化明显、视觉风格强烈的那几套,喜欢的人很惊喜,无感的人推回 default 也只花一分钟。
挑选时只有一个判断标准:坐在沙发上远看三秒,舒不舒服。主题是氛围件,不是参数件,没有「哪套最好」,只有「你家客厅适合哪套」。
换主题不需要挑黄道吉日,但建议挑一个「接下来半小时没人看电视」的时段:推送、加载、环视客厅、叫家人过来看一眼,满意就留下,不满意当场换。21 套主题的意义不在于一次试完,而在于你随时拥有「不满意就换」的底气——这套机制把「电视长什么样」从厂商的发布会,变成了你家的家务事。
推送机制:一份 config.json 的旅行
换主题的技术动作,本质上是把一份 config.json 从电脑送到电视,让首页按新配置重新打扮自己。流程与第 4 章的工具链一脉相承:
flowchart LR
A[电脑 themes/ 目录挑主题] --> B[生成/确认该主题的 config.json]
B --> C[经 Wi-Fi 推送到电视]
C --> D[首页加载新配置]
D -->|背景/壁纸/布局焕然一新| E[日常使用]
E -->|想再换| A
项目为此提供了专用工具 tools/theme.sh,主题文件则统一放在仓库的 themes/ 目录下。对普通用户,理解到这个程度就够了:主题在电脑侧的 themes/ 里,推送到电视的是一份 config.json,推送用的是随项目提供的工具,不需要自己拼命令。
有三个值得知道的事实:
- 无需重新构建。这是主题机制对用户最友好的一点:它不是刷机,不会动系统,也不影响你已经做过的禁用与隐藏。
- 改动可逆。任何时候推送 default 的配置,首页即回到初始模样。
- 和 config.xml 各管各的。上一篇讲的
config.xml管行为(dock、行列数、隐藏清单),主题的config.json管外观(背景、壁纸、布局),互不打架。
模块卡片:应用把功能「递」到首页
主题解决「首页长什么样」,模块卡片解决「首页上还有什么」。
所谓模块卡片(module cards),是这样一个机制:任何电视应用都可以申请在首页提供一个磁贴。这个磁贴不一定只是「点开我」,它可以把应用的某个功能、某个状态直接呈现到首页——比如显示待续播的内容、显示当前的天气。是否授权,完全由用户逐项决定:应用提交申请,你在电视上确认,它才出现在首页。
模块卡片的授权逻辑值得多说两句,因为它关系到你的电视干不干净:
| 环节 | 谁决定 | 说明 |
|---|---|---|
| 应用申请提供磁贴 | 应用方 | 应用主动声明「我能提供一块卡片」 |
| 是否授权 | 用户 | 逐项确认,不想要的不给 |
| 卡片出现在首页 | 用户授权后 | 出现在网格,参与常规聚焦操作 |
「逐项授权」这四个字是关键:没有任何应用能未经同意就往你的首页塞东西。这与你过去经历的「预装首页自己往桌面塞推广」正好相反——在这里,首页内容的主权在用户手里。授权也不是一锤子买卖:当初同意过的卡片,后来反悔了,可以再次进入授权管理把它撤下,磁贴随即从首页消失,而应用本身照常保留。定期去授权列表里看一眼,撤掉那些当初手滑同意、如今已无感的卡片,是保持首页清爽的好习惯。
什么样的应用适合用模块卡片?一个简单的判断标准:它有没有一个你希望「不打开应用也能看到」的状态。有,就值得授权一块卡片;没有,传统的「点开我」磁贴就够了,不必为了上首页而上首页。
add-ons:可选模块的安身之处
社区和厂商会为 CleanYourTV 提供一些可选的附加应用(add-ons),它们以模块卡片的形式接入首页,放在仓库的 addons/ 目录。这里有一个对系统稳定性很重要的设计:add-ons 不编入 launcher。
「不编入 launcher」意味着:launcher 本体保持独立和精简,附加功能是外挂式接入。装与不装、装哪几个,都由你决定;某一款 add-on 出了问题,也不会连带 launcher 本身。对用户的实操建议:
- 先只装「明确解决我某个痛点」的 add-ons,别把 add-ons 当成必装集。
- 新装的 add-on 先在首页用几天,确认稳定再长期保留。
- 长时间不用的,移除即可——模块卡片随授权管理走,首页不会留下残骸。
时钟屏保:让时钟慢慢散步
电视屏幕有一个物理宿命:烧屏。长时间静止的高对比画面,会在面板上留下难以消退的残影。新首页自带的时钟屏保(Clock screensaver)就是为此准备的:进入屏保后,屏幕上显示时钟,而时钟并非钉在一个位置——它在一层光晕之上缓慢漂移,画面持续轻微位移,避免同一像素点长期点亮。
使用上有三个细节:
- 进入条件:电视闲置达到系统设定的屏保时间后自动进入,无需手动操作。
- ** motion 很轻**:漂移速度刻意放慢,既能防烧屏,又不会在客厅里形成扰人的亮影。
- 退出方式:按任意遥控键即可唤回,回到首页或回到你之前的界面。
把它和 reduced motion 区分开:reduced motion 收敛的是首页操作界面的动效,时钟屏保是闲置时的独立功能,两者互不影响。担心动画敏感的用户,可以首页动效减弱、时钟屏保照常开着,防烧屏不耽误。
速查与提醒
| 想做的事 | 怎么做 | 注意 |
|---|---|---|
| 换主题 | 在 themes/ 里挑,推送对应 config.json | 21 套含 default,可随时换回 |
| 推主题工具 | tools/theme.sh | 无需重新构建 |
| 恢复原样 | 推送 default 主题配置 | 一分钟内还原 |
| 让应用上首页 | 应用申请模块卡片,用户逐项授权 | 不授权不上首页 |
| 装附加功能 | addons/ 目录下的可选应用 | 不编入 launcher,可随时移除 |
| 防烧屏 | 保持时钟屏保开启 | 时钟缓漂,闲置自动进入 |
最后提醒两条:其一,主题和 add-ons 都属于「外观与可选功能层」,折腾它们不影响系统底层,放心试;其二,每次只推一套主题、只装一个 add-on,出问题时才定位得动。下一篇讲 App 资源库与磁贴菜单——那些被你藏起来、收起来的应用,怎么一次找回来。
