FirefoxのIrvine用コンテキストメニュー拡張をGNU/Linux上で使用
Windows上でFirefoxから外部ダウンローダIrvineにコンテキストメニューからダウンロード登録などを行うことのできる「Irvine用コンテキストメニュー拡張」という拡張がある。もちろん、IrvineはWindows用アプリケーションなのでIrvine自体もこの拡張もGNU/Linux上では基本的には使えないのだが、これをWine上のIrvineに対して(Wine上の)Win32版FirefoxとGNU/Linuxネイティブ版Firefoxのそれぞれから試してみた。
Windows版Firefoxから使用
Irvine専用のWine環境[ホームディレクトリ]/.wine-irvineを用意してその中にWin32版FirefoxとIrvineをインストールして試してみた。準備作業メモ
(Wine環境の作成と設定) $ WINEPREFIX=~/.wine-irvine regedit [好みの初期設定向けレジストリ...] (Firefoxのインストール) $ WINEPREFIX=~/.wine-irvine wine "[Firefox Setup [バージョン].exeの場所]" (Irvineのインストール) $ cd ~/.wine-irvine/dosdevices/c:/Program\ Files/ $ unzip [irvine1_3_0.zipの場所] (Irvineの設定・一度起動して設定用データ保存場所やダウンロード先などを設定後閉じる) $ WINEPREFIX=~/.wine-irvine wine "C:\Program Files\irvine1_3_0\irvine.exe" (Firefoxの起動) $ WINEPREFIX=~/.wine-irvine wine "C:\Program Files\Mozilla Firefox\firefox.exe" &
今回指定したレジストリはinfファイルを使用せずに非対話的にレジストリの操作を行うに貼り付けたfont-replace-ipamona-msgothic_msmincho.regとWine 1.1.12におけるフォントのサブピクセルレンダリングについてに貼り付けたsubpixel.regの2つ。
拡張の設定
拡張の設定には「ircom.exeのパス」という入力欄があり、ここでIrvineのディレクトリにあるircom.exeの場所を指定する。上の準備作業の流れではC:\Program Files\irvine1_3_0\ircom.exe
という場所となった。
結果
Firefoxで「Irvine」以下のコンテキストメニュー項目を選択するとという挙動となった。下は項目選択時にIrvineが動いていないときの端末へのメッセージ。
(Firefox起動時) fixme:system:SetProcessDPIAware stub! fixme:iphlpapi:NotifyAddrChange (Handle 0xdfe94c, overlapped 0xdfe928): stub fixme:ntdll:NtLockFile I/O completion on lock not implemented yet err:ole:CoGetClassObject class {591209c7-767b-42b2-9fba-44ee4615f2c7} not registered err:ole:CoGetClassObject class {591209c7-767b-42b2-9fba-44ee4615f2c7} not registered err:ole:CoGetClassObject no class object {591209c7-767b-42b2-9fba-44ee4615f2c7} could be created for context 0x3 fixme:resource:GetGuiResources (0xffffffff,0): stub fixme:font:ExtTextOutW flags ETO_NUMERICSLOCAL | ETO_NUMERICSLATIN | ETO_PDY unimplemented fixme:imm:ImmReleaseContext (0x3003a, 0x13d0e0): stub err:ole:CoGetClassObject class {4125dd96-e03a-4103-8f70-e0597d803b9c} not registered err:ole:CoGetClassObject class {4125dd96-e03a-4103-8f70-e0597d803b9c} not registered err:ole:CoGetClassObject no class object {4125dd96-e03a-4103-8f70-e0597d803b9c} could be created for context 0x3 (「Irvineでダウンロード」選択時) fixme:time:GetCalendarInfoW Unimplemented caltype 4 fixme:time:GetCalendarInfoW Unimplemented caltype 3 fixme:time:GetCalendarInfoW Unimplemented caltype 4 fixme:time:GetCalendarInfoW Unimplemented caltype 3 fixme:ole:CoResumeClassObjects stub fixme:time:GetCalendarInfoW Unimplemented caltype 4 fixme:time:GetCalendarInfoW Unimplemented caltype 3 fixme:ras:RasEnumEntriesA ((nil),(null),0x8e96fc,0x8efe24,0x8efe20),stub! fixme:win:LockWindowUpdate (0x10020), partial stub! fixme:win:LockWindowUpdate ((nil)), partial stub! fixme:win:LockWindowUpdate (0x10020), partial stub! fixme:win:LockWindowUpdate ((nil)), partial stub! fixme:win:LockWindowUpdate (0x10020), partial stub! fixme:win:LockWindowUpdate ((nil)), partial stub! err:ole:ITypeInfo_fnInvoke failed to convert param 1 to VT_I4 from VT_BSTR err:ole:ITypeInfo_fnInvoke did not find member id 16, flags 0xc!
下はダイアログの文字。
EOleSysError OLE エラー 80020003 Irvine.Api [操作に応じた「Download」などの文字列]
Irvineを一度起動しておいてからシステムトレイに入れっぱなしにしておけばそれほど問題ではない気もする。*1
動作しなかった項目は「IrvineへすべてのURLを送る」で、「IMGを含む」付きも同様。
GNU/Linuxネイティブ版のFirefoxから使用
上でWin32版Firefoxから試している内に偶然「コマンドライン引数でFirefoxからURLなどを渡しているだけ」ということが分かったので、うまくWine上のIrvineと「つなぐ」ことができればGNU/Linuxネイティブ版のFirefoxからもこの拡張が使用できるのではないかと思い、試してみた。準備
専用のWine環境[ホームディレクトリ]/.wine-irvneを用意してその中にIrvineを展開する。Win32版Firefoxを入れない点を除いて上と同様(具体的な作業は略)。今回は上で作成したWine環境をそのまま使用した。拡張のダウンロード/インストール
拡張のダウンロードとインストールはhttps://addons.mozilla.org/ja/firefox/addon/irvine-contextmenu/versions/
から行う。このページではGNU/Linux版Firefoxでのインストールも行える。
ircom.exeのラッパースクリプトを用意
上でも少し触れたが、「Irvine用コンテキストメニュー拡張」は、指定した外部プロセスを幾つかの引数を付けて実行し処理をIrvineに丸投げしているだけなので、直接FirefoxとWin32固有なやりとりをしているわけではない。そこで、Wine環境のIrvineのディレクトリにあるircom.exeに処理を渡すためのラッパースクリプトを作成することにした。[任意]ファイル名: ~/bin/ircom.sh
#! /bin/sh WINEPREFIX=~/.wine-irvine wine "C:\Program Files\irvine1_3_0\ircom.exe" ${@}
このスクリプトの属性を実行可能にした後でこのスクリプトの場所(パス)を拡張の設定にある「ircom.exeのパス」に入力する。[ホームディレクトリ]/bin/ircom.shとして保存した場合は
~/bin/ircom.sh
となる。ホームディレクトリは「~」でOK。
「参照」ボタンから開いて設定したいのであればスクリプトのファイル名をircom.exeにすることもできるが、おすすめはしない。
挙動について
予想通り、この場合の挙動も上のWin32版Firefoxを使用した場合と同一となった。つまり、GNU/Linux版FirefoxからWine上のIrvineにURLを渡す処理は(条件や操作によってOLEエラーが出るので完全とは言えないが)大部分が正常に行われる。Windowsでこの拡張を使用していたユーザがGNU/Linuxを使う際に役に立つかもしれない。使用したバージョン:
- Wine 1.1.16
- Irvine 1.3.0(1.3.0.126 & DMScript 0.3.12)
- Mozilla Firefox 3.0.6(x86_64 GNU/Linux版), 3.0.7(Win32版)
- Irvine用コンテキストメニュー拡張 1.3
*1:ただし、システムトレイアイコンのメニューを出してから他のところをクリックするとメニューが残ってしまうことがある