gpt4 book ai didi

linux - 桌面菜单、.desktop 文件和 xdg-desktop-menu

转载 作者:太空狗 更新时间:2023-10-29 11:16:30 27 4
gpt4 key购买 nike

/usr/share/applications 中的.desktop 文件、xdg-desktop-menu 命令和update-desktop-database 命令之间有什么关系?

我正在尝试创建一个 RPM 来为我的应用程序创建一个桌面图标。在 RPM 中,我将 vendor-appname.desktop 文件安装到/usr/share/applications 中。然后我有以下安装后脚本:

if [ -x "`which xdg-desktop-menu 2>/dev/null`" ]; then
xdg-desktop-menu install $RPM_BUILD_ROOT/usr/share/applications/vendor-myapp.desktop
fi

if [ -x "`which update-desktop-database 2>/dev/null`" ]; then
update-desktop-database &> /dev/null || :
fi

并且未创建图标。如果我运行

xdg-desktop-menu install $RPM_BUILD_ROOT/usr/share/applications/vendor-myapp.desktop

稍后以非 root 身份手动命令。如果我以 root 身份执行此操作(据推测,RPM 如何执行此操作),则不会创建图标。另外,我非常怀疑 if[] 位下的 update-desktop-database 没有被执行。它在我手动运行整个 if[] 语句时执行。

带有 Gnome 的 Fedora Linux。

最佳答案

在 Fedora 上,确保:

BuildRequires: desktop-file-utilsRequires(post): desktop-file-utilsRequires(postun): desktop-file-utils

然后(%{SOURCE1} 是您的桌面文件):

%install[...]desktop-file-install                                    \--dir=${RPM_BUILD_ROOT}%{_datadir}/applications         \%{SOURCE1}[...]%postupdate-desktop-database &> /dev/null || :%postunupdate-desktop-database &> /dev/null || :

如果你安装自己的图标,你还需要更新图标缓存,在相关的specfile部分添加:

%posttouch --no-create %{_datadir}/icons/hicolor &>/dev/null || :%postunif [ $1 -eq 0 ] ; then    touch --no-create %{_datadir}/icons/hicolor &>/dev/null    gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :fi%posttransgtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :

引用:

关于linux - 桌面菜单、.desktop 文件和 xdg-desktop-menu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4414160/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com