屏保资源格式规范
- 维护者: lxz zhangdingyuan@uniontech.com
- 版本: 1.0
- 修改日期: 2021.8.17
- 议题: #14
引言
本规范主要使用者为屏幕保护程序开发者,适用面向普通用户的屏保软件开发。本规范主要遵循如下原则:
- 数据安全:屏保程序不应该向系统任何目录写入数据。
数据格式设计
一个标准的屏保应用只支持 Qt qml 模块编写,所有的文件必须以特定的目录结构组织到一个Qt资源文件(qrc文件)文件名必须以倒序域名的形式,例如 com.deepin.bubble,将目录安装到 /usr/share/deepin-screensaver/resources
目录。
Qt资源文件内必须以 /deepin-screensaver/
为前缀,并且有以下要求:
- /deepin-screensaver/modules:放置屏保应用的主qml文件,此路径下的所有qml文件都会被当做一个独立的屏保应用,因此,项目中的其它文件需要额外建立新的前缀放置。
- /deepin-screensaver/modules/cover:放置屏保应用封面图文件,文件名称必须和modules目录中的qml文件一致,且包含它的 “.qml” 后缀。如图上,qml文件全名为:”pp.qml”,封面图全名为:”pp.qml.svg”。封面支持大部分的图片格式,例如 png、jpg、svg等,推荐使用png。
- /deepin-screensaver/modules/pp:此前缀不是必须的,用于放置项目中的其它文件。为了不与其它项目产生冲突,建议使用项目名作为目录名称。
资源文件最好以项目名称命令,避免和其它屏保应用冲突。
最终目录结构应该为:
jsx
usr
└── share
└── deepin-screensaver
└── resources
└── com.deepin.bubble.qrc
usr
└── share
└── deepin-screensaver
└── resources
└── com.deepin.bubble.qrc
qrc内结构为:
jsx
<RCC>
<qresource prefix="/deepin-screensaver/modules">
<file alias="pp.qml">pp.qml</file>
</qresource>
<qresource prefix="/deepin-screensaver/modules/pp">
<file>pp.png</file>
<file>TheForce.qml</file>
<file>DebugArea.qml</file>
</qresource>
<qresource prefix="/deepin-screensaver/modules/cover">
<file alias="pp.qml.svg">pp.svg</file>
</qresource>
</RCC>
<RCC>
<qresource prefix="/deepin-screensaver/modules">
<file alias="pp.qml">pp.qml</file>
</qresource>
<qresource prefix="/deepin-screensaver/modules/pp">
<file>pp.png</file>
<file>TheForce.qml</file>
<file>DebugArea.qml</file>
</qresource>
<qresource prefix="/deepin-screensaver/modules/cover">
<file alias="pp.qml.svg">pp.svg</file>
</qresource>
</RCC>
qml 文件作为屏保应用的入口,它的根元素一定要设置:
jsx
anchros.fill: parent
anchros.fill: parent
确保屏保应用充满整个屏幕。在多屏的情况下下,会创建多个窗口示例,可根据屏幕绘制不同的屏保内容。
使用 Qt 提供的 rcc 命令将资源文件进行编译:
bash
rcc --binary com.deepin.bubble.qrc -o com.deepin.bubble.rcc
rcc --binary com.deepin.bubble.qrc -o com.deepin.bubble.rcc