Vimperator, Mac | |
今の Firefox では *.sqlite を定期的に vacuum & reindex しないとどんどん遅くなるというのは常識となっている訳なんだけど、どうすれば一番楽なのか色々試行錯誤してた。
最初は cron で kill して vacuum & reindex してみたんだけど、いきなり Firefox が落ちて、タブの復元画面が出るってのは、設定した本人でもちょっと驚くし、ストレスを感じるので、そちらの方向は止めた。
MozRepl 使ってタブの復元画面が出ないようにすれば良いのかと考えたけど、本当に必要なとき以外は無効にしているので、常時有効にするのもちょっと遠回りな感じで嫌だなと。
というわけで、簡単な Shell Script と vimperator の map を組み合わせて、終了 -> vacuum -> reindex -> 起動という流れをワンストロークで出来るようにするのが一番楽かなという結論に達した。
map ,C :!cleanfox.sh &<CR>ZZ
cleanfox.sh 自体はこちら。
ZZ が後にきてるけど cleanfox.sh が Firefox 自体の終了を最大 60 秒ほど待つし fork してるおかげで、自分の環境では、タブの復元画面も出ずに快適。
あと、タグ付けしてるとおり Mac でしか動かないし、 cleanfox.sh 見ればわかるように pgrep とか sqlite3 入ってないとダメだったり、 Profile とか Cache の位置がへんな所にあっても動かない。
Mac 以外の Unix 系の OS だったら open のかわりに nohup とか使ったら動きそうだなーとか思います。 Windows だったらどうするのが楽かとかは考えたくないですね。
試しに入れてみた。
vimp 初めて入れたときみたいな感動とかはあまりないが、それはメーラ自体そんなにヘビーに使うアプリケーションじゃないからかもしれない。自分みたいな未読をどんどん読んでいくだけの使い方をしてる場合、別に入れなくても問題ないなという印象。
それはそうとして、操作自体は、直観的。(スレッドを畳んだり広げたりが zc/zo とか)
現在の .muttatorrc
" completions set cpt=sl set wim=list:full set wop=auto " bells set noerrorbells set visualbell highlight Bell display:none " themes colorscheme Sweets set showtabline=2 set! mail.tabs.tabMaxWidth=48 set! mail.tabs.tabMinWidth=48 set! mail.tabs.tabClipWidth=0 set! mail.tabs.closeButtons=2 " tabs map N :tabnext<CR> map P :tabprevious<CR> " tag toggles map <C-1> <C-z>1<ESC> map <C-2> <C-z>2<ESC> map <C-3> <C-z>3<ESC> map <C-4> <C-z>4<ESC> map <C-5> <C-z>5<ESC> set editor=/Application/Vim.app -f set! mail.html_compose=false set verbose=8 " vim: set ft=vimperator:
Lanette2011/11/22 01:27Oh yeah, fbaluous stuff there you!
qulpvb2011/11/22 17:133Edenx <a href="http://cfknyvmwclib.com/">cfknyvmwclib</a>
bnjcyjy2011/11/30 19:46E20y1e <a href="http://surruuixqokd.com/">surruuixqokd</a>
vjrjdas2011/12/04 03:54bJ7i4z , [url=http://pwkviqhrqfet.com/]pwkviqhrqfet[/url], [link=http://pkmmlidfvsnt.com/]pkmmlidfvsnt[/link], http://rauiufjshcdo.com/
先ほど思い立ってバージョンを上げてみた。
大量に入れていたプラグインが悪さしていたようで、エラーコンソールが立ち上がってなんかドカドカエラー吐いてまともに動かなかったので、必要最低限のプラグインまで減らして少しずつ様子を見ることに。
面倒だったので、何が悪いかは調査してない。
で、それでもどうしても feedKey + LDRize の連携辺りが好みにならなくて、試行錯誤した結果、こんな感じになった。
autocmd LocationChange .* :fmapc
js <<EOT
liberator.modules.autocommands.add(
'LocationChange',
/reader\.livedoor\.com\/reader\//,
':js liberator.plugins.feedKey.setup(["j", "k", "s", "o", "a", "g", "p", "v", "c", "r", "<Space>", "<S-Space>", "z", "Z", "<" ,">", "q", "w", "i"]);'
);
liberator.modules.autocommands.add(
'GMActiveScript',
/.*/,
':js setTimeout(function(){ if (liberator.plugins.gmperator.currentSandbox.LDRize.getSiteinfo()) liberator.plugins.feedKey.setup(["j","k","p","l","v","o","i","s"]);}, 0)'
);
EOT
ldr は、普通の autocmd の書き方ではスカるので、js コマンド使ってみたら回避出来た。
LDRize は js コマンドだけでもスカるので、setTimeout 掛けた。
イベント周りのタイミングが 2.0 系から変わってきてるみたいで、困りつつ LocationChange 大量記述で適当に誤魔化しながら使ってきたけど、これで今まで通りに戻った感じ。
gmperator も GMActionScript が .* 以外はスカったりするのも、多分同じ問題なんだろうな。
どの辺に問題があるのか調べようとしたけど、いつのまにか vimperator のソースが随分デカくなってたので諦めた。多分しないけど、やる気になったら追いかけるかも。