我在 /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

如果在 Nautilus 中查看,它/usr/share/applications甚至會顯示該圖標,但是當我按 alt(破折號或 windows 鍵)並蒐索它時,它不可見。

我也嘗試過:

sudo update-desktop-database

答案1

您的 .desktop 檔案中的關鍵問題是什麼

我嘗試將您的 .desktop 檔案替換Exec=為另一個(簡單且有效)命令,該檔案似乎可以正常工作,並且不會被 Dash 拒絕。

一個常見的誤解是您可以將Exec=.desktop 檔案的行當作終端視窗來使用。事實並非如此;例如,像~/或那樣擴充$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=行。

相關內容