私が書いているプログラムで、現在処理しているファイルがあるディレクトリを開き、そのファイルを自動的に選択する機能を提供したいと考えています(ユーザーがファイルを検索する必要がないようにします)。
私はデフォルトのファイルマネージャでディレクトリを開くことができることを知っています
xdg-open /path/to/directory
Nautilusでディレクトリを開いて、ファイルを選択できることを知っています
nautilus /path/to/file.txt
I thought使用できる
xdg-mime query default inode/directory
デフォルトのファイルマネージャを取得し、それがnautilusの場合は、上記のように呼び出します。しかし、nautilusが私のシステムのデフォルトであるという事実にもかかわらず(xdg-open
nautilusを開き、gnomeシェルの場所メニューも開きます)、xdg-mime
戻り値 Thunar.desktop
。 (私が試してみました find / -name Thunar.desktop -mount 2>/dev/null
が見つかりませんでした。)
また、私はディレクトリを開いて、nautilusでサブディレクトリを選択する方法を知りません(上記のアプローチでは、サブディレクトリを開きます)。
デフォルトのファイルマネージャでディレクトリを開くにはどうすればよいですかおよびそのディレクトリでファイルを選択します(ディレクトリを選択することも可能だったとしても、このアプリケーションでは不要です)または少なくとも見つける私はそれを直接呼び出すことができるようにデフォルトのファイルマネージャーを出しますか?
1。ディレクトリを開き、nautilusでサブディレクトリ/ファイルを選択するには:
nautilus --select path/to/file/or/directory
-s、-select
指定されたURIを親フォルダーで選択します。
2。xdg-mime
はThunar.desktop
を返しますが、xdg-open
はnautilus
を開きます
xdg-mime
はmimeapps.list
を使用して、使用するデフォルトのアプリケーションを決定します。
ユーザー固有、システム固有、およびディストリビューション固有の要件を処理するために、個別のmimeapps.list
ファイルが存在します。それらの検索順序は here で見つかります。
mimeapps.list
は、[デフォルトアプリケーション]セクションに、指定されたMIMEタイプのデフォルトアプリケーションをリストします。複数のデフォルトアプリケーションを優先順位の高い順にリストすることができます。例えば :
[Default Applications]
mimetype1 = default1.desktop;default2.desktop;
ここで、mimetype1はMIMEタイプであり、*。desktopはデスクトップファイルです。
xdg-open
は、有効なデスクトップファイルが見つかるまで、設定リスト全体で、検索順序に従ってデスクトップファイルを検索します。すべてのファイルにわたってそのようなファイルが見つからない場合は、関連付けに応じて最も優先されるファイルが選択され、デフォルトのアプリケーションとして使用されます。
したがって、この例の場合、default1.desktop
がシステムに存在しないと仮定すると、xdg-open
はdefault2.desktop
を使用してファイルを開こうとします。ただし、xdg-mime
は、default1.desktop
ファイルの最初のエントリであるmimeapps.list
を返します。
あなたの場合、default1.desktop
はThunar.desktop
でなければならないため、出力になります。ただし、システムにインストールされていません。したがって、xdg-open
は、システムに存在するnautilus
を使用してファイル/ディレクトリを開きます。これを確認するには、mimeapps.list
ファイルでinode/directory
を含む行を確認します。 Ubuntu 17.10の場合、mimeapps.list
ファイルの場所は/usr/share/applications/defaults.list
です。
注:「デフォルトのアプリケーション」を決定するための完全なアルゴリズムは、 here にあります。