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

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

我已经创建了一个 .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

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

我也尝试过:

sudo update-desktop-database

答案1

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

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

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

从 .desktop 文件运行复杂命令

如果你特别想保留你的命令里面您的.desktop文件,您应该按如下方式进行:

Exec=sh -c "your_complicated_command_here && the_rest_of_it"
(command inside quotes)

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

假设你的命令

cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*

从终端窗口运行,但我只需创建一个小脚本:

#!/bin/bash
cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*

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

Exec=sh /path/to/scriptname.sh

然后你的.desktop文件就会显示在 Dash 中

笔记

正如@Braiam 和@MrVaykadji 所提到的,您的 .desktop 文件还存在更多问题。以下是一些示例:

  • 您不应该只使用行中虚构的值Categories=,正如您所读到的这里
  • 版本字段不是必需的,但如果使用,请使用 1.0

更多内容这里. 你可以找到的好工具这里(也感谢@Braiam 和@MrVaykadji)。

然而,导致您的 .desktop 文件无法出现在 Dash 中的关键因素就是该Exec=行。

相关内容