私は長年にわたってかなりの数のオープンソースプログラムを作成してきましたが、最近ではなく、この問題を以前に経験したことがありません。私の新しいプロジェクトのメニュー項目は、単にgnomeまたはkdeのメニューに表示されることを拒否しています。
最初は.desktopファイルを/ usr/share/applicationsにインストールしましたが、後でそれを変更して、desktop-file-utilsを使用します。 post-instスクリプトに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
猫ezdmconsole.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/postinst:
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#
ファイルにフォーマットエラーがありました。コメントに基づいて、私は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パッケージがまもなく利用可能になります。
これを試して:
xdg-desktop-menu forceupdate [--mode mode]
のうち
man xdg-desktop-menu
非常に油断ならないデスクトップファイルキー-TryExec
があります。 docs によると:
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
少なくともUbuntu 19.10では、考えられる原因の1つは、Exec
によって参照されるバイナリが$PATH
に存在しないことです。これは本当です無関係TryExec
行の$PATH
に存在する実行可能ファイルを参照するには、両方行が必要です。そうしないと、アプリケーションはアプリケーションメニューに表示されません。
したがって、Exec=
行の先頭に実行可能ファイルを入力していないこと、および実行可能ファイルが実際に存在することを再確認してください。
ほとんどの場合、誤ったTryExec
行が無効であることを示しています。
TryExec=/usr/games/games/ezdm
このファイルは存在しないと思いますが、特に実行可能ではありませんか?