私のapplication.desktopファイルがLinuxアプリケーションメニューに表示されないのはなぜですか?

私のapplication.desktopファイルがLinuxアプリケーションメニューに表示されないのはなぜですか?

私は長年にわたって多くのオープンソースプログラムを書いてきましたが、最近はそうではありませんでした。私の新しいプロジェクトのメニュー項目はgnomeまたはkdeメニューにまったく表示されません。

もともと.desktopファイルを/usr/share/applicationsにインストールしましたが、後でDesktop-file-utilsを使用するように修正しました。みんな役に立たなかった。 postinstスクリプトにupdate-desktop-databaseを追加しました...何もありません。

エントリを確認し、ファイルマネージャでエントリが正確で実行権限を与えてみました。エラーは見つかりませんが表示されません。最近、アプリのメニュー項目を表示するために新しい作業が必要ですか?

.desktop ファイルは次のとおりです。

silentcoder@ravenriley ~/SOURCE/ezdm $ cat ezdm.desktop 
[Desktop Entry]
Type=Application
Name=EZDM
GenericName=Easy Dungeon Master
Comment=A tookit for AD&D Dungeon Master
TryExec=/usr/games/ezdm
Exec=/usr/games/ezdm
Categories=Game;RolePlaying;
Icon=/usr/share/icons/hicolor/128x128/ezdm.png
Terminal=false

catezdmconsole.desktop

[Desktop Entry]
Type=Application
Name=EZDM-Console
GenericName=Easy Dungeon Master (Console version)
Comment=A tookit for AD&D Dungeon Master
TryExec=/usr/games/ezdm --console
Exec=/usr/games/ezdm --console
Categories=Game;RolePlaying;
Icon=/usr/share/icons/hicolor/128x128/ezdm-console.png
Terminal=1
X-Desktop-File-Install-Version=0.20

他のコードが役に立つ場合は、githubで参照できます。https://github.com/ajventer/ezdm

更新:ファイルを/ usr / share / applications / kde4にコピーすると(明らかに私のパッケージではコピーしたくありません。最終的にgnomeでも機能する必要があります)、ezdm.desktopが突然表示されると謎が深まります。メニューが表示されますが、ezdm-console.desktopはまだ拒否します。

更新:関連する場合:Makefileから:

install:
                $(PYTHON) setup.py install --prefix=/${PREFIX} --root $(DESTDIR) --install-scripts=/${PREFIX}/games/ --no-compile --force --record .install.record --install-layout=deb
                mkdir -p ${DESTDIR}/${PREFIX}/share/applications
                mkdir -p ${DESTDIR}/${PREFIX}/share/icons/hicolor/128x128/
                desktop-file-install --dir=${DESTDIR}/${PREFIX}/share/applications/ ezdm.desktop 
                desktop-file-install --dir=${DESTDIR}/${PREFIX}/share/applications/ ezdm-console.desktop 
                install -g root -o root -m 0666 ezdm.png ${DESTDIR}/${PREFIX}/share/icons/hicolor/128x128/ezdm.png
                install -g root -o root -m 0666 ezdm-console.png ${DESTDIR}/${PREFIX}/share/icons/hicolor/128x128/ezdm-console.png 
                update-desktop-database ${DESTDIR}/${PREFIX}/share/applications

そしてDebian/ポスト:

cat debian/postinst 
#!/bin/bash -x
ln -sf /usr/games/ezdm* /usr/bin
for I in /usr/lib/python2.7/dist-packages/ezdm_libs/*.py; do
        python -m compileall $I
done
update-desktop-database
#DEBHELPER#

答え1

この試み:

xdg-desktop-menu forceupdate [--mode mode]

外の

man xdg-desktop-menu 

答え2

非常に狡猾なデスクトップファイルキーがあります。 - TryExec.によると文書:

実行しよう

プログラムが実際にインストールされているかどうかを確認するために使用されるディスクの実行可能ファイルのパス。パスが絶対パスではない場合は、$ PATH環境変数でファイルを見つけます。ファイルが存在しないか実行可能でない場合、アイテムは無視される可能性があります(メニューで使用されていません)。

そのため、誤って入力するとメニュー項目が失われる可能性があります。 「適切だ」という言葉はいつも必ず指さなければならない実際の実行ファイル

驚くべきことに、変更された環境でランチャーを使用しようとするとenv動作が停止します。以下は、私の展開パッケージにある無効なデスクトップファイルの例です。

TryExec=env FONTCONFIG_FILE=/usr/share/fonts/fonts.conf telegram -noupdate
Exec=env FONTCONFIG_FILE=/usr/share/fonts/fonts.conf telegram -noupdate -- %u

実行可能ファイルを検索するDEは、文字列全体(スペースを含む)をファイルパスとして扱うため、機能しませんenv FONTCONFIG_FILE=/usr/share/fonts/fonts.conf telegram -noupdate。もちろん、このパスは失われます。

解決策も簡単です。実際の実行可能ファイルのパスを指定するだけです(相対パスも可能です)。

TryExec=telegram

答え3

ファイルにフォーマットエラーがあります。コメント作成者によると、いくつかのバージョンのGNOMEがより寛大であると仮定することができます。とにかく、私はそれらを動作させる良い方法を見つけました。ドルフィンでディレクトリを開き、ドルフィンから起動できるまで編集します。機能すると、カテゴリフィールドを追加するとメニューに表示されます。 KDE から再度ログインしない場合は、まず kbuildsycoca4 --noincremental を実行する必要があります。

ファイルの最終バージョンは次のとおりです。

cat ezdm.desktop 
[Desktop Entry]
Categories=Game;RolePlaying;
Comment[en_US]=A tookit for ADnD Dungeon Master
Comment=A tookit for ADnD Dungeon Master
Exec=/usr/games/ezdm
GenericName[en_US]=Easy Dungeon Master
GenericName=Easy Dungeon Master
Icon=/usr/share/icons/hicolor/128x128/ezdm.png
MimeType=
Name[en_US]=EZDM
Name=EZDM
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
TryExec=/usr/games/ezdm
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=

silentcoder@ravenriley ~/SOURCE/ezdm0/ezdm $ cat ezdm-console.desktop 
[Desktop Entry]
Categories=Game;RolePlaying;
Comment[en_US]=EZDM Console Version
Comment=EZDM Console Version
Exec=/usr/games/ezdm --console
GenericName[en_US]=EZDM Console Version
GenericName=EZDM Console Version
Icon=/usr/share/icons/hicolor/128x128/ezdm-console.png
MimeType=
Name[en_US]=EZDM-Console
Name=EZDM-Console
Path=
StartupNotify=true
Terminal=true
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=none
X-KDE-SubstituteUID=false
X-KDE-Username=

他の人に役立つ場合。新しいPPAビルドリクエストを開始したばかりで、更新されたUbuntuパッケージがまもなく提供される予定です。

答え4

TryExecエラー行が無効になったことを示している可能性があります。

TryExec=/usr/games/games/ezdm

このファイルが存在せず、具体的に実行可能ではないと思いますか?

関連情報