XDG MIME Applications
XDG MIME Applications specification は デフォルトアプリケーション を用意するために 共有 MIME データベース と デスクトップエントリ から成り立っています。
- XDG MIME Applications は どの MIME type を扱うことができるかを デスクトップエントリ を使って定義します。
- desktop-file-utils は pacman フック であり、デスクトップエントリが扱う MIME type のデータベースを構築します。詳細は update-desktop-database(1) を見て下さい。
- XDG MIME Applications は
/usr/share/mime/packages/
に XML ファイルを置くことにより新しい MIME タイプ をインストールできます。 - shared-mime-info は Shared MIME-Info database cache を構築するために pacman フック を登録します。詳しくは update-mime-database(1) を参照して下さい。
- デスクトップ環境 とユーザーは mimeapps.list ファイルを通じて特定の MIME タイプ に紐付くデフォルトアプリケーションの変更や設定、削除ができます。
目次
共有 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 |
(非推奨) ユーザーオーバーライド |
/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
によって上書きされます。
スキャンされたすべてのファイルを検出するには、環境変数 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.desktop
とbaz.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 ファイルの定義に従ってプログラムを起動します。デスクトップエントリ#アプリケーションエントリを参照してください。
通常、パッケージ化された .desktop ファイルの設定は必要ありませんが、バグがないとは限りません。関連付けに使用する .desktop ファイルの MimeType
変数に必要な MIME タイプの記述があるアプリケーションでも、正しく起動しない、全く起動しない、ファイルを開かずに起動するなどの不具合が発生することがあります。
これは、例えば、Exec
変数に、ファイルを開く方法や、アプリケーションをメニューに表示する方法などに必要な内部オプションがない場合に起こるかもしれません。Exec 変数は通常 %
で始まります。現在サポートされているオプションについては、exec-variables を参照してください。
次の表は、MIME タイプが関連付けられている場合、アプリケーションの起動方法に影響を与える .desktop ファイルの主な変数エントリをリストアップしたものです。
変数名 | 内容例1 | 内容例2 | 説明 |
---|---|---|---|
DBusActivatable | DBusActivatable=true | DBusActivatable=false | アプリケーションは D-Bus とやり取りします。D-Bus 設定も参照してください。 |
MimeType | MimeType=application/vnd.oasis.opendocument.text | MimeType=application/vnd.sun.xml.math | アプリケーションがサポートする MIME タイプのリスト |
StartupWMClass | StartupWMClass=google-chrome | StartupWMClass=xpad | ウィンドウを所有アプリケーションに関連付ける |
Terminal | Terminal=true | Terminal=false | デフォルトのターミナルで起動 |