FirefoxのLink And Forminfo拡張でリンク一覧から項目をダブルクリックしたときにそのURLを開かないようにする
バージョン3からのFirefoxでコンテキストメニューから「ページの情報を表示」を選択したときにリンク一覧が出なくなっているため、それを復活させる拡張が幾つか存在する。
以前「Mozilla Firefox 3.0 rc1の覚え書き」で「pageinfo+link」という拡張をインストールしたのだが、うっかりリスト上の項目を(シングルでなく)ダブルクリックしてしまうことにより、開くつもりのないURLを開いてしまうことがあり、「Firefoxのpageinfo_link拡張のリンクダブルクリックを無効化」でこの挙動を無効にした。
今回、リンク一覧と同様に消えていたフォーム状態の表示についても復活させることのできる「Link And Forminfo」という拡張を見つけたのでインストールしたのだが、こちらも一覧から項目をダブルクリックするとそのURLが開かれるようになっていて自分には都合が悪いため、この動作を無効化しておくことにした。
流れ
「Firefoxのpageinfo_link拡張のリンクダブルクリックを無効化」では拡張がインストールされた後で作業を行ったが、.xpiファイルに対して作業を行ってからそれをインストールしたほうが楽で再利用もできるため、今回は.xpiファイルを修正する形で作業を行った。- .xpiファイルをZIPファイルとして展開し、更に中のchrome/LinkAndForminfo.jarを同様に展開
- 中のcontent/LinkAndForminfo/LinkAndForminfo.xulにある該当部分の処理を削除*1
- .jarファイルにまとめて元のファイルを置き換える
- 全体の.xpiファイルもまとめる
修正自動化スクリプト
今回、拡張のダウンロードから修正、ファイルに書き出すまでの作業を全て自動化するシェルスクリプトを作成した。実行するには以下のコマンドが全てインストールされている必要がある。
- wget
- unzip
- zip
- patch
- zenity
[任意]ファイル名: linkandforminfo-1.0.5-disable-doubleclick-patch.sh
#! /bin/bash # Link And Forminfoのリストダブルクリック無効化バージョンの.xpiファイルを生成 # 必要なコマンド: wget,unzip,zip,patch,zenity ADDON_URL=https://addons.mozilla.org/ja/firefox/downloads/latest/6939/addon-6939-latest.xpi PATCH_NAME=linkandforminfo-1.0.5-disable_doubleclick.patch cd /tmp TEMPDIR=$(mktemp -d linkandforminfo-disable-doubleclick-patch.XXXXXXXXXXXX) cd ${TEMPDIR} die() { zenity --error --text "${1}" cd - > /dev/null rm ${TEMPDIR} -fr exit 1 } wget -O orig.xpi ${ADDON_URL} || die "Download failed" unzip orig.xpi || die "unzip failed" cat <<EOF > ${PATCH_NAME} diff -ur content.orig/LinkAndForminfo/LinkAndForminfo.xul content/LinkAndForminfo/LinkAndForminfo.xul --- LinkAndForminfo-1.0.5.orig/content/LinkAndForminfo/LinkAndForminfo.xul +++ LinkAndForminfo-1.0.5.new/content/LinkAndForminfo/LinkAndForminfo.xul @@ -501,38 +501,6 @@ dragService.invokeDragSession(event.target, transArray, null, dragService.DRAGDROP_ACTION_NONE); }; -window.onDoubleclickLink = function onDoubleclickLink(event) { - if (event.originalTarget.localName != "treechildren") - { - return; - } - - var tree = event.target; - if (!("treeBoxObject" in tree)) - { - tree = tree.parentNode; - } - - var row = {}, col = {}, elt = {}; - tree.treeBoxObject.getCellAt(event.clientX, event.clientY, row, col, elt); - - if (row.value == -1) - { - return; - } - - var column = tree.columns.getNamedColumn('link-address'); - var url = tree.treeBoxObject.view.getCellText(row.value, column); - var aios_inSidebar = (top.document.getElementById('sidebar-box')) ? true : false; - if(aios_inSidebar){ - aios_WIN.gBrowser.addTab(url); - }else{ - if ("gBrowser" in window.opener) - { - window.opener.gBrowser.addTab(url); - } - } -}; //******** Other Misc Stuff // Modified from the Links Panel v2.3, http://segment7.net/mozilla/links/links.html // parse a node to extract the contents of the node @@ -729,7 +697,7 @@ </vbox> <!-- Link info --> <vbox id="linktreePanel"> - <tree id="linktree" flex="1" ondraggesture="window.onBeginLinkDrag(event,'link-address','link-name')" contextmenu="picontext" ondblclick="window.onDoubleclickLink(event);"> + <tree id="linktree" flex="1" ondraggesture="window.onBeginLinkDrag(event,'link-address','link-name')" contextmenu="picontext"> <treecols> <treecol sortSeparators="true" persist="hidden width" flex="5" width="5" id="link-name" label="&linkName;"/> EOF unzip chrome/LinkAndForminfo.jar || die "unzip failed" patch -p1 < ${PATCH_NAME} || die "patch failed" find content locale skin -print0 | xargs -0 zip -9 chrome/LinkAndForminfo.jar -@ find chrome* install.rdf license.txt -print0 | xargs -0 zip -9 out.xpi -@ OUTFILE=$(zenity --file-selection --save --confirm-overwrite --title "Output file" --filename ${HOME}/) if [ ${?} -eq 0 ]; then cp out.xpi ${OUTFILE} || zenity --error --text "copy failed" zenity --info fi cd - > /dev/null rm ${TEMPDIR} -fr
使用したバージョン:
- Link And Forminfo 1.0.5