「デフォルトアプリケーション」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(update Pkg/AUR templates)
 
(4人の利用者による、間の28版が非表示)
1行目: 1行目:
[[Category:クトップ環境]]
+
[[Category:テム管理]]
 
[[en:Default applications]]
 
[[en:Default applications]]
  +
[[ru:Default applications]]
 
[[zh-hans:Default applications]]
 
[[zh-hans:Default applications]]
  +
プログラムはさまざまな方法でデフォルトのアプリケーションの関連付けを実装します。コマンドラインプログラムは伝統的に[[環境変数#デフォルトプログラム|環境変数]]を使いますが、グラフィカルアプリケーションでは、[[Wikipedia:GIO (software)|GIO]] API、[[Qt]] API または [[xdg-utils]] の一部である {{ic|/usr/bin/xdg-open}} を実行することで、[[XDG MIME Applications]] を使用する傾向があります。[[xdg-open]] や [[XDG MIME Applications]] は非常に複雑なので、様々な代替[[#リソースオープナー|リソースオープナー]]が開発されました。次の表は、それぞれの方法のアプリケーション例です。
{{Related articles start}}
 
{{Related|デスクトップ環境}}
 
{{Related|ウィンドウマネージャ}}
 
{{Related articles end}}
 
特定のファイルタイプで使用するようにデフォルトアプリケーションを設定することが可能です (例: {{ic|HTML}} ファイルを表示するプログラムとして [[Firefox]] ウェブブラウザを設定)。ちゃんと設定することで、使用したいアプリケーションでファイルを素早く簡単に開いたり編集することができます。Linux でデフォルトアプリケーションを設定する方法は様々です。このページでは最も一般的な方法を説明します: ファイルマネージャ, MIME タイプ, 環境変数。
 
   
  +
{| class=wikitable
== MIME タイプとデスクトップエントリ ==
 
  +
! メソッド !! XDG を使用 !! アプリケーション例 !! アソシエーションをチェック
 
最近ではアプリケーションは[[デスクトップエントリ]]を使って起動されます。この方法では、アプリケーションが開くことができるファイルの種類 (正確に言えば MIME タイプ) を定義できます。例えば {{ic|gimp.desktop}} には {{ic|<nowiki>MimeType=image/bmp;image/gif;...</nowiki>}} と記述されています。
 
 
[http://www.freedesktop.org/wiki freedesktop.org] は [http://standards.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html Association between MIME types and applications] の標準に従って特定の MIME タイプのデフォルトの (使いたい) アプリケーションを指定することを推奨しています。設定するには以下のパスにある {{ic|mimeapps.list}} という名前のファイルを探して書き込みを行う必要があります:
 
 
{| class="wikitable"
 
! パス !! 使用方法
 
 
|-
 
|-
  +
| [https://developer.gnome.org/gio/stable/GAppInfo.html GIO の GAppInfo] || Yes || [[Firefox]], [[GNOME Files]], [[PCManFM]], [[Thunar]], [[Thunderbird]], [[Telegram]] || {{ic|gio mime ''mimetype''}}
| {{ic|$HOME/.config/$desktop-mimeapps.list}} || デスクトップごとに、ユーザーが定義します
 
 
|-
 
|-
  +
| {{ic|/usr/bin/xdg-open}} || By default || [[Chromium]] (ダウンロードしたファイルを開く) || {{ic|xdg-mime query default ''mimetype''}}
| {{ic|$HOME/.config/mimeapps.list}} || ユーザーが定義します
 
 
|-
 
|-
  +
| custom || Usually not || [[mc]], [[ranger]] || {{-}}
| {{ic|/etc/xdg/$desktop-mimeapps.list}} || デスクトップごとに、システム管理者やソフトウェアが定義します
 
 
|-
 
|-
  +
| [[環境変数#デフォルトプログラム|環境変数]] || No || [[man]], [[sudoedit]], [[systemctl]] || {{-}}
| {{ic|/etc/xdg/mimeapps.list}} || システム管理者やソフトウェアが定義します
 
 
|-
 
|-
  +
| [[D-Bus]] の FileManager1 || org.freedesktop.FileManager1 || [[Firefox]] (Open containing folder), Zotero (ファイルを表示), [[Telegram]] (フォルダに表示) || {{-}}
| {{ic|$HOME/.local/share/applications/$desktop-mimeapps.list}} || デスクトップごとに、互換性のために存在しますが現在は非推奨です
 
|-
 
| {{ic|$HOME/.local/share/applications/mimeapps.list}} || 互換性のために存在しますが現在は非推奨です
 
|-
 
| {{ic|/usr/local/share/applications/$desktop-mimeapps.list}} と <br>{{ic|/usr/share/applications/$desktop-mimeapps.list}} || ディストリビューションによるデフォルト、デスクトップごと
 
|-
 
| {{ic|/usr/local/share/applications/mimeapps.list}} と <br>{{ic|/usr/share/applications/mimeapps.list}} || ディストリビューションによるデフォルト
 
 
|}
 
|}
   
  +
多くの[[デスクトップ環境]]とグラフィカル[[ファイルマネージャ]]は、デフォルトのアプリケーションを設定するための GUI を提供します。
上の表にある、{{ic|$VARS}} は環境変数で {{ic|$desktop}} は使用しているデスクトップの名前です (小文字)。例: {{ic|kde}}, {{ic|gnome}}, {{ic|xfce}} など。
 
   
  +
{{Note|[[XDG MIME Applications]] 仕様では、MIME タイプ定義ファイルに他のタイプのサブクラスやエイリアスを作成することができます。このため、アプリケーションで対象となる型は直接サポートされないものの、サブクラス化された型はサポートされるような MIME 型が存在する場合、その取り扱いが不明確になる可能性があります。例えば、Firefox は {{ic|application/rss+xml}} を GIO 経由で解決し、最終的に自分自身で開くことができます。これは、タイプが {{ic|application/xml}} をサブクラス化し、Firefox がそのデフォルトハンドラであるためです。}}
特定の MIME タイプのデフォルトアプリケーションを指定するには {{ic|mimeapps.list}} ファイルの {{ic|[Default Applications]}} グループに記述します。以下の例では、{{ic|mimetype1}} ではアプリケーション {{ic|default1.desktop}} または (default1 がインストールされていない場合) {{ic|default2.desktop}} が使われます:
 
   
  +
== 背景情報 ==
[Default Applications]
 
mimetype1=default1.desktop;default2.desktop
 
   
  +
プログラムは、ファイルや [[Wikipedia:Uniform Resource Identifier|URI]] をユーザーの好みのアプリケーションで開く必要がある場合があります。ユーザーの好みのアプリケーションでファイルを開くには、ファイルタイプを検出し(通常はファイル名の拡張子か [[Wikipedia:Media type|MIME タイプ]]にマッピングされた[[Wikipedia:List of file signatures|マジックナンバー]]を使用)、そのファイルタイプに関連するアプリケーションが存在する必要があります。
アプリケーションはセミコロンで区切って [http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#desktop-file-id デスクトップファイル ID] を使って指定します。
 
   
  +
[[Heirloom]] UNIX のプログラムでは、MIME タイプの検出には [[Wikipedia:Media type#mime.types|mime.types]] を、アプリケーションの関連付けには [[Wikipedia:Media type#Mailcap|mailcap]] を使用していました。
エントリが存在しない場合、次のパスの {{ic|mimeapps.list}} がチェックされます。全てのパスをチェックしても、エントリが存在しなかった場合、MIME タイプと関連付けられている ''.desktop'' ファイルからプログラムが選択されます。その際 {{ic|mimeapps.list}} ファイルに指定されている他のグループの追加・削除された関連付けが考慮されます:
 
   
  +
== リソースオープナー ==
[Added Associations]
 
mimetype1=foo1.desktop;foo2.desktop;foo3.desktop
 
mimetype2=foo4.desktop
 
[Removed Associations]
 
mimetype1=foo5.desktop
 
   
  +
* '''XDG MIME Apps''': [[XDG MIME Applications]] 仕様を実装しています。
{{ic|[Added Associations]}} グループには MIME タイプとアプリケーションの追加の関連付けが定義されています。''.desktop'' ファイルに最初から MIME タイプが記載されているかのように扱われます。{{ic|[Removed Associations]}} グループは MIME タイプとアプリケーションの関連付けを削除します。''.desktop'' ファイルに最初から MIME タイプが記載されていなかったかのように扱われます。{{ic|[Default Applications]}} のエントリはアプリケーションと MIME タイプの関連付けの追加を同様にするものと考えてください。
 
  +
* '''RegEx ルール''': 正規表現を使用して MIME タイプとアプリケーションを関連付けることができます。
  +
* '''URI サポート''': 任意の URI スキームをアプリケーションと関連付けることができます。
   
  +
{| class="wikitable"
{{Note|
 
  +
! 名前 !! パッケージ !! XDG MIME Apps !! RegEx ルール !! URI サポート
* Arch Linux は関連付けに関してシステム全体の設定は提供していませんが、他のディストリビューションやデスクトップ環境は {{ic|mimeapps.list}} で関連付けを用意していたり、あるいは旧式の {{ic|defaults.list}} ファイルを使っていたりします。
 
  +
|-
* デフォルトアプリケーションの設定に関する仕様は最近変更されたばかりであり、全てのプログラムが仕様に準拠しているわけではありません。事実、freedesktop.org の {{Pkg|xdg-utils}} パッケージに含まれているプログラムでさえ彼らが決めた仕様に完全には従っていないものがあります。
 
  +
|[[xdg-open]] || [[xdg-utils]] || {{Yes}} || {{No}} || {{Yes}}
* どのデスクトップ環境を使用しているか、あるいはデスクトップ環境を使用していないかでデフォルトアプリケーションが保存される方法も変わってきます。
 
  +
|-
* {{ic|update-desktop-database}} プログラムが実行されたとき (通常、root でパッケージを(アン)インストールしたときに実行されます)、{{ic|/usr/local/share/applications}} や {{ic|/usr/share/applications}} ディレクトリに存在する {{ic|mimeinfo.cache}} という名前のファイルが更新されます。ファイルには ''.desktop'' ファイルと MIME タイプの関連付けが全て記録されています。ユーザーが手動でファイルを編集してはいけません。
 
  +
|{{man|1|gio}} || {{pkg|glib2}} || {{Yes}} || {{-}} || {{Yes}}
}}
 
  +
|-
  +
|{{man|1p|mimeopen}} || {{Pkg|perl-file-mimeinfo}} || {{Yes}} || {{No}} || {{No}}
  +
|-
  +
|mimeo || {{AUR|mimeo}} || {{Yes}} || {{Yes}} || {{Yes}}
  +
|-
  +
|mimi || {{AUR|mimi}}, {{AUR|mimi-git}} || {{No}} || {{No}} || {{Y|部分的に}}
  +
|-
  +
|busking || {{AUR|busking-git}} || {{No}} || {{Yes}} || {{Yes}}
  +
|-
  +
|{{man|1|rifle}} || [[ranger]] || {{No}} || {{Yes}} || {{No}}
  +
|-
  +
|handlr || {{pkg|handlr-regex}} || {{Yes}} || {{Yes}} || {{Yes}}
  +
|-
  +
|clifm || {{AUR|clifm}} || {{No}} || {{Yes}} || {{Y|部分的に}}
  +
|-
  +
|mimejs-git || {{AUR|mimejs-git}} || {{No}} || {{No}} || {{Yes}}
  +
|}
   
=== ファイルマネージャ ===
+
=== xdg-open ===
   
  +
[[xdg-open]] ([[xdg-utils]] の一部) は、[[XDG MIME Applications]] を実装し、多くのプログラムで使用されています。
ほとんどのファイルマネージャは,様々なファイルタイプに対して特定のアプリケーションをデフォルトのアプリケーションとして設定することができます。いつでも新たなデフォルトアプリケーションを設定することができます。例えば、[[Xfce]] の標準ファイルマネージャである {{pkg|thunar}} を使ってデフォルトアプリケーションを設定するには:
 
   
  +
[[xdg-utils]] 版の [[xdg-open]] は複雑なため、間違ったデフォルトのアプリケーションが開かれる場合はデバッグが困難になる場合があります。このため、これを改善しようとする代替手段が多く存在します。これらの代替品のいくつかは、{{ic|/usr/bin/xdg-open}} 実行ファイルを置き換えるので、ほとんどのアプリケーションのデフォルトのアプリケーションの動作を変更します。その他は、単にデフォルトアプリケーションを選択するための代替方法を提供するものです。
* 設定したいファイルタイプを持つファイルを {{ic|右クリック}} する
 
* {{ic|Open with another application}} を選ぶ
 
* 所望のアプリケーションを選ぶ
 
* {{ic|Use as default for this kind of file}} チェックボックスにチェックが入っているか確認する
 
* {{ic|Open}} ボタンをクリックする
 
   
  +
=== perl-file-mimeinfo ===
[[PCManFM]] や {{AUR|spacefm}} のような、他のほとんどのファイルマネージャでも一般的な手順は非常に似ています。
 
   
  +
{{Pkg|perl-file-mimeinfo}} は {{man|1p|mimeopen}} と {{man|1p|mimetype}} というツールを提供します。これらは、{{pkg|xdg-utils}} の同等品より少し良いインターフェイスを持っています。
=== Gnome Control Center ===
 
 
Gnome コントロールセンターがインストールされている場合、{{ic|gnome-control-center}} を実行して {{ic|System}} &gt; {{ic|Details}} &gt; {{ic|Default Applications}} を開いてください。
 
 
=== gnome-defaults-list ===
 
 
{{AUR|gnome-defaults-list}} は [[AUR]] からインストールできます。ファイルタイプと GNOME デスクトップのプログラムのリストが含まれています。リストは {{ic|/etc/gnome/defaults.list}} にインストールされます。
 
 
インストールされたファイルをテキストエディタで開いてください。特定のアプリケーションを適当なプログラムの名前で置き換えることができます。例えば、メディアプレイヤーの {{ic|totem}} を {{ic|vlc}} など他のアプリケーションで置き換えることが可能です。変更したファイルは {{ic|~/.local/share/applications/defaults.list}} に保存してください。
 
 
=== xdg-open ===
 
   
  +
# determine a file's MIME type
[[xdg-open]] はデフォルトアプリケーションを起動するためのデスクトップ非依存のツールです。多くのアプリケーションは内部的に {{ic|xdg-open}} コマンドを呼び出しています。xdg-open は xdg-mime を使って {{ic|~/.local/share/applications/mimeapps.list}} (他のファイルも使います。GNOME, KDE, LXDE などのメインストリームになっている DE を使っている場合、xdg-open は xdg-mime より先にデスクトップ環境のツールを試行します) から、開こうとしているファイルの MIME タイプと、その MIME タイプに関連付けられているデフォルトアプリケーションを確認します。
 
  +
$ mimetype photo.jpeg
  +
photo.jpeg: image/jpeg
  +
  +
# choose the default application for this file
  +
$ mimeopen -d photo.jpeg
  +
Please choose an application
  +
  +
1) Feh (feh)
  +
2) GNU Image Manipulation Program (gimp)
  +
3) Pinta (pinta)
  +
  +
use application #
  +
  +
# open a file with its default application
  +
$ mimeopen -n photo.jpeg
   
  +
最も重要なことは、[[xdg-utils]] プログラムが[[デスクトップ環境]]を検出しない場合、MIME タイプ検出のために {{ic|mimetype}} の代わりに {{ic|file}} を実際に呼び出すことです。{{ic|file}} は XDG 標準に準拠していないため、これは重要なことです。
詳しくは [[xdg-open]] を見てください。
 
   
  +
{{Note|0.28-1 以前の {{pkg|perl-file-mimeinfo}} は XDG 標準に''完全に''従っていたわけではありません。例えば、[https://github.com/mbeijen/File-MimeInfo/issues/20 ディストリビューション全体のデフォルト] を読み込まなかったり、[https://github.com/mbeijen/File-MimeInfo/issues/8 非推奨の場所] に設定を保存していました。}}
=== Mimeo ===
 
   
  +
=== mimeo ===
[http://xyne.archlinux.ca/projects/mimeo Mimeo] はコマンドラインのファイル関連付けマネージャであり、ウェブブラウザやメールクライアントなどのアプリケーションからファイルを開くためのランチャーとして使うことができます。[https://www.freedesktop.org/wiki/Specifications/ freedesktop.org の仕様] を順守していますが、一方で非推奨となっている (なのに未だに使われている) {{ic|~/.local/share/applications/mimeapps.list}} もオプションでサポートしています。正規表現によるファイルの関連付けもサポートしており、任意の文字列をアプリケーションに関連付けることが可能です (例: YouTube の URL を VLC で開いたり、蛋白質データベースのファイルを PyMol で開くなど)。Mimeo は AUR からインストールしたり ({{AUR|mimeo}})、[http://xyne.archlinux.ca/repos/ Xyne のリポジトリ] からインストールできます。
 
   
  +
{{aur|mimeo}} は {{ic|xdg-open}} と {{ic|xdg-mime}} の機能を統合したツール {{ic|mimeo}} を提供します。
=== ファイルの関連付けのカスタマイズ ===
 
   
  +
次の例では、SVG ファイルを Inkscape に関連付ける方法を示します:
以下は手動で MIME タイプとファイルの関連付けをカスタマイズする方法です。デスクトップに MIME タイプやファイルの関連付けのエディタをインストールしていない場合に有用です。この例では、架空のマルチメディアアプリケーション 'foobar' を {{ic|*.foo}} ファイルに関連付けます。設定は現在のユーザーでのみ反映されます。
 
   
  +
# determine a file's MIME type
まず {{ic|~/.local/share/mime/packages/application-x-foobar.xml}} ファイルを作成:
 
  +
$ mimeo --mimetype Svg_example2.svg
  +
Svg_example2.svg
  +
image/svg+xml
  +
  +
# determine desktop file associated with executable "inkscape"
  +
$ mimeo --app2desk inkscape
  +
inkscape
  +
org.inkscape.Inkscape.desktop
  +
  +
# find desktop file path
  +
$ mimeo --finddesk org.inkscape.Inkscape.desktop
  +
/usr/share/applications/org.inkscape.Inkscape.desktop
  +
  +
# choose the default application for this MIME type
  +
$ mimeo --prefer image/svg+xml org.inkscape.Inkscape.desktop
  +
  +
# check association
  +
$ mimeo --mime2desk image/svg+xml
  +
image/svg+xml
  +
org.inkscape.Inkscape.desktop
  +
  +
# open a file with its default application
  +
$ mimeo Svg_example2.svg
   
  +
{{ic|mimeapps.list}} ファイルへのパスを見つけることもできます:
$ mkdir -p ~/.local/share/mime/packages
 
  +
$ mimeo --mimeapps-list
$ cd ~/.local/share/mime/packages
 
  +
/home/user/.config/mimeapps.list
$ touch application-x-foobar.xml
 
   
  +
ただし、''xdg-utils'' との大きな違いは、mimeo がより複雑な関連付けを可能にするカスタムの "関連付けファイル" もサポートしていることです。たとえば、正規表現の一致に基づいて特定のコマンドライン引数を渡します。
そして {{ic|~/.local/share/mime/packages/application-x-foobar.xml}} を編集して以下の文章を追加:
 
   
  +
# open youtube links in VLC without opening a new instance
{{bc|<nowiki>
 
  +
vlc --one-instance --playlist-enqueue %U
<?xml version="1.0" encoding="UTF-8"?>
 
  +
^https?://(www.)?youtube.com/watch\?.*v=
<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>
 
</nowiki>}}
 
   
  +
{{aur|xdg-utils-mimeo}} は ''xdg-utils''bにパッチを適用し、デスクトップ環境が検出されない場合に {{ic|xdg-open}} が mimeo に戻るようにします。
アイコンは自由に使うことができます。他のアプリケーションのアイコンでもかまいません。
 
   
  +
=== handlr ===
次に、{{ic|~/.local/share/applications/foobar.desktop}} ファイルを作成・編集して以下を記述:
 
   
  +
Rust で書かれた {{Pkg|handlr}} は {{ic|xdg-open}} と {{ic|xdg-mime}} の機能を効率的なインタフェースで提供します。
{{bc|<nowiki>
 
[Desktop Entry]
 
Name=Foobar
 
Exec=/usr/bin/foobar
 
MimeType=application/x-foobar
 
Icon=foobar
 
Terminal=false
 
Type=Application
 
Categories=AudioVideo;Player;Video;
 
Comment=
 
</nowiki>}}
 
   
  +
{{ic|xdg-utils}} と比較すると、以下のような点が挙げられます。
Categories はアプリケーションのタイプにあわせて適当に設定してください (上記の例では、マルチメディアアプリケーション)。
 
  +
* 拡張子による関連付けの設定、mime タイプを調べたり覚えたりする必要性を排除
  +
* mime タイプと拡張子の検証
  +
* {{ic|mimeapps.list}} から無効なエントリを削除します。
  +
* ファイル名が曖昧な場合、ファイルの内容から mime タイプをインテリジェントに検出します。
  +
* mime、拡張子、デスクトップエントリーのオートコンプリートに対応
  +
* 正規表現に基づいて任意のコマンドをハンドラとして設定する。
   
  +
# The following two are identical
そしてアプリケーションと MIME データベースを更新:
 
  +
handlr set .png feh.desktop
  +
handlr set image/png feh.desktop
  +
  +
# List default apps
  +
handlr list
  +
  +
# Get the handler for a mime/extension
  +
$ handlr get .png --json
  +
{"handler":"pqiv.desktop","name":"pqiv","cmd":"/usr/bin/pqiv"}
  +
  +
# Launch a handler with optional path/URL
  +
handlr launch x-scheme-handler/https
  +
handlr launch x-scheme-handler/https -- https://google.ca
   
  +
{{ic|handlr}} を {{ic|xdg-open}} の代わりに使用するには、次のスクリプトでシャドウします。
$ update-desktop-database ~/.local/share/applications
 
$ update-mime-database ~/.local/share/mime
 
   
  +
#!/usr/bin/bash
これで、ファイルマネージャなど、MIME タイプを使用するプログラムは {{ic|*.foo}} ファイルを foobar で開くようになります (変更を適用するにはファイルマネージャを再起動する必要があるかもしれません)。
 
  +
handlr open "$@"
   
  +
=== clifm ===
=== 複数のデスクトップ環境の設定を管理 ===
 
   
  +
{{ic|clifm}} の組み込みリソースオープナーである ''Lira'' は、{{ic|--open}} コマンドラインオプションを介してスタンドアロンのリソースオープナーとして使用できます。設定ファイル ({{ic|~/.config/clifm/profiles/PROFILE_NAME/mimelist.clifm}}) は、MIME タイプとファイル名 (またはファイル拡張子) の両方の正規表現をサポートしています。いくつかの例:
.desktop ファイルの {{ic|OnlyShowIn}} フィールドを利用することができます。[http://standards.freedesktop.org/menu-spec/latest/ このページ] を見て下さい。
 
   
  +
# Open a regular file
== 環境変数を使う ==
 
  +
clifm --open /etc/hosts
  +
  +
# Open a directory
  +
clifm --open /media/data
  +
  +
# Open an URL (via the application associated to the text/http MIME type in the configuration file)
  +
clifm --open www.archlinux.org
   
  +
=== ミニマルなリプレイスメント ===
グラフィカルでないプログラムのほとんどは {{ic|EDITOR}} や {{ic|BROWSER}} などの[[環境変数]]を使います。環境変数はターミナルの自動起動ファイルで設定できます (例: {{ic|~/.bashrc}}):
 
   
  +
以下のパッケージは独自の {{ic|/usr/bin/xdg-open}} スクリプトを提供しているため、 {{Pkg|xdg-utils}} と競合して提供されます。
{{hc|~/.bashrc|<nowiki>
 
export EDITOR="nano"
 
export BROWSER="firefox"
 
</nowiki>}}
 
   
  +
もし、{{Pkg|xdg-utils}} を使用しながら、これらのリソースオープナーを使用したい場合、{{ic|/usr/bin}} より前の PATH ディレクトリに手動でインストールしてください。
== トラブルシューティング ==
 
   
  +
* {{AUR|mimi-git}} - 130 行の Bash スクリプトで、MIME タイプごとにコマンド引数を変更することができます。
=== (ファイルマネージャにある) コンテキストメニューの「他のアプリケーションで開く」でアプリケーションが表示されない ===
 
  +
* {{AUR|busking-git}} - 80 行の Perl スクリプトで、''mimi''に似ていますが、正規表現もサポートしています。
   
  +
==== mailcap の実行 ====
ときどき、右クリックの''他のアプリケーションで開く''ダイアログに特定のアプリケーションが表示されないことがあります。この問題を修正するには、{{Ic|/usr/share/applications}} にある {{Ic|.desktop}} ファイルを探して、root で編集し、{{Ic|1=<nowiki>Exec=</nowiki>}} 行の末尾に {{Ic|%U}} を追加してください。例えば Kile の場合、{{Ic|/usr/share/applications/kde4/kile.desktop}} を編集して {{Ic|1=<nowiki>Exec=kile</nowiki>}} という行を {{Ic|1=<nowiki>Exec=kile %U</nowiki>}} と変更する必要があります。この問題に気づいたときは、上流のプロジェクトにバグの報告をするようにしてください。
 
   
  +
{{Warning|{{AUR|run-mailcap}} を使うと {{ic|xdg-open}} がそれに委譲する可能性があります。もし {{Pkg|mailcap}} の {{ic|/etc/mailcap}} を使っているならば、これも {{ic|xdg-open}} に委譲されるので、無限ループを引き起こします。}}
You may also have to edit the {{Ic|MimeType}} list in the {{Ic|.desktop}} file if you install extensions that allow an application to handle additional MIME types.
 

2024年7月29日 (月) 02:11時点における最新版

プログラムはさまざまな方法でデフォルトのアプリケーションの関連付けを実装します。コマンドラインプログラムは伝統的に環境変数を使いますが、グラフィカルアプリケーションでは、GIO API、Qt API または xdg-utils の一部である /usr/bin/xdg-open を実行することで、XDG MIME Applications を使用する傾向があります。xdg-openXDG MIME Applications は非常に複雑なので、様々な代替リソースオープナーが開発されました。次の表は、それぞれの方法のアプリケーション例です。

メソッド XDG を使用 アプリケーション例 アソシエーションをチェック
GIO の GAppInfo Yes Firefox, GNOME Files, PCManFM, Thunar, Thunderbird, Telegram gio mime mimetype
/usr/bin/xdg-open By default Chromium (ダウンロードしたファイルを開く) xdg-mime query default mimetype
custom Usually not mc, ranger
環境変数 No man, sudoedit, systemctl
D-Bus の FileManager1 org.freedesktop.FileManager1 Firefox (Open containing folder), Zotero (ファイルを表示), Telegram (フォルダに表示)

多くのデスクトップ環境とグラフィカルファイルマネージャは、デフォルトのアプリケーションを設定するための GUI を提供します。

ノート: XDG MIME Applications 仕様では、MIME タイプ定義ファイルに他のタイプのサブクラスやエイリアスを作成することができます。このため、アプリケーションで対象となる型は直接サポートされないものの、サブクラス化された型はサポートされるような MIME 型が存在する場合、その取り扱いが不明確になる可能性があります。例えば、Firefox は application/rss+xml を GIO 経由で解決し、最終的に自分自身で開くことができます。これは、タイプが application/xml をサブクラス化し、Firefox がそのデフォルトハンドラであるためです。

背景情報

プログラムは、ファイルや URI をユーザーの好みのアプリケーションで開く必要がある場合があります。ユーザーの好みのアプリケーションでファイルを開くには、ファイルタイプを検出し(通常はファイル名の拡張子か MIME タイプにマッピングされたマジックナンバーを使用)、そのファイルタイプに関連するアプリケーションが存在する必要があります。

Heirloom UNIX のプログラムでは、MIME タイプの検出には mime.types を、アプリケーションの関連付けには mailcap を使用していました。

リソースオープナー

  • XDG MIME Apps: XDG MIME Applications 仕様を実装しています。
  • RegEx ルール: 正規表現を使用して MIME タイプとアプリケーションを関連付けることができます。
  • URI サポート: 任意の URI スキームをアプリケーションと関連付けることができます。
名前 パッケージ XDG MIME Apps RegEx ルール URI サポート
xdg-open xdg-utils Yes No Yes
gio(1) glib2 Yes Yes
mimeopen(1p) perl-file-mimeinfo Yes No No
mimeo mimeoAUR Yes Yes Yes
mimi mimiAUR, mimi-gitAUR No No 部分的に
busking busking-gitAUR No Yes Yes
rifle(1) ranger No Yes No
handlr handlr-regex Yes Yes Yes
clifm clifmAUR No Yes 部分的に
mimejs-git mimejs-gitAUR No No Yes

xdg-open

xdg-open (xdg-utils の一部) は、XDG MIME Applications を実装し、多くのプログラムで使用されています。

xdg-utils 版の xdg-open は複雑なため、間違ったデフォルトのアプリケーションが開かれる場合はデバッグが困難になる場合があります。このため、これを改善しようとする代替手段が多く存在します。これらの代替品のいくつかは、/usr/bin/xdg-open 実行ファイルを置き換えるので、ほとんどのアプリケーションのデフォルトのアプリケーションの動作を変更します。その他は、単にデフォルトアプリケーションを選択するための代替方法を提供するものです。

perl-file-mimeinfo

perl-file-mimeinfomimeopen(1p)mimetype(1p) というツールを提供します。これらは、xdg-utils の同等品より少し良いインターフェイスを持っています。

# determine a file's MIME type
$ mimetype photo.jpeg
photo.jpeg: image/jpeg

# choose the default application for this file
$ mimeopen -d photo.jpeg
Please choose an application

    1) Feh (feh)
    2) GNU Image Manipulation Program (gimp)
    3) Pinta (pinta)

use application #

# open a file with its default application
$ mimeopen -n photo.jpeg

最も重要なことは、xdg-utils プログラムがデスクトップ環境を検出しない場合、MIME タイプ検出のために mimetype の代わりに file を実際に呼び出すことです。file は XDG 標準に準拠していないため、これは重要なことです。

ノート: 0.28-1 以前の perl-file-mimeinfo は XDG 標準に完全に従っていたわけではありません。例えば、ディストリビューション全体のデフォルト を読み込まなかったり、非推奨の場所 に設定を保存していました。

mimeo

mimeoAURxdg-openxdg-mime の機能を統合したツール mimeo を提供します。

次の例では、SVG ファイルを Inkscape に関連付ける方法を示します:

# determine a file's MIME type
$ mimeo --mimetype Svg_example2.svg
Svg_example2.svg
 image/svg+xml

# determine desktop file associated with executable "inkscape"
$ mimeo --app2desk inkscape
inkscape
 org.inkscape.Inkscape.desktop
 
# find desktop file path
$ mimeo --finddesk org.inkscape.Inkscape.desktop
/usr/share/applications/org.inkscape.Inkscape.desktop

# choose the default application for this MIME type
$ mimeo --prefer image/svg+xml org.inkscape.Inkscape.desktop

# check association
$ mimeo --mime2desk image/svg+xml
image/svg+xml
 org.inkscape.Inkscape.desktop
 
# open a file with its default application
$ mimeo Svg_example2.svg

mimeapps.list ファイルへのパスを見つけることもできます:

$ mimeo --mimeapps-list
/home/user/.config/mimeapps.list

ただし、xdg-utils との大きな違いは、mimeo がより複雑な関連付けを可能にするカスタムの "関連付けファイル" もサポートしていることです。たとえば、正規表現の一致に基づいて特定のコマンドライン引数を渡します。

# open youtube links in VLC without opening a new instance
vlc --one-instance --playlist-enqueue %U
  ^https?://(www.)?youtube.com/watch\?.*v=

xdg-utils-mimeoAURxdg-utilsbにパッチを適用し、デスクトップ環境が検出されない場合に xdg-open が mimeo に戻るようにします。

handlr

Rust で書かれた handlrxdg-openxdg-mime の機能を効率的なインタフェースで提供します。

xdg-utils と比較すると、以下のような点が挙げられます。

  • 拡張子による関連付けの設定、mime タイプを調べたり覚えたりする必要性を排除
  • mime タイプと拡張子の検証
  • mimeapps.list から無効なエントリを削除します。
  • ファイル名が曖昧な場合、ファイルの内容から mime タイプをインテリジェントに検出します。
  • mime、拡張子、デスクトップエントリーのオートコンプリートに対応
  • 正規表現に基づいて任意のコマンドをハンドラとして設定する。
# The following two are identical
handlr set .png feh.desktop
handlr set image/png feh.desktop

# List default apps
handlr list

# Get the handler for a mime/extension
$ handlr get .png --json
{"handler":"pqiv.desktop","name":"pqiv","cmd":"/usr/bin/pqiv"}

# Launch a handler with optional path/URL
handlr launch x-scheme-handler/https
handlr launch x-scheme-handler/https -- https://google.ca

handlrxdg-open の代わりに使用するには、次のスクリプトでシャドウします。

#!/usr/bin/bash
handlr open "$@"

clifm

clifm の組み込みリソースオープナーである Lira は、--open コマンドラインオプションを介してスタンドアロンのリソースオープナーとして使用できます。設定ファイル (~/.config/clifm/profiles/PROFILE_NAME/mimelist.clifm) は、MIME タイプとファイル名 (またはファイル拡張子) の両方の正規表現をサポートしています。いくつかの例:

# Open a regular file
clifm --open /etc/hosts

# Open a directory
clifm --open /media/data

# Open an URL (via the application associated to the text/http MIME type in the configuration file)
clifm --open www.archlinux.org

ミニマルなリプレイスメント

以下のパッケージは独自の /usr/bin/xdg-open スクリプトを提供しているため、 xdg-utils と競合して提供されます。

もし、xdg-utils を使用しながら、これらのリソースオープナーを使用したい場合、/usr/bin より前の PATH ディレクトリに手動でインストールしてください。

  • mimi-gitAUR - 130 行の Bash スクリプトで、MIME タイプごとにコマンド引数を変更することができます。
  • busking-gitAUR - 80 行の Perl スクリプトで、mimiに似ていますが、正規表現もサポートしています。

mailcap の実行

警告: run-mailcapAUR を使うと xdg-open がそれに委譲する可能性があります。もし mailcap/etc/mailcap を使っているならば、これも xdg-open に委譲されるので、無限ループを引き起こします。