*.desktop ファイルを取得してアプリを起動し、デスクトップと /usr/share/applications/ に名前とアプリのアイコンを表示するにはどうすればよいでしょうか?

*.desktop ファイルを取得してアプリを起動し、デスクトップと /usr/share/applications/ に名前とアプリのアイコンを表示するにはどうすればよいでしょうか?

Ubuntu Bionic Beaver 18.04.3 Nautilus 3.26.4 (ファイル)

デスクトップまたは~/binにある*.desktopファイルは、応用アイコンとファイル名は、ファイルの Name キーの値に置き換えられます。アイコンをクリックすると、関連付けられたアプリが起動します。

HP42s 逆ポーランド語電卓の Free42 エミュレーションを起動するための 2 つのファイル (free42dec.desktop と free42bin.desktop) があります。しかし、Nautilus (ファイル) では、これらのファイルは、適切な電卓アイコンが付いた Free42 Decimal および Free42 Binary ではなく、完全なファイル名と汎用テキスト アイコンで表示されます。もう 1 つの奇妙な点は、これらのファイルのプロパティを開くと、[基本] タブにプレーン バニラが表示されるのに対し、他の正常に動作する *.desktop ファイルでは、[基本] タブに Exec キーの値が表示されることです。

*.desktop ファイルでこの問題に遭遇したのは私が初めてではないでしょうが、検索語を組み合わせても答えは見つかりません。提案されたさまざまな解決策を試しましたが、どれもうまくいきませんでした。そこで、困ったことに、これらのファイルの 1 つのテキストを次に示します (もう 1 つも同様です)。

[Desktop Entry]
Version=2.5.17
Name=Free42 Decimal
GenericName=Calculator
Comment=HP42s calculator using decimal number calculations.
Exec=free42dec -skin Realistic
Path=/usr/local/bin
Icon=/usr/share/icons/free42/free42dec.png
Terminal=false
Type=Application
Categories=Utility;Application;

##Define Actions
Actions=Quit;Free42_Binary;

[Desktop Action Quit]
Name=Quit
# Kill all free42bin or free42dec instances currently running
# Exec=pkill free42*
# Kill only free42dec instances
Exec=pkill free42dec
OnlyShowIn=Unity;

[Desktop Action Free42_Binary]
Name=Free42 Binary
# You can start the alternative calc from the right-click menu
Exec=free42bin -skin KD0GLS_Full
OnlyShowIn=Unity;

これらのファイルに問題があるとわかる人はいますか? パーサーや文法チェッカーを探してみましたが、ドキュメントは役に立ちませんでした。 *.desktop ファイル用の特別なインストーラーはないようです。

答え1

さらに調べてみると、ファイルdesktop-file-validateの構文と構造をチェックするCLI コマンドがあることが分かりました*.desktop

.../usr/share/applications$ desktop-file-validate free42dec.desktop
free42dec.desktop: error: file contains line "?[Desktop Entry]", which is not a comment, a group or an entry

を見てください"?[Desktop Entry]"。これは?の前に隠し文字があることを示しています[。これはバイトオーダーマーク (BOM) であり、この UTF-8 ファイルが BigEndian および LittleEndian システムでどのように読み取られるかを示します。さらに検索すると が見つかります。これはdos2unixWindows テキストファイルを UNIX 形式に変換するユーティリティで、次の方法で入手できます。

$ sudo apt install dos2unix

次に、次の操作を実行します。

.../usr/share/applications$dos2unix free42dec.desktop
dos2unix: converting file free42dec.desktop to Unix format...

やった! これで、ファイルはファイル名の代わりにキー Free42 Decimalでfree42dec.desktopNautilus に表示され、テキスト アイコンは Free42 Decimal アイコンに変わります。このショートカットは、ランチャー ダッシュとアプリケーション ダッシュ (概要) に表示されます。これをデスクトップにコピーすると、そこでもクリックして Free42 Decimal アプリを起動できます。/usr/share/applicationsName

*,desktop(ランチャー、ショートカット)ファイルの形式、構造、構文については、次の文書を参照してください。デスクトップエントリー仕様

関連情報