作成したプログラム用にmy-app.desktop
ファイルを作成しました。ダブルクリックすると、「アプリケーションの起動中にエラーが発生しました」というエラーメッセージが表示されます。問題が何であるかについて、より詳細な情報を取得するにはどうすればよいですか?
ダイアログボックスの「詳細」セクションへの参照を見ましたが、表示されているものにはそのようなものはありません。 Macを使用している場合、コンソールアプリを開いてエラーがログに記録されているかどうかを確認しましたが、Ubuntuで同様のことは何も知りませんでした。
(他の同様のタイトルの質問とは異なり、この特定の.desktopファイルの何が問題なのかを尋ねているわけではないことに注意してください。一般的な検索方法を知りたいです。)
使用できるトリックを次に示します。アプリケーションを起動し、エラー出力をキャプチャするラッパースクリプトを作成します。
#!/usr/bin/env bash
## Launch 'yourapp' and capture its standard error output
/path/to/yourapp 2>~/myapp.log
それを~/foo.sh
として保存し、chmod +x ~/foo.sh
で実行可能にします。次に、代わりにデスクトップランチャーを指定します。何かのようなもの:
[Desktop Entry]
Version=2.0
Type=Application
Exec=/home/kevin/foo.sh
Terminal=true
Comment=My app!
これにより、すべてのエラーメッセージが~/myapp.log
にリダイレクトされ、いつでも確認できます。連続したエラーメッセージを上書きせずにファイルに追加する場合は、2>>~/myapp.log
を使用できます。
余談ですが、$PATH
が異なる理由は、おそらく$PATH
をグラフィカル環境で読み取れない~/.bahsrc
に設定しているためです。新しい端末を開くたびに$PATH
が設定されるため、これも悪い考えです。これは不必要なオーバーヘッドです。代わりに~/.profile
を使用してください。 here を参照したときに読み取られるファイルの詳細と、何に使用するファイルの詳細については、 here を参照してください。
ここでこの質問に対する答えを見つけました: https://askubuntu.com/a/836842
これを試して :
desktop-file-validate my-app.desktop
.desktop
ファイルにエラーを出力します。たとえば、私のものが返されました:
error: first group is not "Desktrop Entry"
したがって、タイプミスをDesktop Entry
に修正すると、スクリプトは正常に実行されました。
ターミナルで次のコマンドを実行します。
awk -F= '/Exec=/{system($2)}' your_desktop_file.desktop
.desktopファイル内からExec
フィールドに割り当てられたコマンドにエラーがあるかどうかを確認できると確信しています。
通常、ターミナル(-output)は、アプリケーションとデスクトップファイルの両方に関する多くの有用な情報を提供します。例:ターミナルからアプリケーションを実行し、ターミナルでコマンドを入力すると、アプリケーションが起動します。
ただし、何か問題がある場合は、次のような出力が期待できます。
Traceback (most recent call last):
File "/home/jacob/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa /qle-2.1.2/code/qle_quicklisteditor", line 4044, in <module>
MainWindow()
File "/home/jacob/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa /qle-2.1.2/code/qle_quicklisteditor", line 51, in __init__
self.load_sectons()
AttributeError: 'MainWindow' object has no attribute 'load_sectons'
jacob@Jacobwerkkamer:~/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa /qle-2.1.2/code$
エラーの原因となるアプリケーション内の行も含めて、多くの有用な情報が得られます。 (意図的に台無しにしました)
デスクトップファイルと同じように、.desktopファイルのディレクトリでターミナルを開き、ターミナルにドラッグします。たとえば、Exec=
行を.desktopファイルから削除すると、ターミナルは実行するコマンドが見つからないことを通知します。
アプリケーションでエラーが発生するかどうかをテストするには、Exec=
文字列の後に指定したものを実行するだけです。
通常、端末出力は here のように、バグレポートで非常に具体的で便利です。
本当に理解できないとき、私は:
cd ~/Desktop
ln -s /my/binary/thatIwanttorun mybinary
次に、作成されたデフォルトのアイコンを右クリックして、より良いグラフィックをポイントします。
これは他の人に役立つかもしれません-これは デスクトップランチャーファイルの公式仕様 です
重要なセクションは次のとおりです。認識されたデスクトップエントリキー-必要な値を示します。