K's blog icon. Kamon

K's Blog

Workspace setups, Mac, life

Hammerspoonをつかう

Hammerspoonでウィンドウコントロール、ショートカットキー割り当て

K

1 分で読めます

Hammerspoonを使う

ウィンドウ、揃えたくないですか? 僕は揃えたいです!

以前はDivvyAmethystを使っていました。

なぜ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 は何も追加していないです。

まだまだいろいろできると思いますが、とりあえず現状でも十分満足です。

最近の投稿

カテゴリー

About

K