Mission Controlをやめて AeroSpace に乗り換えた話 — macOSタイリングWM入門

macOS の Mission Control(Spaces)によるウィンドウ管理に限界を感じ、タイリングウィンドウマネージャー AeroSpace に乗り換えました。本記事では、導入の背景から設定のポイント、実際に使っているカスタマイズまでを紹介します。


Image in a image block

なぜ Mission Control をやめたのか

macOS 標準の Mission Control(Spaces)は直感的で手軽ですが、日常的にウィンドウを大量に扱うようになると、いくつかの不満が出てきました。

  • 切り替えアニメーションが遅い — Spaces の移動には毎回スライドアニメーションが入り、無効化もできない
  • ウィンドウの配置が手動 — 毎回ドラッグでリサイズ・配置するのは非効率
  • Space 数の上限 — モニタあたり最大 16 という制約がある
  • マルチディスプレイとの相性 — Spaces を増やすほど挙動が不安定になりがち

これらを解決するために、i3 ライクなタイリングウィンドウマネージャーである AeroSpace を導入しました。


AeroSpace とは

AeroSpace は、macOS 向けのタイリングウィンドウマネージャーです。Linux の i3wm に強くインスパイアされており、以下の特徴を持ちます。

  • キーボード主体のウィンドウ操作 — マウスに手を伸ばさずにウィンドウの移動・リサイズ・配置が可能
  • 独自の Workspace 機能 — macOS Spaces に依存しない仮想デスクトップ管理
  • TOML ベースの設定ファイル — テキストファイル 1 つでほぼすべてを管理
  • 軽量で高速 — アニメーションなしで瞬時にワークスペースを切り替え

インストール

Homebrew でインストールします。

brew install --cask nikitabobko/tap/aerospace

デフォルト設定ファイルをコピーして、カスタマイズの出発点にします。

cp /Applications/AeroSpace.app/Contents/Resources/default-config.toml ~/.aerospace.toml

まず最初にやること:macOS Spaces を「実質オフ」にする

AeroSpace を使ううえで最も重要なポイントがこれです。

AeroSpace は macOS 純正の Spaces ではなく、独自の workspace 機能で仮想デスクトップを実現します。公式ガイドでも「macOS の Space はディスプレイごとに 1 つだけにして、それ以上は作らない」運用が推奨されています。

推奨する設定
  1. System Settings → Desktop & Dock → Mission Control で、Spaces 関連のショートカットやジェスチャをオフにする
  2. ディスプレイごとに macOS デスクトップは 1 つだけ を維持
  3. 仮想デスクトップの切り替えはすべて AeroSpace の workspace(alt + 1alt + 9alt + Aalt + Z)で行う
💡
macOS の Spaces を完全に無効化することはできませんが、「Space は 1 つだけ、あとは全部 AeroSpace の workspace で管理」にするのが設計思想に一番フィットします。

基本操作:キーバインド早見表

AeroSpace のキーバインドは i3 に似ており、alt キーを軸に操作します。

フォーカス移動
キー 操作
alt + H 左のウィンドウにフォーカス
alt + J 下のウィンドウにフォーカス
alt + K 上のウィンドウにフォーカス
alt + L 右のウィンドウにフォーカス
ウィンドウ移動
キー 操作
alt + Shift + H ウィンドウを左へ移動
alt + Shift + J ウィンドウを下へ移動
alt + Shift + K ウィンドウを上へ移動
alt + Shift + L ウィンドウを右へ移動
ワークスペース操作
キー 操作
alt + 19 ワークスペース 1〜9 に切り替え
alt + AZ ワークスペース A〜Z に切り替え
alt + Shift + 19 ウィンドウをワークスペース 1〜9 に送る
alt + Tab 直前のワークスペースに戻る
alt + Shift + Tab ワークスペースを次のモニターに移動
レイアウト・リサイズ
キー 操作
alt + / タイルレイアウト切り替え(水平 ↔ 垂直)
alt + , アコーディオンレイアウト切り替え
alt + - ウィンドウを縮小(-50px)
alt + = ウィンドウを拡大(+50px)

おすすめカスタマイズ

ここからは、私が実際に行っているカスタマイズを紹介します。

1. JankyBorders でアクティブウィンドウを視覚化

タイリング環境では「今どのウィンドウにフォーカスがあるか」が分かりにくくなることがあります。JankyBorders を使えば、フォーカス中のウィンドウに色付きの枠線を表示できます。

brew tap FelixKratz/formulae
brew install borders

ポイントは、brew services ではなく AeroSpace の起動時コマンドから呼び出すことです。こうすると AeroSpace → JankyBorders の起動順が保証され、タイル管理と枠表示のタイミングが揃います。

after-startup-command = [
  "exec-and-forget borders active_color=0xffe1e3e4 inactive_color=0xff494d64 width=5.0"
]
  • active_color — フォーカス中のウィンドウの枠色(明るいグレー #e1e3e4
  • inactive_color — 非フォーカスのウィンドウの枠色(暗めのグレー #494d64
  • width — 枠の太さ
2. ギャップを入れてウィンドウ間に余白をつくる

デフォルトではウィンドウ同士がぴったり隣接しますが、少し隙間を入れるだけで視認性が大幅に向上します。

[gaps]
    inner.horizontal = 10
    inner.vertical   = 10
    outer.left       = 10
    outer.bottom     = 10
    outer.top        = 10
    outer.right      = 10
3. フォーカス変更時にマウスを自動追従させる

キーボードでフォーカスを切り替えたとき、マウスカーソルもそのウィンドウの中央に自動で移動させます。これにより、キーボード操作の直後にマウスが必要になった場面でも、カーソルが常に正しいウィンドウにいてくれます。

on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
on-focus-changed = "move-mouse window-lazy-center"
4. アプリを特定のワークスペースに自動振り分け

これが AeroSpace の真骨頂とも言える機能です。on-window-detected ルールを使えば、アプリ起動時に自動でワークスペースを割り当てられます。

# Notion → ワークスペース N
[[on-window-detected]]
if.app-id = 'notion.id'
run = 'move-node-to-workspace N'

# Cursor(エディタ)→ ワークスペース C
[[on-window-detected]]
if.app-id = 'com.todesktop.230313mzl4w4u92'
run = 'move-node-to-workspace C'

アプリの頭文字でワークスペースを決めておくと、「alt + N で Notion」「alt + C で Cursor」のように瞬時にアクセスできます。

🔍
アプリの app-idaerospace list-apps コマンドで確認できます。
5. 特定アプリをフローティングにする

システム設定や証券ツールなど、タイリングに不向きなアプリはフローティング(タイル管理の対象外)に設定できます。

# Docker Desktop → フローティング
[[on-window-detected]]
if.app-id = "com.docker.docker"
run = "layout floating"

# システム設定 → フローティング
[[on-window-detected]]
if.app-id = "com.apple.systempreferences"
run = "layout floating"

# HYPER SBI 2 → ワークスペース S + フローティング
[[on-window-detected]]
if.app-id = 'jp.co.sbisec.HYPERSBI2'
run = ['layout floating', 'move-node-to-workspace S']

ワークスペース移動とフローティングを組み合わせることで、「特定のワークスペースにまとめつつ自由に配置」という運用も可能です。

6. Service モードでメンテナンス操作をまとめる

AeroSpace には binding mode という概念があり、特定のキーで「モード」を切り替えることで、通常とは異なるキーバインドを使えます。

alt + Shift + ; で service モードに入り、以下の操作が可能です。

キー 操作
Esc 設定リロード&メインモードに戻る
R ワークスペースのレイアウトをリセット
F フローティング ↔ タイリングの切り替え
Backspace 現在のウィンドウ以外をすべて閉じる
[mode.service.binding]
    esc = ['reload-config', 'mode main']
    r = ['flatten-workspace-tree', 'mode main']
    f = ['layout floating tiling', 'mode main']
    backspace = ['close-all-windows-but-current', 'mode main']

私の運用ルール

実際に使ってみて落ち着いた運用ルールをまとめます。

ワークスペースの使い分け

アプリの頭文字に合わせてワークスペースを割り当てています。

ワークスペース 用途 割り当てアプリ
C コーディング Cursor
N ノート・ドキュメント Notion
S 株式トレード HYPER SBI 2(フローティング)
1〜9 汎用・一時作業 自由に使用
頭に入れておくと便利な操作
  • alt + Tab — 直前のワークスペースとの行き来(back-and-forth)。2 つの作業を頻繁に切り替えるときに便利
  • alt + Shift + Tab — ワークスペースごと次のモニターに移動。マルチディスプレイで重宝
  • alt + / — 水平 ↔ 垂直レイアウトの切り替え。画面の使い方をその場で変えたいときに

補助ツールとの組み合わせ

AeroSpace 単体でも強力ですが、以下のツールと組み合わせるとさらに快適になります。

ツール 役割 連携方法
JankyBorders ウィンドウ枠の表示 after-startup-command で起動
AutoRaise マウスホバーで自動フォーカス brew でインストール・常駐
Ghostty 高速ターミナルエミュレータ タイリング環境と好相性

まとめ

Mission Control から AeroSpace に移行して感じた最大の変化は、ウィンドウ管理に「考える時間」がなくなったことです。

  • アプリは起動した瞬間に決まったワークスペースに配置される
  • キーボードだけでフォーカス移動・リサイズ・ワークスペース切り替えが完結する
  • Spaces のアニメーションによる待ち時間がゼロになる

設定は ~/.aerospace.toml の 1 ファイルで完結するため、Git 管理して dotfiles に含めておけば環境の再現も簡単です。

macOS のウィンドウ管理に不満を感じている方は、ぜひ AeroSpace を試してみてください。