/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ファイルの重大な問題は何ですか

.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 $*

として保存しscriptname.shExec=.desktop ファイルの行を次のように変更します。

Exec=sh /path/to/scriptname.sh

すると、.desktopファイルがDashに表示されます

注記

@Braiam と @MrVaykadji が言及しているように、.desktop ファイルには他にも問題があります。いくつか例を挙げます。

  • Categories=次のように、行に架空の値をそのまま使用しないでください。ここ
  • バージョンフィールドは必須ではありませんが、使用する場合は1.0を使用してください。

詳細はここ見つけられる良いツールここ(@Braiam と @MrVaykadji にも感謝します)。

ただし、.desktop ファイルが Dash に表示されない原因となる重要なのは次のExec=行です。

関連情報