【问题标题】:Desktop menu, .desktop files and xdg-desktop-menu桌面菜单、.desktop 文件和 xdg-desktop-menu
【发布时间】:2010-12-10 23:20:46
【问题描述】:

/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。

【问题讨论】:

    标签: linux rpm


    【解决方案1】:

    在 Fedora 上,请确保:

    BuildRequires:桌面文件实用程序 要求(帖子):桌面文件实用程序 要求(postun):桌面文件实用程序

    那么(%{SOURCE1} 是您的桌面文件):

    %安装 [...] 桌面文件安装\ --dir=${RPM_BUILD_ROOT}%{_datadir}/应用程序\ %{SOURCE1} [...] %邮政 更新桌面数据库 &> /dev/null || : %邮递 更新桌面数据库 &> /dev/null || :

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

    %邮政 touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : %邮递 如果 [ $1 -eq 0 ] ;然后 touch --no-create %{_datadir}/icons/hicolor &>/dev/null gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : 菲 %posttrans gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :

    参考:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 2020-01-04
      • 2022-01-17
      • 1970-01-01
      • 2011-02-17
      相关资源
      最近更新 更多