Hammerspoonをつかう
Hammerspoonでウィンドウコントロール、ショートカットキー割り当て
Hammerspoonを使う
ウィンドウ、揃えたくないですか? 僕は揃えたいです!
なぜHammerspoonに乗り換えたかというと、ふとSlantのWhat is the best window manager for mac?でいろいろなものを見ているうちに、Hammerspoonを見つけたのです。
Hammerspoonを使うとキーマップ変更やアプリケーション、ウィンドウ、マウスポインタ、通知メッセージ等のいろいろなモノをLuaスクリプトで操作することができます。 例えば、
- ショートカットキーでウィンドウをモニター左半分にリサイズ&移動
- 好きなサイズでセンタリング
- 四隅に寄せる
- ショートカットキーでブラウザ起動
- なにかキーを押したときに他のイベントも発火させる
といったことがちょっとスクリプトを書くだけで可能になるのです。
僕はKarabiner Elementsも利用していて、”ctrl” + “[“キーで”esc”キーの役割を持たせていました。ESCキー遠いし。ついでに同じキー組み合わせで”esc”キーの他にIMEオフも同時に発動させていたのです。 vimでインサートモードからノーマルモード復帰時にIMEオフになると日本語入力からノーマルモード突入時に自然とキー操作ができるからです。 Hammerspoonでも簡単に実現できます。
ちなみにAlfredも使用しているのでそちらでHotKey登録すればいいじゃない、となりますがHammerspoonであれば設定ファイル格納ディレクトリをGitで管理しエディタで編集すればよいところを、Alfredだとエクスポート&インポートとGitファイル管理とちょい手間がかかります。
以下は、”alt” + “z”でChromeを起動するサンプルです。
-- alias of hs.hotkey.bind()
local function remap(mods, key, fn)
return hs.hotkey.bind(mods, key, fn, nil, fn)
end
-- Launch Google Chrome
remap({"alt"}, "Z", function()
hs.application.launchOrFocus("Google Chrome")
end)
remap関数を用意しているのは、hs.hotkey.bind
を何回も記述する際にremap
の方が短く、また名前から何を行うのかわかりやすいからです。
ここに僕の設定があります。spoons は何も追加していないです。
まだまだいろいろできると思いますが、とりあえず現状でも十分満足です。