Skip to content

屏保资源格式规范

引言

本规范主要使用者为屏幕保护程序开发者,适用面向普通用户的屏保软件开发。本规范主要遵循如下原则:

  • 数据安全:屏保程序不应该向系统任何目录写入数据。

数据格式设计

一个标准的屏保应用只支持 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

参考