XDG MIME Applications

提供: ArchWiki
2022年9月13日 (火) 10:32時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎Troubleshooting: 飜訳)
ナビゲーションに移動 検索に移動

関連記事

XDG MIME Applications specificationデフォルトアプリケーション を用意するために shared MIME databaseデスクトップエントリ から成り立っています。

  1. XDG MIME Applications は どの MIME type を扱うことができるかを デスクトップエントリ を使って定義します。
  2. desktop-file-utilspacman フック であり、デスクトップエントリが扱う MIME type のデータベースを構築します。詳細は update-desktop-database(1) を見て下さい。
  3. XDG MIME Applications は /usr/share/mime/packages/ に XML ファイルを置くことにより新しい MIME type をインストールできます。
  4. shared-mime-info は Shared MIME-Info database cache を構築するために pacman フック を登録します。詳しくは update-mime-database(1) を参照して下さい。
  5. デスクトップ環境 とユーザーは mimeapps.list ファイルを通じて特定の MIME type に紐付くデフォルトアプリケーションの変更や設定、削除ができます。

共有 MIME データベース

XDG Shared MIME-info Database specification 仕様は、デスクトップ環境間での MIME データベースの共有を容易にし、アプリケーションがシステム全体で新しい MIME タイプを簡単に登録できるようにするものです。

データベースは、/usr/share/mime/packages/ にあるパッケージによってインストールされた XML ファイルから shared-mime-info のツールを使って構築されます。

/usr/share/mime/ にあるファイルを直接編集してはいけませんが、 ~/.local/share/mime/ ツリーにあるデータベースをユーザーごとに管理することは可能です。

「URI スキームの処理 [...] は、x-scheme-handler/foo MIME タイプを処理するアプリケーションを通して処理されます(foo は問題の URI スキーム)」[1]

新しい MIME タイプ

この例では、新しい MIME タイプ application/x-foobar を定義し、.foo で終わる名前を持つすべてのファイルに割り当てています。単に次のようなファイルを作成します。

~/.local/share/mime/packages/application-x-foobar.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    <mime-type type="application/x-foobar">
        <comment>foo file</comment>
        <icon name="application-x-foobar"/>
        <glob-deleteall/>
        <glob pattern="*.foo"/>
    </mime-type>
</mime-info>

次に、MIME データベースを更新します。

$ update-mime-database ~/.local/share/mime

もちろん、デスクトップエントリが MIME タイプに関連付けられていない場合、これは効果がありません。新しいデスクトップエントリを作成するか、mimeapps.list を変更する必要がある場合があります。

mimeapps.list

XDG 標準は、デスクトップ環境を設定するための最も一般的な規格です。各 MIME タイプのデフォルトのアプリケーションは、mimeapps.list ファイルに格納されています。これらは以下の順序で検索され、先に関連づけられたものが後に関連づけられたものよりも優先されます。

Path Usage
~/.config/mimeapps.list ユーザーオーバーライド
/etc/xdg/mimeapps.list システム全体のオーバーライド
~/.local/share/applications/mimeapps.list (非推奨) user overrides
/usr/local/share/applications/mimeapps.list
/usr/share/applications/mimeapps.list
ディストリビューション提供のデフォルト

さらに、デスクトップ環境固有のデフォルトアプリケーションを desktop-mimeapps.list というファイルに定義することができます。desktop は (XDG_CURRENT_DESKTOP 環境変数から) デスクトップ環境の名前です。例えば、/etc/xdg/xfce-mimeapps.list は、Xfce のシステム全体のデフォルトアプリケーションのオーバーライドを定義します。これらのデスクトップ固有のオーバーライドは、対応する非デスクトップ固有のファイルより優先されます。例えば、/etc/xdg/xfce-mimeapps.list/etc/xdg/mimeapps.list より優先されますが、 ~/.config/mimeapps.list によって上書きされます。

ヒント: Although deprecated, several applications still read/write to ~/.local/share/applications/mimeapps.list. To simplify maintenance, simply symlink it to ~/.config/mimeapps.list:
$ ln -s ~/.config/mimeapps.list ~/.local/share/applications/mimeapps.list
ノート: これらの場所には defaults.list という名前のファイルがある場合もあります。このファイルは mimeapps.list と似ていますが、デフォルトのアプリケーションのみをリストアップしています(追加/削除された関連付けはリストアップされません)。現在では非推奨となっており、手動で mimeapps.list にマージする必要があります。

スキャンされたすべてのファイルを検出するには、環境変数 XDG_UTILS_DEBUG_LEVEL=2 を設定してデバッグ モードを有効にすることができます。例えば、xdg-mime query default <type> コマンドは、MIME 情報を検索する各設定ファイルを表示します。

書式

以下の例を検討してください。

mimeapps.list
[Added Associations]
image/jpeg=bar.desktop;baz.desktop
video/H264=bar.desktop
[Removed Associations]
video/H264=baz.desktop
[Default Applications]
image/jpeg=foo.desktop

各セクションは、1 つ以上のデスクトップエントリを MIME タイプに割り当てます。

  • Added Associations はアプリケーションがその MIME タイプを開くことをサポートしていることを示します。たとえば、bar.desktopbaz.desktop は、JPEG 画像を開くことができます。これは、ファイルブラウザでファイルを右クリックしたときに表示されるアプリケーションのリストに影響する場合があります。
  • Removed Associations はアプリケーションがその MIME タイプをサポートしていないことを示します。たとえば、baz.desktop は H.264 ビデオを開くことができません。
  • Default Applications はその MIME タイプを開くためのアプリケーションをデフォルトで選択する必要があることを示します。たとえば、JPEG 画像は foo.desktop で開く必要があります。これは、アプリケーションと MIME タイプの間に暗黙のうちに関連付けを行います。複数のアプリケーションがある場合は、順番に試行されます。

各セクションはオプションであり、不要な場合は省略可能です。

ユーティリティー

mimeapps.list共有 MIME データベースを直接編集することでデフォルトのアプリケーションと MIME タイプを設定することは可能ですが、このプロセスを簡略化する多くのツールがあります。これらのツールはまた、アプリケーションが自分自身で MIME タイプ標準を実装しようとするよりも、これらのツールにファイルのオープンを委ねるかもしれないので、重要である。

デスクトップ環境を使っているならば、まずその環境が独自のユーティリティを提供しているかどうかを確認すべきです。それは、これらの選択肢よりも優先されるべきものです。

公式の xdg-utils には、XDG 標準に従って MIME タイプとデフォルトのアプリケーションを管理するためのツール (xdg-mime) が含まれています。最も重要なのは、多くのアプリケーションがデフォルトのアプリケーションでファイルを開くために使用する xdg-open が提供されていることです。

lsdesktopf

lsdesktopfAUR は、MIME データベースとデスクトップ MIME エントリを検索するいくつかの方法を提供します。

例えば、システムの .desktop ファイルで MIME タイプが video の全ての MIME 拡張を見るには lsdesktopf --gm -gx video を、XML データベースファイルを検索するには lsdesktopf --gdx -gx video を使ってください。特定の MIME タイプに関連する .desktop ファイルの数とその概要を知るには、lsdesktopf --gen-mimeapps を使用します。XML データベースファイルのすべてのファイル名拡張子を見るには、lsdesktopf --gdx -gfx を使用します。

selectdefaultapplication

selectdefaultapplication-gitAUR は様々な mimetypes をサポートするアプリケーションをリストアップし、(mimeapps.list を修正することで) サポートする mimetypes の全てまたは一部をデフォルトとして素早く設定できる GUI アプリケーションです。

「読みやすい」名前とファイル拡張子も表示されるので、mimetypes の名前を覚えておく必要はありません。

トラブルシューティング

ファイルが目的の既定のアプリケーションで開かれていない場合は、いくつかの原因が考えられます。ケースごとに確認する必要があるかもしれません。

デスクトップエントリの欠落

アプリケーションを MIME タイプに関連付けるには、デスクトップエントリが必要です。そのようなエントリが存在し、アプリケーションでファイルを(手動で)開くことができることを確認してください。

関連付けの欠落

アプリケーションのデスクトップエントリがその MimeType キーの下で MIME タイプ を指定しない場合、そのタイプを開くためにアプリケーションが必要なときに考慮されません。mimeapps.list を編集して、.desktop ファイルと MIME タイプの間に関連付けを追加します。

デフォルトでないアプリケーション

デスクトップエントリが MIME タイプと関連付けられている場合、単にデフォルトとして設定されていないだけかもしれません。mimeapps.list を編集してデフォルトの関連付けを設定してください。

非標準の関連付け

アプリケーションは、XDG 標準を無視したり、部分的にしか実装しなかったりすることができます。~/.local/share/applications/mimeapps.list~/.local/share/applications/defaults.list などの非推奨のファイルが使用されていないかどうか確認してください。他のアプリケーション(Web ブラウザやファイル マネージャなど)からファイルを開こうとしている場合は、そのアプリケーションにデフォルトのアプリケーションを選択する独自の方法があるかどうかを確認します。

アプリケーションの起動に影響を与える .desktop ファイル内の変数

Desktop environments and file managers supporting the specifications launch programs according to definition in the .desktop files. See デスクトップエントリ#アプリケーションエントリ.

Usually, configuration of the packaged .desktop files is not required, but it may not be bug-free. Even if an application containing necessary MIME type description in the .desktop file MimeType variable that is used for association, it can fail to start correctly, not start at all or start without opening a file.

This may happen, for example, if the Exec variable is missing internal options needed for how to open a file, or how the application is shown in the menu. The Exec variable usually begins with %; for its currently supported options, see exec-variables.

The following table lists the main variable entries of .desktop files that affect how an application starts, if it has a MIME type associated with it.

Variable names Example 1 content Example 2 content Description
DBusActivatable DBusActivatable=true DBusActivatable=false Application interact with D-Bus.
See also configuration: D-Bus.
MimeType MimeType=application/vnd.oasis.opendocument.text MimeType=application/vnd.sun.xml.math List of MIME types supported by application
StartupWMClass StartupWMClass=google-chrome StartupWMClass=xpad Associate windows with the owning application
Terminal Terminal=true Terminal=false Start in default terminal