はじめに

ウィンドウを自由自在に動かす。ここには体感しないと分からない良さがある。昔はマウスでドラッグして、マウスでウィンドウをリサイズして、を繰り返すことでいい位置に配置していた。MacBookを買ってからはトラックパッドを使える分だいぶ体験は向上した。

しかし、一度キーボードでウィンドウを動かすことを覚えたらもう戻れない。ボタン一つでウィンドウがビュンビュン飛んで整列していく。効率化という枠組みを超えて操作性自体に爽快感があるのだ。

本記事ではRaycastHammerspoonを用いたウィンドウコントロールとそのキーバインドについて語る。

RaycastのWindow management

RaycastはMacで使える無料のランチャーアプリで、Window managementという機能を搭載している。コマンドとしてウィンドウの操作を行うことができる。

「ウィンドウを右半分に表示する」などの基本的なコマンドに加えて、「ウィンドウを右下6分の1に表示する」など非常に細かくコマンドが実装されており、コマンドの総数は50以上に登る。キーバインドを設定して一発で発動させることもできるのだが、50以上登録するのは流石に覚えきれない。

暫く私が使っていて、使いやすいと思ったキーバインドを紹介する。

修飾子

Keyboard keybindings

修飾子はctrl+optionとしている。理由は、かつてMacのAppストアで不動の一位を誇っていたウィンドウ管理アプリMagnetがこの修飾子を採用しており、もう手に馴染んでしまっているからだ(現在は他の選択肢が増えて一位ではないことが多い)。実際、他のアプリとの競合で困った体験もない。

基本移動

Keyboard keybindings

矢印キーで右半分、上半分、下半分、左半分にウィンドウを移動する。この基本移動コマンドの重要な点は、連打すると1/3や2/3へのサイクルすることだ。Vim勢はhjklかもしれないが、矢印は矢印でトラックパッドから移動しやすいメリットもある。また、hjklは個人的には後述の用途のほうが使いやすい。

最大化

Keyboard keybindings
Enterでターンと最大化すると気持ちが良い。

モニター間移動

Keyboard keybindings
複数モニターの時はモニター間移動が頻用。これは押しやすいほうがよく、spaceを使用している。

4分割

Keyboard keybindings
Jはホームポジションでキーボードに出っ張りがついており、見なくても確実に場所が特定できる。Jを基準に上下左右の4分割位置に移動する。

6分割

Keyboard keybindings
同様にFがホームポジションで出っ張りがついており、場所が特定しやすい。6分割なんて使うか?と思っていたが、ターミナルやMarpスライドの表示などで意外と活躍することがある。

中央表示

Keyboard keybindings
CenterのC。これがあると他との組み合わせで幅がだいぶ広がる。

Hammerspoon

Raycastを用いると、単一ウィンドウ移動に関しては問題なく、爽快感抜群である。ただし、複数ウィンドウ配置に関してはRaycast Proのサブスクに課金しないといけない。流石にWindow Managementだけを目当てにサブスクは厳しいと思って諦めていたのだが、最近Hammerspoonというツールを知った。

Hammerspoonはlua言語でMacのシステム制御を行うツールで、簡単に言うと自作Raycastができる。世はAgent Coding時代なのでHammerspoonのSpoon(プラグイン的)をClaude Codeを用いて作成した。

Ryoiki.spoon

screenshot

下記のようにWindow配置を定義すると、ワンボタンでレイアウトを切り替えることができる(マルチモニター対応)。

-- reference.lua
return {
    keybind = "ctrl+alt+3",
    description = "Reference: Safari left, Notes right",
    windows = {
        { app = "Safari", screen = 0, x = 0,   y = 0, w = 0.6, h = 1, focus = true },
        { app = "Notes",  screen = 0, x = 0.6, y = 0, w = 0.4, h = 1 },
    },
}

キーバインドは数字で切り替えることとした。

Keyboard keybindings

また、メニュー画面を開いてレイアウトを選ぶ事もできるのでMenuのMに割り当てた。

Keyboard keybindings
Ryoiki.spoonを用いると、例えば家に帰ってモニターに繋いでからワンボタンでメインモニターには左右分割でObsidianとChrome、サブモニターにはGhosttyのような配置が可能になる。

おわりに

ウィンドウ配置のキーバインドは合わせるとこのようになった。

Keyboard keybindings
キーボードでタタターンとウィンドウを配置していくのは病みつきになる。百聞に一見はしかずであるので、興味があれば導入を推奨する。
また、Ryoiki.spoonを作るきっかけになったJINRAIはウィンドウフォーカスを司る神ツールなので、Hammerspoonを使うならば是非触ってみてほしい。