Firefox4.0で出るクソウザイタブ追加アイコンを消す
そこまでクソウザイわけでも無いけれど。
あ、Vimperator向けです。
Firefox3.5で出るクソウザイタブ追加アイコンを消す - :vimperator Trapezoid - vimperatorグループ
Firefox4.0ではタブを沢山開くと、これに代わり別のタブ追加アイコンが現れる。
これも一緒に消しちゃいましょう。
style chrome://* .tabs-newtab-button, #new-tab-button { display: none;}
とvimperatorrcに書けばいけます。
Vimperatorの:tabopenコマンド(liberator.open)で現在のタブのすぐ右隣にタブを開くようにする
2011/01/13追記: 外部アプリからURL開く時も同様の動作にしたい場合はこちらへ Vimperatorで現在のタブの右隣にタブを開くようにする(外部アプリからURLを開く時なども) - wltの日記
TabMixPlusとかのアドオンに頼らずに、Vimperatorの:tabopenコマンド(が内部で呼んでるliberator.open関数)で現在のタブのすぐ右隣にタブを開くようにする。
これはabout:configのbrowser.tabs.insertRelatedAfterCurrentがtrueで無ければならない。
.vimperatorrcファイルに次を追加
" タブの開く位置を現在タブのすぐ右にする。(liberator.openの改造) js <<EOM liberator.open = liberator.eval( '(' + liberator.open.toSource().replace(/loadOneTab\(([^,]+),\s*([^,]+),\s*([^,]+),\s*([^,]+),\s*([^)]+)\);/, 'loadOneTab($1, {referrerURI: $2, charset: $3, postData: $4, inBackground: $5, relatedToCurrent: true})') + ')', liberator.open); EOM
調べたこと(メモ書き)
liberator.open関数はgBrowser.loadOneTabを呼ぶ。
gBrowser.loadOneTabの引数を2個だけにすると、第2引数を次のようにして呼び出せる。
gBrowser.loadOneTab(aURI, { referrerURI: aReferrerURI, charset: aCharset, postData: aPostData, inBackground: aLoadInBackground, allowThirdPartyFixup: aAllowThirdPartyFixup, relatedToCurrent: aRelatedToCurrent, });
このrelatedToCurrentプロパティだな。
gBrowser.loadOneTabはgBrowser.addTabに、自身のだいたいの引数を渡して呼ぶ(relatedToCurrentの値も)。
relatedToCurrentをtrueにしておけばgBrowser.addTabが右隣にタブ開いてくれそうだな。
Firefox 4.0b8〜b9 でLDRize (Minibufferの修正)
2010/02/09追記: 「ldrize firefox4」でググるとトップに来ちゃうので追記。
Firefox 4.0b10からは他に問題が出てきて、この記事の方法だけではLDRizeできません。方法が無いわけではありませんが、ちょっと難しくなります。詳しくはこちら→Firefox 4.0b10でGreasemonkey 0.9.1のユーザスクリプトのwindowを共通にする改造(開発者orVimper向け) - wltの日記
なお、Minibuffer自体でのエラー(下記参照)だけなら、この記事の内容で直ると思います。
Firefox 4.0b8〜b9 でLDRizeしたいけど動かないので少し修正をした。
LDRizeが依存しているMinibufferがエラーが起こしてたので、これを修正。これだけでLDRizeできるようになった。
正直、原因がよく分からないけども、まぁ回避策として。
Minibufferのバージョンは
var VERSION = "2009.12.06";
修正パッチはこんな感じ
@@ -815,7 +815,7 @@ // http://userscripts.org/scripts/show/11996 // slightly modified. var FlashMessage = new function(){ - GM_addStyle(<><![CDATA[ + GM_addStyle((<><![CDATA[ #FLASH_MESSAGE{ position : fixed; font-size : 500%; @@ -833,7 +833,7 @@ min-width : 1em; text-align : center; } - ]]></>) + ]]></>).toString()); var opacity = 0.9; var flash = $N('div',{id:'FLASH_MESSAGE'}); hide(flash);
ちなみにエラーの内容は
エラー: can't wrap XML objects ソースファイル: file:///[Firefoxのプロファイルフォルダ]/gm_scripts/minibuffer/minibuffer.user.js 行: 818
どうもXMLオブジェクトを渡すのがいけないらしくてtoString()メソッドで文字列にした。
だけど、他の場所では普通にXMLオブジェクトを渡して問題起きない・・・。イミフ
VimperatorでGreasemonkeyみたいな事をする
2010/02/09修正: Google検索のやつをFirefox 4.0b11でも動くようにした
特定のウェブページにちょっとしたユーザスクリプトを当てたい事があるけど、グリモンに追加するほどのものでもないし、さくっとVimpだけでやりたい時がある。Vimpにはそもそもautocmdコマンドがあるのでこれを使えばいいけど、ちょっと面倒。と言うわけで簡単なユーティリティ関数を書いた。
// Greasemonkeyライクなautocmdユーティリティ // window, unsafeWindowの代わりにcontent, unsafeContent function vimpMonkey(urlRegexPattern, func) { var cmd = eval('(function(args) {' + 'var content = tabs.getTab(args.tab - 1).linkedBrowser.contentWindow;' + 'var unsafeContent = content.wrappedJSObject;' + func.toSource() + '();' + '})'); autocommands.add('PageLoad', urlRegexPattern, cmd); }
ほぼautocmdで呼ばれる関数のラッパ関数なので、グリモンみたいなGM_なんとか関数はもちろん無い。windowは最上位のchromeウィンドウ(?)のままなので、コンテンツウィンドウにアクセスする時は変数contentを使う。また、unsafeWindowの代わりにunsafeContentを用意してある。
使い方は次のように。
// Google検索の左メニューを常に表示 vimpMonkey('(www|encrypted)\\.google\\.co(m|\\.jp)/search', function() { if (content.getComputedStyle(content.document.getElementById('hidden_modes'),'').display == 'none') { unsafeContent.google.x('showmodes', {apply: function(){unsafeContent.google.srp.toggleModes()}}); } });
Vimperatorのautocmdで-jsオプションを使った時
autocmdで-jsオプション使うと{cmd}はfunction(args){with(args){ }}でラップされる
argsには以下のプロパティがある
url | URL |
title | タイトル |
tab | イベントの起きたタブが何番目か?(1オリジンなのでtabs.getTab(tab-1)とすべし |
doc | tabs.getTab(上記tabの値-1).linkedBrowser.contentDocument (※文字列なのでevalするといい) |
CygwinのddでUSBメモリのMBRを読み書きする
自作OSなどをUSBメモリから起動するために、USBメモリのMBRを読み書きする。FreeBSDやLinuxなどの環境ならば普通にインストールされてるddを使えばいいが、Windowsにはddが無い。そこでCygwinのddを使う。
まずCygwin上でのUSBメモリのデバイスノード名を調べる。
$ cat /proc/partitions major minor #blocks name 8 0 117219767 sda 8 16 244197527 sdb 8 32 244194455 sdc 8 48 7897088 sdd 8 49 7895916 sdd1
これでデバイスノード名が分かる*1。#blocksからUSBメモリのデバイスノード名の見当を付ける。より確実に見当を付けるには、USBメモリを挿す前と後で見比べたり、dfコマンドの結果や、Windowsの「コンピュータの管理」の「ディスクの管理」を見ればいい。
ここではsddが目標のUSBメモリだ。これはもちろんUSBメモリに直にアクセスできるデバイスノードなので、ここからddでMBRを読み書きできる*2。
$ dd if=/dev/sdd of=mbr count=1 $ dd if=mbr of=/dev/sdd count=1
おわり。
ところで次の方法ではUSBメモリ内のパーティションへのアクセスになってしまうので、MBRに触れない。ここでUSBメモリのドライブレターは「F」とする。
$ dd if=\\.\F: of=mbr count=1
まぁ、OSの自作やってるわけじゃないんだけどね。
VimperatorでIIDXの譜面検索する
VimperatorからTexTageのIIDX譜面を検索して、新しいタブに開くコマンドを追加する。
Firefoxの「この検索にキーワードを設定」ではできないけどVimpならできる。素敵。
使い方は次の通り
:iidx safari
.vimperatorrcに追加する記述
"" IIDX譜面検索 " scrlist.js : refers()を元に作成 js << EOM commands.addUserCommand(['iidx'], 'Search IIDX score', function(args) { var nowval = args.string; var refcrdstr = "_"; // 4桁の16進Unicodeに変換 for (ri=0; ri<nowval.length; ri++) { refcrd = (nowval.charCodeAt(ri)).toString(16); while (refcrd.length<4) refcrd = "0"+refcrd; refcrdstr += refcrd; } liberator.open('http://textage.cc/score/index.html?r712B00' + refcrdstr, liberator.NEW_TAB, false); }); EOM
VimperatorユーザかつIIDXプレイヤなんてどれ位いるんだろう
VimperatorでRequestPolicyを操作する
2011/05/10: いつの間にか
VimperatorからRequestPolicyのポップアップを表示したり、リダイレクト制御の許可をさせたりできるようにする。
マッピングは次の通りにしてある
リダイレクトのオプション | gro |
---|---|
リダイレクトの許可 | grr |
操作用ポップアップ表示 |
.vimperatorrcに以下を追加
"" アドオンRequestPolicyの操作 " 操作用ポップアップ表示 " cf. chrome/requestpolicy.jar/content/overlay.js : openStatusbarPopup()と_attachPopupStatusbar() javascript <<EOM mappings.addUserMap( [modes.NORMAL], ["<Leader>r"], "Open RequestPolicy Popup", function(){ requestpolicy.overlay.openStatusbarPopup(document.getElementById('status-bar')); } ); EOM " リダイレクトの時の許可ボタンをgrrで、オプションをgroで nnoremap <silent> grr :js gBrowser.getNotificationBox().currentNotification.getElementsByAttribute('label', '許可')[0].click()<CR> nnoremap <silent> gro :js gBrowser.getNotificationBox().currentNotification.getElementsByAttribute('label', 'オプション')[0].click()<CR>