web-dev-qa-db-ja.com

xdg-openコマンドは、どのアプリケーションを使用してファイルを開くのかをどのようにして知るのですか?

Xdg-openコマンドは、デフォルトのファイルマネージャーでファイルをダブルクリックしたときに開くアプリケーションと同じアプリケーションを使用することを期待していますが、常にそうであるとは限りません。

たとえば、私のDEはXFCE、ファイルマネージャーはThunar、デフォルトの画像ビューアーはRistrettoです。しかしながら、 xdg-open example.pngサンプルのPNGファイルをPintaで開きます。どうして?

30
Ivan

xdg-openは、ユーザーのデフォルトアプリケーションを構成するためのデスクトップに依存しないツールです。多くのアプリケーションは内部でxdg-openコマンドを呼び出します。デスクトップ環境(GNOME、KDE、Xfceなど)内では、xdg-openは引数をそれらのデスクトップ環境のファイルオープナーアプリケーション(gvfs-open、kde-open、exo-openなど)に渡すだけです。つまり、関連付けはデスクトップ環境に任されています。デスクトップ環境が検出されない場合(たとえば、Openboxなどのスタンドアロンウィンドウマネージャーを実行する場合)、xdg-openは独自の構成ファイルを使用します。

から archwiki

あなたの質問に固有の、あなたはこれを試して、pngファイルに関連付けられたデフォルトのアプリケーションを設定することができます:

xdg-mime default <ristretto.desktop> image/png

ristrettoのデスクトップファイル名を正確に調べる必要があります。その後、これで確認できます:

xdg-mime query default image/png
29
oxnz

@Ivanこれはおそらく、デフォルトのアプリケーションを要求するときに正しいファイルタイプを指定しなかったためです。重要なのは、xdgが特定のファイルタイプを呼び出す方法です。これは実行することで簡単に見つけることができます

xdg-mime query filetype example.png

例として、コンピュータ上の特定のpngファイルでこれを行うと、image/x-Apple-ios-pngが返されます。実際のファイルタイプを把握したら、次のコマンドを実行できます。

xdg-mime query default <new filetype>

そして、この特定のファイルタイプのためにxdgによって使用されるアプリケーションを取得します。このファイルタイプにアプリケーションが定義されていない場合、xdg-openはファイル/etc/debian_versionが使用可能かどうかを確認し、使用可能な場合はrun-mailcapを起動します。これはxdg-openと非常によく似ていますが、ファイルを開くプログラムも検索します。

これも失敗した場合にのみ、xdg-openはユーザーにファイルを開くプログラムを定義するように要求します。

2
lauve