# 主题开发者文档

## 主题说明

用户可以根据自己需求进行主题切换。也可以开发出自己的主题。

主题支持定义修改：桌面壁纸、应用图标、光标、系统字体、字体大小、活动用色、控件底色、窗口圆角大小等。同时支持分别定义深浅色主题，可设置为按当地日出日落时间自动切换深浅色主题。

## 主题文件

系统主题安装在/usr/share/deepin-themes/目录下

主题文件最最要的是主题目录下的index.theme文件，index.theme文件记录了主题中桌面壁纸、应用图标、光标、系统字体、字体大小、活动用色、控件底色、窗口圆角大小等的值，以及深浅色主题。

index.theme文件示例如下：

    [Deepin Theme]Name=flowName[zh_CN]=行云Comment=like a moving cloud and flowing riverComment[zh_CN]=像移动的云和流动的河流# 默认主题，通常为浅色主题DefaultTheme=DefaultTheme# [深色主题，可选，配置为覆盖默认主题配置，即深色主题中没有的会用默认主题里的配置]DarkTheme=DarkTheme# [是否在主题选择用户界面中隐藏，不给出则为false]Hidden=false# 示例图片，用','分隔，第一个为浅色，第二个为深色，会组合成封面显示Example=cover-light.png,cover-dark.png
    [DefaultTheme]# 桌面壁纸 图片可用系统自带图片(绝对路径)，主题内图片(相对路径)Wallpaper=flow-light.jpg# 锁屏壁纸LockBackground=/usr/share/wallpapers/deepin/joshua-coleman-KzPefInJW58-unsplash.jpg# 应用图标IconTheme=flow# 鼠标样式CursorTheme=bloom# 应用主题 应用程序配色主题，在/usr/share/themes目录下，通常浅色主题为deepin,深色主题为deepin-darkAppTheme=deepin# 标准字体StandardFont=Noto Sans CJK SC# 等宽字体MonospaceFont=Noto Mono# 字体大小FontSize=10.5# 活动色ActiveColor=#0081FF# 任务栏底色色值DockBackground=#FFFFFF# 任务栏透明度DockOpacity=0.08# 启动器底色色值LauncherBackground=#FFFFFF# 启动器透明度LauncherOpacity=0.08# 窗口圆角大小WindowRadius=18# 窗口透明度WindowOpacity=0.4# 窗口阴影WindowShadow=#DDDDDD
    [DarkTheme]Wallpaper=flow-dark.jpgAppTheme=deepin-darkIconTheme=bloom-darkCursorTheme=bloom-darkDockBackground=#000000LauncherBackground=#000000WindowShadow=#222222

## index.theme文件说明

### Deepin Theme节点

Deepin Theme节点是必须的，且节点名固定

键 | 描述 | 类型 | 必需
--- | --- | --- | ---
Name | 主题名 | string | 是
Name[zh_CN] | 本地化主题名 | localestring | 否
Comment | 主题描述 | string | 否
Comment[zh_CN] | 本地化主题描述 | localestring | 否
DefaultTheme | 默认主题节点(浅色主题节点) | string | 是
DarkTheme | 深色主题节点 | string | 是
Hidden | 是否在用户界面隐藏，默认为false | boolean | 否
Example | 示例图片，用','分隔 | strings | 是

### 默认主题节点

默认主题节点名是Deepin Theme节点下DefaultTheme的值

键 | 描述 | 类型 | 必需
--- | --- | --- | ---
Wallpaper | 桌面壁纸 | file | 否
LockBackground | 锁屏壁纸 | file | 否
IconTheme | 应用图标 | string | 否
CursorTheme | 鼠标样式 | string | 否
AppTheme | 应用主题 | string | 否
StandardFont | 标准字体 | string | 否
MonospaceFont | 等宽字体 | string | 否
FontSize | 字体大小 | float | 否
ActiveColor | 活动色 | color | 否
DockBackground | 任务栏底色色值 | color | 否
DockOpacity | 任务栏透明度 | float | 否
LauncherBackground | 启动器底色色值 | color | 否
LauncherOpacity | 启动器透明度 | float | 否
WindowRadius | 窗口圆角大小 | integer | 否
WindowOpacity | 窗口透明度 | float | 否
WindowShadow | 窗口阴影 | string | 否

- Wallpaper、LockBackground值为图片文件路径，支持相对路径(以当前主题路径开始)和绝对路径
- IconTheme、CursorTheme值为/usr/share/icons/下的图标和光标主题，如果开发者有自定义图标光标主题，可在主题包里加依赖，或直接把图标光标主题加到主题包中。
- AppTheme为应用主题，为/usr/share/themes/下的主题。会影响应用程序的配色，兼容GTK主题包。若开发者未开发AppTheme主题包，建议使用系统自带的主题，即浅色主题AppTheme值为deepin，深色主题为deepin-dark
- StandardFont、MonospaceFont为字体，值为对应的字体名。
- FontSize为字体大小，与控制中心中字体大小不同，换算为其的0.75，即这里的10.5对应控制中心显示的14。取值可为8.25、9.0、9.75、10.5、11.25、12、13.5、15.0，分别对应控制中心显示的11、12、13、14、15、16、18、20
- ActiveColor为活动色，颜色类值同CSS中颜色写法，例：#0081FF为控制中心设置界面的蓝色

### 深色主题节点

深色主题节点名是Deepin Theme节点下DarkTheme的值，键同默认主题。

当深色主题的键未指定时，会使用默认主题对应的键值。所以深色主题只需定义与默认主题不同的项即可