XDG MIME Applications

提供: ArchWiki
2023年8月21日 (月) 19:03時点におけるAshMyzk (トーク | 投稿記録)による版 (→‎書式: 訳を修正)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

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

  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 タイプ をインストールできます。
  4. shared-mime-info は Shared MIME-Info database cache を構築するために pacman フック を登録します。詳しくは update-mime-database(1) を参照して下さい。
  5. デスクトップ環境 とユーザーは 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 によって上書きされます。

ヒント: 非推奨ですが、~/.local/share/applications/mimeapps.list を読み書きするアプリケーションはまだあります。メンテナンスを簡単にするために、~/.config/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 ファイルの定義に従ってプログラムを起動します。デスクトップエントリ#アプリケーションエントリを参照してください。

通常、パッケージ化された .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 デフォルトのターミナルで起動
翻訳ステータス: このページは en:XDG MIME Applications の翻訳バージョンです。最後の翻訳日は 2022-09-14 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。