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

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎xdg-open: 訂正)
65行目: 65行目:
 
=== perl-file-mimeinfo ===
 
=== perl-file-mimeinfo ===
   
{{Pkg|perl-file-mimeinfo}} provides the tools {{man|1p|mimeopen}} and {{man|1p|mimetype}}. These have a slightly nicer interface than their {{pkg|xdg-utils}} equivalents:
+
{{Pkg|perl-file-mimeinfo}} {{man|1p|mimeopen}} {{man|1p|mimetype}} というツールを提供します。これらは、{{pkg|xdg-utils}} の同等品より少し良いインターフェイスを持っています。
  +
 
# determine a file's MIME type
 
# determine a file's MIME type
 
$ mimetype photo.jpeg
 
$ mimetype photo.jpeg
83行目: 84行目:
 
$ mimeopen -n photo.jpeg
 
$ mimeopen -n photo.jpeg
   
  +
最も重要なことは、[[xdg-utils]] プログラムが[[デスクトップ環境]]を検出しない場合、MIME タイプ検出のために {{ic|mimetype}} の代わりに {{ic|file}} を実際に呼び出すことです。{{ic|file}} は XDG 標準に準拠していないため、これは重要なことです。
Most importantly, [[xdg-utils]] programs will actually call {{ic|file}} instead of {{ic|mimetype}} for MIME type detection if it does not detect your [[デスクトップ環境]]. This is important because {{ic|file}} does not follow the XDG standard.
 
   
{{Note|{{pkg|perl-file-mimeinfo}} before 0.28-1 did not ''entirely'' follow the XDG standard. For example it did not not read [https://github.com/mbeijen/File-MimeInfo/issues/20 distribution-wide defaults] and it saved its config in [https://github.com/mbeijen/File-MimeInfo/issues/8 deprecated locations].}}
+
{{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 非推奨の場所」」に設定を保存していました。}}
   
 
=== mimeo ===
 
=== mimeo ===

2022年1月15日 (土) 12:13時点における版

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

メソッド XDG を使用 アプリケーション例
GIO's GAppInfo Yes Firefox, GNOME Files, PCManFM, Thunar, Thunderbird, Telegram
/usr/bin/xdg-open By default Chromium (ダウンロードしたファイルを開く)
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: implements the XDG MIME Applications specification
  • RegEx rules: allows MIME types to be associated with applications using regular expressions
  • URI support: allows arbitrary URI schemes to be associated with applications
Name Package XDG MIME Apps RegEx rules URI support
xdg-open xdg-utils Yes No Yes
mimeopen(1p) perl-file-mimeinfo Yes No No
mimeo mimeoAUR Yes Yes Yes
whippet whippetAUR Yes No Yes
linopen linopenAUR No Yes Yes
mimi mimi-gitAUR No No partly
busking busking-gitAUR No Yes Yes
sx-open sx-openAUR No Yes Yes
rifle(1) ranger No Yes No
handlr handlr-binAUR Yes 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 標準に完全に従っていたわけではありません。例えば、distribution-wide ディストリビューション全体のデフォルトを読み込まなかったり、[https://github.com/mbeijen/File-MimeInfo/issues/8 非推奨の場所」」に設定を保存していました。

mimeo

mimeoAUR provides the tool mimeo, which unifies the functionality of xdg-open and xdg-mime.

# determine a file's MIME type
$ mimeo -m photo.jpeg
photo.jpeg
  image/jpeg

# choose the default application for this MIME type
$ mimeo --add image/jpeg feh.desktop

# open a file with its default application
$ mimeo photo.jpeg

However a big difference with xdg-utils is that mimeo also supports custom "association files" that allow for more complex associations. For example, passing specific command line arguments based on a regular expression match:

# 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 patches xdg-utils so that xdg-open falls back to mimeo if no desktop environment is detected.

whippet

whippetAUR provides the tool whippet, which is similar to xdg-open. It has X11 integration by using libnotify to display errors and dmenu to display choices between applications to open.

# 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

In addition to implementing XDG MIME Applications, whippet can also use a SQlite database of weighted application/MIME type/regex associations to determine which app to use.

handlr

handlr-binAUR, written in Rust, provides the functionality of xdg-open and xdg-mime with a streamlined interface.

Compared to xdg-utils, it includes:

  • setting associations by extension, removing the need to look up or remember mime types
  • validation for mime types and extensions
  • removal of invalid entries from mimeapps.list
  • intelligent detection of mime types from file content in case filename is ambiguous
  • autocompletion of mimes, extensions, and desktop entries
# 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

xdg-utils-handlrAUR provides an xdg-open that uses handlr under the hood to replace xdg-utils.

Minimalist replacements

The following packages conflict with and provide xdg-utils because they provide their own /usr/bin/xdg-open script.

If you want to use one of these resource openers while still being able to use xdg-utils, install them manually in a PATH directory before /usr/bin.

  • linopenAUR - 170-line Bash script, supports regex rules
  • mimi-gitAUR - 130-line Bash script, can change command arguments for each MIME type
  • busking-gitAUR - 80-line Perl script similar to mimi but also supports regex rules
  • sx-openAUR - 60-line Bash script, uses a simple shell-based config file

run-mailcap

警告: If you use run-mailcapAUR, it is possible for xdg-open to delegate to it. This will cause an infinite loop if you are using the /etc/mailcap from mailcap, because it also delegates to xdg-open.