我在 /usr/share/applications 中创建了一个桌面文件,但它没有显示在 Dash 中

Gok*_*kul 5 unity-dash .desktop

我创建了一个 .desktop 文件。

[Desktop Entry]
Exec=cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*
Terminal=false
StartupNotify=true
Categories=GNOME;Oracle;Utility;Development;
Type=Application
Icon=/opt/sqldeveloper/icon.png
Name=Oracle SQL Developer
Comment=what to say
Version=s.0.m.t.h.i.n.g
GenericName=ORACLE SQL DEVELOPER
Run Code Online (Sandbox Code Playgroud)

它存在于/usr/share/applications.It中,如果在 Nautilus 中查看它甚至会显示该图标,但是当我按 alt(破折号或 Windows 键)并搜索它时,它是不可见的。

我也试过:

sudo update-desktop-database
Run Code Online (Sandbox Code Playgroud)

Jac*_*ijm 5

您的 .desktop 文件中的关键问题是什么

我尝试将您的 .desktop 文件替换为Exec=另一个(简单且有效)的命令,并且该文件似乎可以正常运行,并且没有被 Dash 拒绝。

一个常见的误解是,您可以将Exec=.desktop 文件的一行当作终端窗口来使用。事实并非如此; 例如,像~/$HOME不起作用一样扩展。将更复杂的命令放在单独的脚本文件中是很好的(意思是:简单的)练习,从启动器文件(您的.desktop文件)执行

从 .desktop 文件运行复杂的命令

如果你特别想把你的命令保存你的.desktop文件中,你应该按如下方式进行:

Exec=sh -c "your_complicated_command_here && the_rest_of_it"
(command inside quotes)
Run Code Online (Sandbox Code Playgroud)

从 .desktop 文件运行脚本来完成这项工作

假设你的命令

cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*
Run Code Online (Sandbox Code Playgroud)

从终端窗口工作,但是我会简单地创建一个小脚本:

Exec=sh -c "your_complicated_command_here && the_rest_of_it"
(command inside quotes)
Run Code Online (Sandbox Code Playgroud)

将其另存为scriptname.sh,并将Exec=.desktop 文件的行更改为:

Exec=sh /path/to/scriptname.sh
Run Code Online (Sandbox Code Playgroud)

然后您的.desktop文件将显示在 Dash 中

笔记

如@Braiam 和@MrVaykadji 所述,您的 .desktop 文件存在更多问题。几个例子:

  • 你不应该只使用Categories=行中的组合值,你可以在这里阅读
  • version 字段不是必需的,但如果使用它,请使用 1.0

这里可以找到更多信息。您可以在这里找到好的工具(也感谢@Braiam 和@MrVaykadji)。

然而,使您的 .desktop 文件没有出现在 Dash 中的关键是该Exec=行。


归档时间:

查看次数:

4137 次

最近记录:

10 年,12 月 前