你如何让 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?
- 将 .xml 和 .desktop 以及 .png 放在文件系统的正确位置就足够了吗?
- 包中的 post-install 是否需要 运行 部分或全部这些命令?
- 我读到 here 图标应该是 application-x-nec2 而不是 application/x-nec2。这是正确的吗?
我希望这些文件能够通过将它们放置在正确的位置来工作,而无需 运行 如果支持 xdg-*
工具。
(包是 .rpm,但类型和发行版无关紧要,因为 xdg 是标准。我希望相同的基本过程也适用于 .deb。)
所有内容都应关联为 mime 类型 application/x-nec2,因为“nec2”是“.nec”文件的文件格式。这反映在下面的 .desktop 和 .xml 定义中,除非我有错误。如有不妥之处请指正!
以下是部署的相关文件:
- /usr/share/applications/xnec2c.桌面(见下文)
- /usr/share/mime/packages/x-nec2.xml(见下文)
- /usr/share/pixmaps/xnec2c.svg
- /usr/share/icons/hicolor/256x256/apps/xnec2c.png
- /usr/share/icons/hicolor/scalable/apps/xnec2c.svg
内容如下:
==> /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
我正在为 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?
- 将 .xml 和 .desktop 以及 .png 放在文件系统的正确位置就足够了吗?
- 包中的 post-install 是否需要 运行 部分或全部这些命令?
- 我读到 here 图标应该是 application-x-nec2 而不是 application/x-nec2。这是正确的吗?
我希望这些文件能够通过将它们放置在正确的位置来工作,而无需 运行 如果支持 xdg-*
工具。
(包是 .rpm,但类型和发行版无关紧要,因为 xdg 是标准。我希望相同的基本过程也适用于 .deb。)
所有内容都应关联为 mime 类型 application/x-nec2,因为“nec2”是“.nec”文件的文件格式。这反映在下面的 .desktop 和 .xml 定义中,除非我有错误。如有不妥之处请指正!
以下是部署的相关文件:
- /usr/share/applications/xnec2c.桌面(见下文)
- /usr/share/mime/packages/x-nec2.xml(见下文)
- /usr/share/pixmaps/xnec2c.svg
- /usr/share/icons/hicolor/256x256/apps/xnec2c.png
- /usr/share/icons/hicolor/scalable/apps/xnec2c.svg
内容如下:
==> /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