要求与规范¶
Flatpak尽可能不对应用程序作出限制。不过,开发者应当尽可能遵循标准Linux桌面的规范,这主要是为了应用程序能更好地集成到Linux桌面和应用中心(App Center)。开发者也应尽可能遵循Linux技术规范。
更多有关桌面集成的选项可以参考 桌面集成。
应当遵循的标准¶
使用Flatpak构建的应用应当遵循下列标准。一般而言,为Linux桌面设计的应用程序只需做少数改动即可符合这些标准。
应用ID¶
如 使用Flatpak 所述,Flatpak要求每个应用都有一个独立的标识符,由三部分构成,例如 org.gnome.Dictionary
。我们在下面和后面的章节也会看到,ID在许多地方会用到。开发者在创建他们自己的ID的时候应该遵守 D-Bus naming conventions (D-Bus命名约定,译者注)标准。这种格式也被 Desktop File specification (Desktop文件规范,译者注)和 Appstream specification (AppStream规范,译者注)所推荐。
AppData文件¶
APPData文件提供了应用的元数据,可以被应用商店使用(例如Flathub、GNOME Software和KDE Discover)。 Freedesktop AppStream specification (APPStream规范)提供了一个AppData的完整参考。
AppData文件应该以应用的ID命名,并以 .appdata.xml
为文件扩展名,应该放在 /app/share/metainfo/
。举个例子:
/app/share/metainfo/org.gnome.Dictionary.appdata.xml
appstream-util vlidate-relax
命令可以用于检查AppData文件的错误
应用图标¶
应用需要提供一个图标,用于应用启动器。这些图标应当与 Freedesktop icon specification (Freedesktop图标规范)一致。
图标应该以应用ID命名,以PNG或者SVG格式,而且必须放在标准的位置:
/app/share/icons/hicolor/$size/apps/
举个例子,128x128px版本的GNOME Dictionary的图标的路径应该是:
/app/share/icons/hicolor/128x128/apps/org.gnome.Dictionary.png
desktop文件¶
desktop文件用于向桌面环境报告每个应用程序的相关信息。Freedesktop specification 提供了编写desktop文件的完整指南,您也可以在 ArchLinux Wiki 上找到更多信息。
desktop文件应该以应用的ID命名,以 .desktop
为文件扩展名,而且应该放在 /app/share/applications/
。举个例子:
/app/share/applications/org.gnome.Dictionary.desktop
一个desktop文件应当至少包含以下字段: name*(应用程序名)、*exec*(启动命令)、*type*(类型)、*icon*(图标名)和 *categories (所属分类):
[Desktop Entry]
Name=Gnome Dictionary
Exec=org.gnome.Dictionary
Type=Application
Icon=org.gnome.Dictionary
Categories=GNOME;GTK;Office;Dictionary;
desktop-file-validate
命令可以用来检测desktop文件的错误。
技术规范¶
Flatpak和多数Linux桌面都遵循下列标准技术规范。有Linux使用经验的用户对此可能已有了解。首次使用Linux的开发者同样可以在这里找到有用的信息。
D-Bus¶
D-Bus是Linux桌面使用的标准IPC(进程间通讯,译者注)框架。大多数应用程序并不会用到D-Bus;但如果需要,Flatpak也同样提供D-Bus支持。
D-Bus可用于启动应用程序,以及系统服务之间的交互。应用程序也可以实现它们自己的D-Bus服务(此时,D-Bus服务的名称必须与应用程序的ID一致)。
Filesystem layout(文件系统布局,译者注)¶
每个Flatpak沙箱,一个应用运行的环境,包含这个应用的运行时的文件系统。这个准守 standard Linux filesystem conventions (标准Linux文件系统约定,译者注)。
举个例子,沙箱根目录包含 /etc
用于配置文件和 /usr
用于多用户utilities和应用。除此之外,每个沙箱包含一个顶级 /app/
目录,用于应用自己文件的存放。
XDG基本目录¶
XDG基本目录 指定用户应用数据的位置标准。很多工具包都提供了访问XDG基本目录的快捷方法。如:
- Electron: 使用
app.getPath
访问XDG基本目录 - Glib: 通过
g_get_user_cache_dir ()
,g_get_user_data_dir ()
,g_get_user_config_dir ()
函数访问XDG基本目录 - Qt: 通过 QStandardPaths Class 访问XDG基本目录
如果应用没有使用上述工具包,也可以通过下面的方式找到XDG基本目录:
基本目录 | 用途 | 默认位置 |
---|---|---|
XDG_CONFIG_HOME | 具体用户配置文件 | ~/.var/app/<app-id>/config |
XDG_DATA_HOME | 具体用户数据 | ~/.var/app/<app-id>/data |
XDG_CACHE_HOME | Non-essential user-specific data(非基本具体用户数据,译者注) | ~/.var/app/<app-id>/cache |
举个例子,GNOME Dictionary会把具体用户数据存放在:
~/.var/org.gnome.Dictionary/data/gnome-dictionary
注意应用可以被配置成使用非默认基本目录(见 沙箱权限)。