我的自定义.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 )