我的自定义.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将运行正常。 但是,如果我将MATLAB键入Dash,则matlab.desktop将显示为文本文件。 它没有正确的名称(MATLAB)或正确的图标,如果我点击它,Gedit将打开而不是正在执行的文件。

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

我顺便使用Ubuntu 14.04。

如果你仔细看看Dash,你会发现matlab.desktop并不是一个应用程序,但是matlab.desktop 文件出现在搜索中 ,或者最近使用过 ,因为你显然已经编辑过了。

错误

原因是Dash没有将其视为有效的 .desktop文件(至少),原因如下:

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

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

笔记

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

  • 如果从Dash或Launcher运行它,则无需使.desktop文件可执行。 /usr/share/applications~/.local/share/applications中的大多数启动~/.local/share/applications都不是。 仅当您找到它并从桌面运行它时。

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

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

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