
Ubuntu がどのようにしてアプリケーションの正しい名前を判別できるのか疑問に思いました。たとえば、Open with -> Other application
コンテキスト メニューから選択すると、このリストが表示されます。
開発者はどのようにして Ubuntu にアプリケーションの名前を教えるのでしょうか。また、別の開発者はどのようにしてシステムからアプリケーションの名前を取得できるのでしょうか。実際のコードは必要ありません。むしろ、概念的な側面に興味があります。
答え1
これはアプリケーションのデスクトップエントリファイルデスクトップ エントリ ファイルは、アプリケーションのランチャー (デスクトップで作成できるランチャーと同じファイル形式) であり、さまざまなメタデータも含まれています。アプリケーションがインストールされると、これらのデスクトップ エントリ ファイルは /usr/share/applications に配置され、速度を向上させるためにその内容もキャッシュされると思います。
ここで定義される重要なデータは、アプリケーションが開くことができる MIME タイプのリストです。これは、デスクトップ エントリ ファイルの「MimeType」キーで定義されます。たとえば、GIMP のデスクトップ エントリには次のものがあります。
MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;image/x-wmf;
これは、GIMP が開くことができるファイル タイプのリストを指定します。
アプリケーション名は「Name」キーで指定されます。例:
Name=GIMP Image Editor
ご覧のとおり、名前の横にアイコンがあります。これらは、デスクトップ エントリ ファイルでもアイコン名 (アイコン テーマから適切なファイルが検索されます) またはアイコン ファイル パスとして指定されます。GIMP には次のものがあります。
Icon=gimp
「開く -> 他のアプリケーション」ダイアログでは、推奨アプリケーションはファイルタイプを開くことができると指定されているアプリケーションであり、その他のアプリケーションはファイルタイプを開くことができないアプリケーションです。
アプリケーションを選択すると、ファイル マネージャーは、ファイルを開くためにアプリケーションを実行する方法を検索します。デスクトップ エントリで「Exec」キーを検索します。GIMP には次の Exec キーがあります。
Exec=gimp-2.6 %U
これは、次のコマンドを意味します。
gimp-2.6 %U
実行され、開くために選択されたファイルを表す URL のリスト (通常は file:// URL) に置き換えられてファイルを開きます%U
。 '%U' に加えて、アプリケーションは単一の URL に '%u' を使用するか、単一/複数のファイル パスに '%f'/'%F' を使用する場合があります。
答え2
それはとても簡単です。次の情報を含む .desktop ファイルがあります:
[Desktop Entry]
Name=Image Viewer
Comment=Browse and rotate images
Exec=eog %U
Type=Application
Categories=GNOME;GTK;Graphics;RasterGraphics;Viewer;
MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/pjpeg;image/png;image/tiff;image/x-bmp;image/x-gray;image/x-icb;image/x-ico;image/x-png;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-xbitmap;image/x-xpixmap;image/x-pcx;image/svg+xml;image/svg+xml-compressed;image/vnd.wap.wbmp;
/usr/share/applicationsで確認できます