これは、singleファイルタイプに対して簡単に行われます。これは、 Wine内のファイルタイプをネイティブアプリケーションに関連付ける方法 で回答したように、.reg
を作成することにより目的のファイルタイプ用。ただし、これはAVI専用です。さまざまなファイルを起動できるいくつかのワインアプリ(uTorrent、Soulseek、Eudoraなど)を使用しています。たとえば、メールの添付ファイルにはJPG、DOC、PDF、PPSなどがあります。メールで受信したりトレントでダウンロードしたりする可能性のあるすべてのファイルタイプを追跡することは不可能です(望ましくありません)。
そこで、より汎用的で幅広いソリューションを必要としました。現在設定されているネイティブアプリを尊重するには、ファイルの関連付けが必要です。そして、私のシステムで設定されたallファイルタイプに対してこれを実行したいです。
ソリューションを汎用化する方法を既に考えました。次のように、.reg
で起動したアプリをwinebrowser
に置き換えるだけです:
[HKEY_CLASSES_ROOT\.pdf]
@="PDFfile"
"Content Type"="application/pdf"
[HKEY_CLASSES_ROOT\PDFfile\Shell\Open\command]
@="C:\\windows\\system32\\winebrowser.exe \"%1\""
これをテストしましたが、正常に動作します。 winebrowserはxdg-open
をバックエンドとして使用し、WindowsのパスをUnixのパスに変換するため、正しい(Linux)アプリが起動します。
そこで、新しいアプリがインストールされるたびに実行できるwine-update-associations
スクリプトのような、ワインのレジストリへの「バッチ」アップデータが必要です。多分次のことができるツール:
トリッキーな部分は次のとおりです。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タイプを登録allする小さなユーティリティを作成しました。
そのMIMEタイプのデフォルト(ネイティブ)アプリケーションがある場合はxdg-open
を使用してファイルを開き、そうでない場合は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 "$line\n" if ($def || @apps)
}'
デフォルトでは、スクリプトはWindowsレジストリにハンドラーを持たないネイティブタイプのみを登録しますが、そのような関連付けをオーバーライドすることもできます(たとえば、デフォルトのGeckoワインブラウザーの代わりにネイティブビューアーでjpegファイルが開かれます)。また、Windowsにハンドラーがない場合でも、一部の拡張機能を無視できます。
Winemenubuilderにやさしいように最善を尽くします。つまり、作成するすべてのアソシエーションは、winemenubuilderによってネイティブアソシエーション(またはx-wine-extension mimetypes)として公開されず、wineいためループが発生する可能性があります。これは非常にトリッキーで、まだ完全ではありません。特に大文字と小文字が混在する拡張子(たとえば、.Cと.c)
とはいえ、このスクリプトがすべての人に役立つことを願っています。
https://github.com/MestreLion/wine-tools/blob/master/wine-import-extensions
改善を歓迎します!
私はあちこちでInfoを収集しましたが、以下が機能することがわかりました。
〜/ .wine/drive_c/gstart.exeというファイルを作成しました
次のように:
#!/bin/bash
OPEN_HANDLER=/usr/bin/xdg-open
# logging, optional
LOG=$HOME/.wine/gstart.exe-log.$(id -u -n)
echo "[ $(date) ] $# argument(s) received: '$@'" > $LOG
# convert the path
RESULT=$(winepath "$@" 2> /dev/null)
echo "$OPEN_HANDLER $RESULT" >> $LOG
TMP=$TMPDIR
TEMP=$TMPDIR
# finally open the file
$OPEN_HANDLER "$RESULT"
その後:〜/ binにlinuxnative.regというファイルを作成しました
次のように:
REGEDIT4
[HKEY_CLASSES_ROOT\.doc]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.rtf]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.odt]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.pdf]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.tif]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.doc]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.docx]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.jpg]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\linuxnative]
[HKEY_CLASSES_ROOT\linuxnative\Shell]
[HKEY_CLASSES_ROOT\linuxnative\Shell\open]
[HKEY_CLASSES_ROOT\linuxnative\Shell\open\command]
@="c:\\gstart.exe \"%1\""
それからあなたは
regedit linuxnative.reg
お役に立てれば。