デフォルトアプリケーション
プログラムはさまざまな方法でデフォルトのアプリケーションの関連付けを実装します。コマンドラインプログラムは伝統的に環境変数を使いますが、グラフィカルアプリケーションでは、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に似ていますが、正規表現もサポートしています。