我的自定义 .desktop 文件在 Dash 中显示为文本文件

我的自定义 .desktop 文件在 Dash 中显示为文本文件

我最近在电脑上安装了 MATLAB。我发现虽然我可以轻松地从终端启动 MATLAB,但没有可以双击运行它的可执行文件。因此,我创建了一个 Bash 脚本来运行 MATLAB,然后创建了一个 .desktop 文件并将其保存在 中/usr/share/applications/。以下是该 .desktop 文件的内容:

[Desktop Entry]
Type=Application
Name=MATLAB
Hidden=false
Exec=Desktop/Programs/scripts/runMatlab.sh
Icon=/usr/share/icons/matlabIcon.jpg
Categories=Application;

如果我查看内部/usr/share/applications/,我确实会看到一个名为 MATLAB 的可执行文件和相应的图标,如果我双击它,MATLAB 将正常运行。但是,如果我在 Dash 中输入 MATLAB,matlab.desktop 会显示为文本文件。它没有正确的名称 (MATLAB) 或正确的图标,如果我单击它,Gedit 将打开而不是正在执行的文件。

我怎样才能解决这个问题?

顺便说一下,我正在使用 Ubuntu 14.04。

答案1

如果你仔细看看 Dash,你会发现它matlab.desktop并没有作为一个应用程序出现,而是文件 matlab.desktop出现在搜索, 或者最近使用,因为您显然对其进行了编辑。

错误

原因是 Dash 并不认为它是有效的 .desktop提交文件(至少)出于以下原因:

  • 您不应该在.desktop文件中使用相对路径(Desktop/Programs/scripts/runMatlab.sh是相对的),但是绝对路径。

其他可能的原因可能是图标路径无效,或者您在没有前面的情况下调用了脚本sh(如果脚本不可执行,但考虑到您问题中的其他信息,情况似乎并非如此)。

笔记

  • 另一件事是如果如果您将脚本存储在看似本地的目录中,则不应将文件存储.desktop在中/usr/share/applications,而应存储在中~/.local/share/applications

  • .desktop如果您从 Dash 或启动器运行文件,则无需将其设为可执行文件。大多数启动器/usr/share/applications都不~/.local/share/applications是。只有当您将其放置在桌面上并从桌面运行它时才可以。

答案2

首先,将 .desktop 文件移动到/usr/share/applications/(全局启动器,需要 root 权限才能移动文件)或~/.local/share/applications/(仅适用于当前用户)。*
编辑: 当你运行desktop-file-install时,这不是必需的,因为它会自动将文件复制到/usr/share/applications/

然后,使用以下命令检查 .desktop 文件是否有错误desktop-file-install filename.desktop(没有输出意味着没有错误,但即使有些警告也可能不会阻止启动器工作),然后
通过运行以下命令将其添加到 Unity dash 中sudo desktop-file-install filename.desktop编辑: 需要 root 权限才能访问存储全局启动器的 /usr/share/applications/)。请注意,此命令可能会向原始的.desktop 文件中添加一些行。

希望这能解决你的问题。你好!
(来源:https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles

相关内容