GNU/Linux >> Linux の 問題 >  >> Ubuntu

Wine内のすべてのファイルタイプを対応するネイティブアプリケーションに関連付ける方法は?

これは、シングルで簡単に実行できます。 .regを作成して、Wine内のファイルタイプをネイティブアプリケーションに関連付ける方法で回答されたファイルタイプ 目的のファイルタイプ。ただし、これはAVI専用です。私は、さまざまなファイルを起動できるいくつかのワインアプリ(uTorrent、Soulseek、Eudoraなど)を使用しています。たとえば、電子メールの添付ファイルには、JPG、DOC、PDF、PPSなどがあります。電子メールで受信したりトレントでダウンロードしたりする可能性のあるすべてのファイルタイプを追跡することは不可能です(望ましくありません)。

そのため、より一般的で幅広いソリューションが必要でした。現在構成されているネイティブアプリを尊重するには、ファイルの関連付けが必要です。そして、これをすべてで実行してほしい システムで構成されているファイルの種類。

ソリューションを一般的なものにする方法はすでに理解しています。起動したアプリを.regで置き換えるだけです winebrowserの場合 、このように:

[HKEY_CLASSES_ROOT.pdf]
@="PDFfile"
"Content Type"="application/pdf"
[HKEY_CLASSES_ROOTPDFfileShellOpencommand]
@="C:\windows\system32\winebrowser.exe "%1""

私はこれをテストしました、そしてそれは正しく働きます。 winebrowserはxdg-openを使用するため バックエンドとして、WindowsパスをUnixパスに変換すると、正しい(Linux)アプリが起動します。

そのため、wineのレジストリへの「バッチ」アップデーター、つまりwine-update-associationsが必要です。 新しいアプリがインストールされるたびに実行できるスクリプト。たぶん次のことができるツール:

  • デフォルトでインストールされているシステム内のすべてのMimeタイプタイプを一覧表示します 関連するアプリ
  • 必要なすべての情報(グロブ、MIMEタイプなど)を抽出します
  • 上記の形式で.REGファイルを生成します

トリッキーな部分は次のとおりです。Ubuntu10.10以降で関連付けがどのように行われるかについての情報を見つけるためにLOTを検索しましたが、控えめに言っても、ドキュメントは不足していて混乱しています。 Freedesktop.orgには完全な仕様がなく、Gnomeのドキュメントでさえ廃止されています。これまでに4を集めました アソシエーション情報を含むが、どの(または理由)を使用するか、またはそれらを使用して.regを生成する方法がわからないファイル ファイル:

~/.local/share/applications/mimeapps.list
~/.local/share/applications/miminfo.cache
/usr/share/applications/miminfo.cache
/etc/gnome/defaults.list

ヘルプ、スクリプト、説明をいただければ幸いです。

ありがとう!

承認された回答:

数年後、私はMIMEデータベース(システムとユーザーの両方)をスキャンしてすべてを登録する小さなユーティリティを作成しました。 Windowsレジストリの既知のネイティブmimeタイプ。

xdg-openを使用します そのmimeタイプのデフォルト(ネイティブ)アプリケーションがある場合はファイルを開き、それ以外の場合はpackagekitを使用します そのファイルを処理できる
パッケージを検索します(Nautilusと同じように)。そのため、ネイティブアプリケーションがインストールされている拡張機能のみを登録するという最初の要件は不要になりました。ただし、スクリプトの初期バージョンでは、そのようなタイプのみがフィルタリングされていました。それを可能にしたスニペットは次のとおりです。

perl -e '
    use strict; use warnings;
    use File::MimeInfo::Magic; use File::MimeInfo::Applications;
    while (my $line = <STDIN>) {
      chomp($line);
      my ($ext, $mime) = (split/t/, $line);
      my ($def, @apps) = mime_applications_all($mime);
      print "$linen" if ($def || @apps)
    }'

デフォルトでは、私のスクリプトはWindowsレジストリにハンドラーを持たないネイティブタイプのみを登録しますが、そのような関連付けをオーバーライドすることもできます(たとえば、jpeg
ファイルは、デフォルトのGeckoワインの代わりにネイティブビューアーで開かれますブラウザ)。
Windowsにハンドラがない場合でも、一部の拡張機能を無視することもできます。

関連:システムは64ビットOSを実行できますか?

これは、winemenubuilderに対応するように最善を尽くします。つまり、作成するすべてのアソシエーションは、winemenubuilderによってネイティブアソシエーションとして(またはx-wine-extension
mimetypesとして)公開されないため、醜く、ループが発生する可能性があります。 。
これは非常にトリッキーですが、まだ完全ではありません。特に、大文字と小文字が混在する拡張子があります
(たとえば、.Cと.c)

そうは言っても、このスクリプトがすべての人にとって有益であることを願っています:

https://github.com/MestreLion/wine-tools/blob/master/wine-import-extensions

改善を歓迎します!


Ubuntu
  1. 男と.8ファイルを開く方法は?

  2. 特定の拡張子を持つファイルを非表示にする方法は?

  3. プレフィックスで始まるファイル内のすべての文字列を置き換える方法は?

  1. Btrfsでデータをコピーせずにファイルを複製するにはどうすればよいですか?

  2. nano を使用してファイルからすべてのテキストを選択するにはどうすればよいですか?

  3. iftop - 出力を含むテキスト ファイルを生成する方法は?

  1. Ubuntuにdebファイルをインストールする方法(例付き)

  2. 名前にスペースが含まれるフォルダのパスを書き込む方法は??

  3. AutocadをWineで動作させる方法は?