環境なしで `xdg-open`を適切かつ簡単に設定するには?


63

デスクトップ環境なしで OpenBoxウィンドウマネージャー使用しています。

xdg-open奇妙に振る舞います。ですべてを開きますfirefox

$ xdg-settings --list
Known properties:
  default-web-browser           Default web browser

簡単なプログラムを探しています。フォルダー内のすべての*.desktopファイルを読み取り、/usr/share/applications/xdg設定を自動的に設定するようなものです。


xdg-mime(の一部xdg-utils)を使用することは(クエリ、設定)で作業するための最良の答えですxdg-openunix.stackexchange.com/questions/8793/
マイケル

回答:


24

リポジトリでperl-file-mimeinfoを使用して、MIMEタイプextraを管理できます。

以下のすべての.pdfファイルを開く例apvlv

/usr/bin/vendor_perl/mimeopen -d $file.pdf

次に、プロンプトでアプリケーションを入力しますapvlv


できます。ただし、ファイルを開くだけです。そのため、私のxdg-open構成xdg-openされていない左と使用しているアプリケーションは、ファイルを正しく開きません。
クラベミール

あなたのコメントにはあまり従いません。何が機能していないのですか?-dスイッチは、デフォルト値を設定します。したがって、それを使用して開く場合fileA.pdf- fileB.pdf好みのアプリケーションで開くことができるはずです。
-jasonwryan

1
はい。mimeopen -d a.pdfにデフォルトを*.pdf設定しますが、それ自体にデフォルトを設定します- mimeopen b.pdf動作します。しかし、xdg-open構成は変更されずに残り、firefox
//で

3
でデフォルトを設定するとmimeopenxdg-open期待どおりに動作します。sの場合.pdf、で開きますapvlv
jasonwryan

1
Lubuntu 16.04ではこれは機能しません。sudo xdg-mime default pluma.desktop text/plain与えるtouch: cannot touch "/home/user/.local/share/applications/mimeapps.list": No such file or directory /usr/bin/xdg-mime: 807: /usr/bin/xdg-mime: cannot create /home/user/.local/share/applications/mimeapps.list.new: Directory nonexistent; /usr/bin/vendor_perl/mimeopen -d $file.txt与えるbash: /usr/bin/vendor_perl/mimeopen: No such file or directory
ニコライ・レショフ

62

xdg自体からユーティリティを使用しないのはなぜですか?

Thunarをデフォルトのファイルブラウザ、つまりフォルダを開くためのデフォルトのアプリケーションにするため。

$ xdg-mime default Thunar.desktop inode/directory

xpdfをデフォルトのPDFビューアーとして使用するには:

$ xdg-mime default xpdf.desktop application/pdf

これにより、ローカルMIMEデータベースにエントリが作成されます。

~/.local/share/applications/defaults.list
[Default Applications]
application/pdf=xpdf.desktop

これで、PDFファイルがxpdfで開かれます。


+1および関連する質問への私の関連する回答も参照してください、unix.stackexchange.com
マイケル

2
最も役に立つ答え、ありがとう。知っdefaults.listているのが最も簡単なので、必要に応じて手で簡単に編集できます。
mVChr

何らかの理由でをxdg-mime変更しませんdefaults.listでしたが、手動で編集すると(この回答のヒントのおかげで)うまくいきました。
スキッピールグラングロウ

参考までに、これに必要なPerlの依存関係はほとんどありません。必ずインストールしてください。RPM / DEBディストリビューションはこれらを通常どおりインストールします。
lzap

2
defaults.list今呼ばれているようですmimeapps.list。の有効な場所のリストについては、Arch Wikiを参照してくださいmimeapps.list
Mateen Ulhaq

7

Debianでは、rootとしてコマンドを使用できます

update-mime-database /usr/share/mime

持つshared-mime-infoインストールパッケージを。


2
試しました。機能しません。Archを実行しています。
クラベミール

-1これは、GNOMEなどの共有-MIME-情報に依存してデスクトップ環境に固有である
craymichael

7

このようなものを使用してxdg-mime、各.desktopファイルとそれに含まれるMIMEタイプに適切なコマンドを生成し、好きなものを実行できます。注に/usr/share/applicationsはサブディレクトリがある場合があります。

for dd in /usr/share/applications ~/.local/share/applications; do
  for d in $(ls $dd 2>/dev/null | grep "\\.desktop$"); do
    for m in $(grep MimeType $dd/$d | cut -d= -f2 | tr ";" " "); do
      echo xdg-mime default $d $m;
    done;
  done;
done

3

これは@alebの答えに似ていますが、スペースのあるデスクトップファイルで動作します。

find /usr/share/applications ~/.local/share/applications -iname '*.desktop' -print0 | while IFS= read -r -d $'\0' d; do
  for m in $(grep MimeType "$d" | cut -d= -f2 | tr ";" " "); do
    echo xdg-mime default "'$d'" "'$m'"
  done
done
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.