web-dev-qa-db-ja.com

xdg-openのデフォルトのアプリケーション動作

ないときはdefaults.listおよびmimeapps.listxdg-openが開くtext/plain with gvim。しかし、私が作成するときdefaults.list/usr/share/applications/と次の行を追加します。

[Default Applications]
text/plain=emacs.desktop

firefoxでテキストファイルを開きます。

ただし、移動すると/usr/share/applications/defaults.listから~/.local/share/applications/mimeapps.list、期待どおりにemacsでテキストファイルを開きます。

私の質問:

  1. どうやって xdg-openがない場合に起動するアプリケーションを決定しますdefaults.listおよびmimeapps.list
  2. なぜxdg-open書くときにFirefoxを使う/usr/share/applications/defaults.list

Arch Linuxを使用しています。

13
Gradient

xdg-openを使用してアプリケーションを開く場合は、xdg-mimeを使用して特定のMIMEタイプのデフォルトアプリケーションを設定します(通常、xdg-utilsをインストールすると、xdg-mimeおよび関連プログラムが提供されます)。

たとえば、指定されたファイルの「ファイルタイプ」(もしあればMIMEタイプ)を表示するには:

$ xdg-mime query filetype tmp.txt
text/plain

$ xdg-mime query filetype foo.pdf 
application/pdf

$ xdg-mime query filetype $PWD
inode/directory

ディレクトリを開くためのデフォルトのファイルマネージャーを変更する例(caja.desktop(mintのデフォルト)、nautilus.desktop(ubuntu)などを選択できます):

$ xdg-mime default Thunar.desktop inode/directory

また、locate -i foo.desktopを実行して、foo.desktopが実際に存在することを確認します。

さらに、デフォルトのテキストエディタが何であるかを確認するために、

$ xdg-mime  query default text/plain 
gedit.desktop

別のデフォルトのテキストエディターを使用するには(ここでも、「。desktop」ファイルが存在することを確認します):

$ locate -i vim.desktop
/usr/share/applications/gvim.desktop

$ xdg-mime default gvim.desktop text/plain

これで、(GUIファイルマネージャで) "foo.txt"をダブルクリックするか、xdg-open foo.txtを実行すると、gvimではなくgeditが使用されます。

トラブルシューティング:xdg-mimeユーティリティで使用する必要があるため、特定のアプリケーションの「.desktop」ファイルが見つかることを確認してください。例えば。、

$ xdg-mime default emacs text/plain 
xdg-mime: malformed argument 'emacs', expected *.desktop

さらに、「。desktop」ファイルが存在しない場合、これは期待どおりに機能しません。

$ locate -i emacs.desktop
(none)

$ xdg-mime default emacs.desktop text/plain  # won't work

実際のemacs ".desktop"ファイル(私の環境内):

$ locate -r 'emacs.*\.desktop'
/usr/share/applications/emacs24.desktop

$ xdg-mime default emacs24.desktop text/plain  # does work

参照: https://wiki.archlinux.org/index.php/xdg-open

23
michael
#!/bin/sh

FILETYPE=$(xdg-mime query filetype $1)
APP=$( find /usr/share -type f -name "*.desktop" -printf "%p\n" | rofi -threads 0 -dmenu -i -p "select default app")
APP=$(basename -- $APP)
xdg-mime default "$APP" "$FILETYPE"
echo "$APP set as default application to open $FILETYPE"

このスクリプトをファイルで使用すると、このファイルタイプに使用するデフォルトのアプリを選択するように求められます。

私はrofiを使用していますが、選択したファジーファインダーに合わせて調整できます。その後、xdg-openを使用してファイルを開くことができます。

0
Adrian Staniec