你如何让 xdg-utils 从分发包中检测我的应用程序的文件关联?

How do you make xdg-utils detect a file association for my application from a distribution package?

我正在为 xnec2c 构建一个分发包,我希望 .nec 文件与 xnec2c 关联并显示关联的图标。

(这个问题与那里的 many xdg-utils answers 不同,因为它询问包装以及是否确实需要 xdg-* 调用。)

我知道我可以用这些注册他们:

xdg-mime install --mode system x-nec2c.xml

xdg-icon-resource install --mode system --context mimetypes --size 256 xnec2c.png application-x-nec2

xdg-mime default xnec2c.desktop # but `man` says not as root?

我希望这些文件能够通过将它们放置在正确的位置来工作,而无需 运行 如果支持 xdg-* 工具。

(包是 .rpm,但类型和发行版无关紧要,因为 xdg 是标准。我希望相同的基本过程也适用于 .deb。)

所有内容都应关联为 mime 类型 application/x-nec2,因为“nec2”是“.nec”文件的文件格式。这反映在下面的 .desktop 和 .xml 定义中,除非我有错误。如有不妥之处请指正!

以下是部署的相关文件:

内容如下:

==> /usr/share/applications/xnec2c.桌面<==

[Desktop Entry]
Name=Xnec2c
GenericName=NEC2 Simulator
Comment=Numerical Electromagnetics Code software
Exec=xnec2c
Icon=xnec2c
Terminal=false
Type=Application
Categories=Science;
Keywords=nec2;em;simulator;
X-Desktop-File-Install-Version=0.22
MimeType=application/x-nec2;

==> /usr/share/mime/packages/x-nec2.xml <==

<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
    <mime-type type="application/x-nec2">
        <comment>NEC2 Antenna Simulation File</comment>
        <icon name="application-x-nec2"/>
        <glob-deleteall/>
        <glob pattern="*.nec"/>
    </mime-type>
</mime-info>

您不需要 运行 mime-* 工具,但您确实需要在安装后更新 freedesktop 环境的桌面和图标关联,如下所示:

update-mime-database /usr/share/mime
update-desktop-database
gtk-update-icon-cache /usr/share/icons/hicolor

这些也应该是 运行 卸载后,删除后清理。在 RPM 中,这是 %postun 部分。

/usr/share 替换为您可能使用的任何部署变量,例如 %{_datadir} 用于 RPM .spec。

图标名称也有问题。它应该刚刚命名为 'xnec2c' 而不是 'application-x-nec2' 因为 'xnec2c' 图标是随安装程序一起安装的,如下所示:

%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
%{_datadir}/icons/hicolor/256x256/apps/%{name}.png