「デフォルトアプリケーション」の版間の差分
細 (未翻訳の部分を翻訳) |
(→リソースオープナー: 同期) |
||
(同じ利用者による、間の2版が非表示) | |||
6行目: | 6行目: | ||
{| class=wikitable |
{| class=wikitable |
||
− | ! メソッド !! XDG を使用 !! アプリケーション例 |
+ | ! メソッド !! XDG を使用 !! アプリケーション例 !! アソシエーションをチェック |
|- |
|- |
||
− | | [https://developer.gnome.org/gio/stable/GAppInfo.html GIO の 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: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}} |
||
|- |
|- |
||
− | | |
+ | |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 || {{ |
+ | |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 |
+ | {{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 - |
+ | $ mimeo --mimetype Svg_example2.svg |
+ | Svg_example2.svg |
||
− | photo.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 -- |
+ | $ 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 |
+ | $ 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 に |
+ | {{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 |
||
− | + | {{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}} |
+ | もし、{{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-open や XDG 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 を提供します。
目次
背景情報
プログラムは、ファイルや 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-mimeinfo は mimeopen(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 標準に準拠していないため、これは重要なことです。
mimeo
mimeoAUR は xdg-open
と xdg-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-mimeoAUR は xdg-utilsbにパッチを適用し、デスクトップ環境が検出されない場合に xdg-open
が mimeo に戻るようにします。
handlr
Rust で書かれた handlr は xdg-open
と xdg-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
handlr
を xdg-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に似ていますが、正規表現もサポートしています。