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

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎handlr: 説明を変更)
 
(3人の利用者による、間の4版が非表示)
6行目: 6行目:
   
 
{| class=wikitable
 
{| class=wikitable
! メソッド !! XDG を使用 !! アプリケーション例
+
! メソッド !! XDG を使用 !! アプリケーション例 !! アソシエーションをチェック
 
|-
 
|-
| [https://developer.gnome.org/gio/stable/GAppInfo.html GIO's GAppInfo] || Yes || [[Firefox]], [[GNOME Files]], [[PCManFM]], [[Thunar]], [[Thunderbird]], [[Telegram]]
+
| [https://developer.gnome.org/gio/stable/GAppInfo.html GIO GAppInfo] || Yes || [[Firefox]], [[GNOME Files]], [[PCManFM]], [[Thunar]], [[Thunderbird]], [[Telegram]] || {{ic|gio mime ''mimetype''}}
 
|-
 
|-
| {{ic|/usr/bin/xdg-open}} || By default || [[Chromium]] (ダウンロードしたファイルを開く)
+
| {{ic|/usr/bin/xdg-open}} || By default || [[Chromium]] (ダウンロードしたファイルを開く) || {{ic|xdg-mime query default ''mimetype''}}
 
|-
 
|-
| custom || Usually not || [[mc]], [[ranger]]
+
| custom || Usually not || [[mc]], [[ranger]] || {{-}}
 
|-
 
|-
| [[環境変数#デフォルトプログラム|環境変数]] || No || [[man]], [[sudoedit]], [[systemctl]]
+
| [[環境変数#デフォルトプログラム|環境変数]] || No || [[man]], [[sudoedit]], [[systemctl]] || {{-}}
 
|-
 
|-
| [[D-Bus]] の FileManager1 || org.freedesktop.FileManager1 || [[Firefox]] (Open containing folder), Zotero (ファイルを表示), [[Telegram]] (フォルダに表示)
+
| [[D-Bus]] の FileManager1 || org.freedesktop.FileManager1 || [[Firefox]] (Open containing folder), Zotero (ファイルを表示), [[Telegram]] (フォルダに表示) || {{-}}
 
|}
 
|}
   
 
多くの[[デスクトップ環境]]とグラフィカル[[ファイルマネージャ]]は、デフォルトのアプリケーションを設定するための GUI を提供します。
 
多くの[[デスクトップ環境]]とグラフィカル[[ファイルマネージャ]]は、デフォルトのアプリケーションを設定するための GUI を提供します。
  +
  +
{{Note|[[XDG MIME Applications]] 仕様では、MIME タイプ定義ファイルに他のタイプのサブクラスやエイリアスを作成することができます。このため、アプリケーションで対象となる型は直接サポートされないものの、サブクラス化された型はサポートされるような MIME 型が存在する場合、その取り扱いが不明確になる可能性があります。例えば、Firefox は {{ic|application/rss+xml}} を GIO 経由で解決し、最終的に自分自身で開くことができます。これは、タイプが {{ic|application/xml}} をサブクラス化し、Firefox がそのデフォルトハンドラであるためです。}}
   
 
== 背景情報 ==
 
== 背景情報 ==
   
プログラムは、ファイルや [[Wikipedia:Uniform Resource Identifier|URI]] をユーザーの好みのアプリケーションで開く必要がある場合があります。ユーザーの好みのアプリケーションでファイルを開くには、ファイルタイプを検出し通常はファイル名の拡張子か [[Wikipedia:Media type|MIME タイプ]]にマッピングされた[[Wikipedia:List of file signatures|マジックナンバー]]を使用、そのファイルタイプに関連するアプリケーションが存在する必要があります。
+
プログラムは、ファイルや [[Wikipedia:Uniform Resource Identifier|URI]] をユーザーの好みのアプリケーションで開く必要がある場合があります。ユーザーの好みのアプリケーションでファイルを開くには、ファイルタイプを検出し(通常はファイル名の拡張子か [[Wikipedia:Media type|MIME タイプ]]にマッピングされた[[Wikipedia:List of file signatures|マジックナンバー]]を使用)、そのファイルタイプに関連するアプリケーションが存在する必要があります。
   
 
[[Heirloom]] UNIX のプログラムでは、MIME タイプの検出には [[Wikipedia:Media type#mime.types|mime.types]] を、アプリケーションの関連付けには [[Wikipedia:Media type#Mailcap|mailcap]] を使用していました。
 
[[Heirloom]] UNIX のプログラムでは、MIME タイプの検出には [[Wikipedia:Media type#mime.types|mime.types]] を、アプリケーションの関連付けには [[Wikipedia:Media type#Mailcap|mailcap]] を使用していました。
37行目: 39行目:
 
|-
 
|-
 
|[[xdg-open]] || [[xdg-utils]] || {{Yes}} || {{No}} || {{Yes}}
 
|[[xdg-open]] || [[xdg-utils]] || {{Yes}} || {{No}} || {{Yes}}
  +
|-
  +
|{{man|1|gio}} || {{pkg|glib2}} || {{Yes}} || {{-}} || {{Yes}}
 
|-
 
|-
 
|{{man|1p|mimeopen}} || {{Pkg|perl-file-mimeinfo}} || {{Yes}} || {{No}} || {{No}}
 
|{{man|1p|mimeopen}} || {{Pkg|perl-file-mimeinfo}} || {{Yes}} || {{No}} || {{No}}
42行目: 46行目:
 
|mimeo || {{AUR|mimeo}} || {{Yes}} || {{Yes}} || {{Yes}}
 
|mimeo || {{AUR|mimeo}} || {{Yes}} || {{Yes}} || {{Yes}}
 
|-
 
|-
|whippet || {{AUR|whippet}} || {{Yes}} || {{No}} || {{Yes}}
+
|mimi || {{AUR|mimi}}, {{AUR|mimi-git}} || {{No}} || {{No}} || {{Y|部分的に}}
|-
 
|linopen || {{AUR|linopen}} || {{No}} || {{Yes}} || {{Yes}}
 
|-
 
|mimi || {{AUR|mimi-git}} || {{No}} || {{No}} || {{Y|partly}}
 
 
|-
 
|-
 
|busking || {{AUR|busking-git}} || {{No}} || {{Yes}} || {{Yes}}
 
|busking || {{AUR|busking-git}} || {{No}} || {{Yes}} || {{Yes}}
|-
 
|sx-open || {{AUR|sx-open}} || {{No}} || {{Yes}} || {{Yes}}
 
 
|-
 
|-
 
|{{man|1|rifle}} || [[ranger]] || {{No}} || {{Yes}} || {{No}}
 
|{{man|1|rifle}} || [[ranger]] || {{No}} || {{Yes}} || {{No}}
 
|-
 
|-
|handlr || {{AUR|handlr-bin}} || {{Yes}} || {{No}} || {{Yes}}
+
|handlr || {{pkg|handlr-regex}} || {{Yes}} || {{Yes}} || {{Yes}}
  +
|-
  +
|clifm || {{AUR|clifm}} || {{No}} || {{Yes}} || {{Y|部分的に}}
  +
|-
  +
|mimejs-git || {{AUR|mimejs-git}} || {{No}} || {{No}} || {{Yes}}
 
|}
 
|}
   
86行目: 88行目:
 
最も重要なことは、[[xdg-utils]] プログラムが[[デスクトップ環境]]を検出しない場合、MIME タイプ検出のために {{ic|mimetype}} の代わりに {{ic|file}} を実際に呼び出すことです。{{ic|file}} は XDG 標準に準拠していないため、これは重要なことです。
 
最も重要なことは、[[xdg-utils]] プログラムが[[デスクトップ環境]]を検出しない場合、MIME タイプ検出のために {{ic|mimetype}} の代わりに {{ic|file}} を実際に呼び出すことです。{{ic|file}} は XDG 標準に準拠していないため、これは重要なことです。
   
{{Note|0.28-1 以前の {{pkg|perl-file-mimeinfo}} は XDG 標準に''完全に''従っていたわけではありません。例えば、[https://github.com/mbeijen/File-MimeInfo/issues/20 distribution-wide ディストリビューション全体のデフォルト]を読み込まなかったり、[https://github.com/mbeijen/File-MimeInfo/issues/8 非推奨の場所」」に設定を保存していました。}}
+
{{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 ===
   
 
{{aur|mimeo}} は {{ic|xdg-open}} と {{ic|xdg-mime}} の機能を統合したツール {{ic|mimeo}} を提供します。
 
{{aur|mimeo}} は {{ic|xdg-open}} と {{ic|xdg-mime}} の機能を統合したツール {{ic|mimeo}} を提供します。
  +
  +
次の例では、SVG ファイルを Inkscape に関連付ける方法を示します:
   
 
# determine a file's MIME type
 
# determine a file's MIME type
$ mimeo -m photo.jpeg
+
$ mimeo --mimetype Svg_example2.svg
  +
Svg_example2.svg
photo.jpeg
 
image/jpeg
+
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
 
# choose the default application for this MIME type
$ mimeo --add image/jpeg feh.desktop
+
$ 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
 
# open a file with its default application
$ mimeo photo.jpeg
+
$ mimeo Svg_example2.svg
   
  +
{{ic|mimeapps.list}} ファイルへのパスを見つけることもできます:
しかし、''xdg-utils'' との大きな違いは、mimeoはより複雑な関連付けを可能にするカスタムの「関連付けファイル」をサポートしていることです。例えば、正規表現のマッチに基づいた特定のコマンドライン引数を渡すことができます。
 
  +
$ mimeo --mimeapps-list
  +
/home/user/.config/mimeapps.list
  +
  +
ただし、''xdg-utils'' との大きな違いは、mimeo がより複雑な関連付けを可能にするカスタムの "関連付けファイル" もサポートしていることです。たとえば、正規表現の一致に基づいて特定のコマンドライン引数を渡します。
   
 
# open youtube links in VLC without opening a new instance
 
# open youtube links in VLC without opening a new instance
109行目: 131行目:
 
^https?://(www.)?youtube.com/watch\?.*v=
 
^https?://(www.)?youtube.com/watch\?.*v=
   
{{aur|xdg-utils-mimeo}} は、デスクトップ環境が検出されない場合に {{ic|xdg-open}} が mimeo にフォールバックするように ''xdg-utils'' にパッチを当てます。
+
{{aur|xdg-utils-mimeo}} は ''xdg-utils''bにパッチを適用し、デスクトップ環境が検出されない場合に {{ic|xdg-open}} が mimeo にるようにます。
 
=== whippet ===
 
 
{{aur|whippet}} は {{ic|xdg-open}} に似たツール {{ic|whippet}} を提供します。 {{pkg|libnotify}} でエラーを表示し、{{pkg|dmenu}} で開くアプリケーションの選択肢を表示することで、X11 との統合を実現しています。
 
 
# open a file with its default application
 
$ whippet -M photo.jpeg
 
 
# choose from all possible applications for opening a file (without setting a default)
 
$ whippet -m photo.jpeg
 
 
[[XDG MIME Applications]] の実装に加えて、''whippet'' は application/MIME タイプ/正規表現の関連性を加えた SQlite データベースを使って、どのアプリケーションを使用するかを決定することができます。
 
   
 
=== handlr ===
 
=== handlr ===
133行目: 143行目:
 
* ファイル名が曖昧な場合、ファイルの内容から mime タイプをインテリジェントに検出します。
 
* ファイル名が曖昧な場合、ファイルの内容から mime タイプをインテリジェントに検出します。
 
* mime、拡張子、デスクトップエントリーのオートコンプリートに対応
 
* mime、拡張子、デスクトップエントリーのオートコンプリートに対応
  +
* 正規表現に基づいて任意のコマンドをハンドラとして設定する。
   
 
# The following two are identical
 
# The following two are identical
149行目: 160行目:
 
handlr launch x-scheme-handler/https -- https://google.ca
 
handlr launch x-scheme-handler/https -- https://google.ca
   
{{aur|xdg-utils-handlr}} は、内部で {{ic|handlr}} を使用して {{ic|xdg-utils}} を置き換えて{{ic|xdg-open}} を提供します。
+
{{ic|handlr}} を {{ic|xdg-open}} の代わりに使用するには、次のスクリプトでシャドウします。
  +
  +
#!/usr/bin/bash
  +
handlr open "$@"
  +
  +
=== clifm ===
  +
  +
{{ic|clifm}} の組み込みリソースオープナーである ''Lira'' は、{{ic|--open}} コマンドラインオプションを介してスタンドアロンのリソースオープナーとして使用できます。設定ファイル ({{ic|~/.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
   
 
=== ミニマルなリプレイスメント ===
 
=== ミニマルなリプレイスメント ===
155行目: 182行目:
 
以下のパッケージは独自の {{ic|/usr/bin/xdg-open}} スクリプトを提供しているため、 {{Pkg|xdg-utils}} と競合して提供されます。
 
以下のパッケージは独自の {{ic|/usr/bin/xdg-open}} スクリプトを提供しているため、 {{Pkg|xdg-utils}} と競合して提供されます。
   
もし、{{Pkg|xdg-utils}} を使用しながら、これらのリソースオープナーを使用したい場合、{{ic|/usr/bin}} 前の PATH ディレクトリに手動でインストールしてください。
+
もし、{{Pkg|xdg-utils}} を使用しながら、これらのリソースオープナーを使用したい場合、{{ic|/usr/bin}} より前の PATH ディレクトリに手動でインストールしてください。
   
* {{AUR|linopen}} - 170 行の Bash スクリプト、正規表現をサポートしています。
 
 
* {{AUR|mimi-git}} - 130 行の Bash スクリプトで、MIME タイプごとにコマンド引数を変更することができます。
 
* {{AUR|mimi-git}} - 130 行の Bash スクリプトで、MIME タイプごとにコマンド引数を変更することができます。
 
* {{AUR|busking-git}} - 80 行の Perl スクリプトで、''mimi''に似ていますが、正規表現もサポートしています。
 
* {{AUR|busking-git}} - 80 行の Perl スクリプトで、''mimi''に似ていますが、正規表現もサポートしています。
* {{AUR|sx-open}} - 60 行の Bash スクリプト、シンプルなシェルベースの設定ファイルを使用します。
 
   
 
==== mailcap の実行 ====
 
==== mailcap の実行 ====

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 に委譲されるので、無限ループを引き起こします。