僕はプログラムにおいて最重要と考えている機能として、外部プログラム呼び出しがあります。
それは、自分自身ではできない・不得意ことをそれが上手にできるプログラムに任せるというUnixの思想が好きだからです。
Webブラウザにおいてもそれは例外ではありません。
Firefoxならばgoogle-chromeやIEで表示確認をしたり、w3m でじっくりテキストを読んだり、mpv で快適に動画再生できるからです。
この機能を持たないブラウザは器用貧乏で傲慢です。
まずは、
https://sites.google.com/site/958site/Home/keysnailscript
からlauncherプラグイン(アプリケーションを起動)をインストールします。
右にあるInstallを右クリックすればインストールできます。
そして、 .keysnail.js に設定を加えます。
ここではw3m/mpv/google-chromeを呼び出せるようにしています。
以下の操作が可能になります。
;3
でHit-a-Hintを介してリンク先をmpvで再生する
;w
でHit-a-Hintを介してリンク先をw3mで開く
;g
でHit-a-Hintを介してリンク先をgoogle-chromeで開く
M
で現在のページをw3mで開く
C
で現在のページをgoogle-chromeで開く
他のプログラムを呼び出したいときは、適宜アレンジしてください。
///// %PRESERVE%エリア内に記述 plugins.options['launcher.apps'] = { 'w3m': { description: 'Open with w3m', path: '/usr/bin/urxvt', defaultArgs: ['-e', 'w3m', '%URL'] }, 'google-chrome': { description: 'Open with google-chrome', path: '/usr/bin/google-chrome', defaultArgs: ['%URL'] }, 'mpv': { description: 'Open with mpv', path: '/usr/bin/mpv', defaultArgs: ['%URL'] }, }; plugins.options['hok.actions'] = [ [ '3', M({ja: 'リンクを mpv で開く', en: 'Open with mpv'}), function(e) { plugins.launcher.launch('mpv', [e.href]) }, false, false, "a[href]" ], [ 'w', M({ja: 'リンクを w3m で開く', en: 'Open with w3m'}), function(e) { plugins.launcher.launch('w3m', ["-e", "w3m", e.href] )}, false,false,"a[href]" ], [ 'g', M({ja: 'リンクを Google Chrome で開く', en: 'Open with Google Chrome'}), // plugins.launcher.launch() の第 2 パラメータを指定すると // defaultArgs を使用せずに、その引数をプロセス起動時に渡す function(e) plugins.launcher.launch('google-chrome', [e.href]), false, false, "a[href]" ], ]; ///// キーマップ記述 key.setViewKey('M', function (aEvent, aArg) { ext.exec("launch-w3m", aArg); }, 'w3m', true); key.setViewKey('C', function (aEvent, aArg) { ext.exec("launch-google-chrome", aArg); }, 'google-chrome', true);
流れとしては、こうなります
- plugins.options['launch.apps'] に外部プログラムを登録する
- plugins.options['hok.actions'] にhokの設定を記述する
- key.setViewKeyでキーマップを登録する
ここで重大な注意点があります。
plugins.options['launch.apps']に登録したプログラムしか呼べないということです。
plugins.launcher.launch('mpv', [e.href])
と書いていてもmpvを実際に呼んでいるわけではなく、plugins.options['launch.apps']['mpv']の設定を介してmpvを呼んでいるのです。
そのため、
plugins.launcher.launch('mplayer, [e.href])
と書いてもmplayerは呼ばれません!!!
僕はこの落とし穴にはまり、気付くのにかなり時間がかかりました。
w3mはここでは超高速・省メモリ・安定性に定評のある端末エミュレータurxvt(rxvt-unicode) を使って
$ urxvt -e w3m URL
の形式で呼んでいます。
そのため、
plugins.options['hok.actions']の「リンクをw3mで開く」では
plugins.launcher.launch('w3m', ["-e", "w3m", e.href]
と書いていることに注意してください。
キーマップ記述においてlaunch-w3mやlaunch-google-chromeと書いてあるのは、plugins.options['launch.apps']に登録したプログラムはエクステ(M-x)として呼ぶことができるからです。
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。