僕はプログラムにおいて最重要と考えている機能として、外部プログラム呼び出しがあります。
それは、自分自身ではできない・不得意ことをそれが上手にできるプログラムに任せるという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);

流れとしては、こうなります

  1. plugins.options['launch.apps'] に外部プログラムを登録する
  2. plugins.options['hok.actions'] にhokの設定を記述する
  3. 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)として呼ぶことができるからです。

本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。