KiwiDesk の位置づけ

KiwiDesk と、macOS の他のウインドウマネージャー

macOS には優れたウインドウマネージャーがあり、このページはそれらが劣っていると主張するものではありません。yabai や AeroSpace、Magnet の代わりを探している場合も、どれから始めるか迷っている場合も、どれがあなたの働き方に合うかを手早く見極めてもらうためのものです — 答えが KiwiDesk ではない場合も含めて。

ここに書いたことはすべて、各プロジェクト自身のドキュメントで確認しています。出典が重要な記述には、私たち自身のものも含めてリンクを付けました。確認できなかったことは、推測せずにそう書いています。

KiwiDesk の位置づけ
項目KiwiDeskyabaiAeroSpaceRiftOmniWMMagnet
設定方法設定 App または Lua設定ファイルTOML ファイルTOML ファイル設定 App または TOML設定 App
アップデート自動確認、App 内でインストールHomebrewHomebrewHomebrew自動確認、インストールは brewApp Store
マウスドラッグ、ドロップ、並べ替えキーボード中心キーボードのみトラックパッドジェスチャドラッグ、サイズ変更、ジェスチャ画面端にドラッグ
レイアウト7 種類3 種類4 種類5 種類2 種類スナップ領域
画面上の表示フォーカスリング、App Bar と Space BarJankyBorders、SketchyBar 経由なしメニューバーメニューバーなし
ライセンス無料、MIT無料、MIT無料、MIT無料、オープンソース無料、GPL-2.0有料、クローズドソース
必要な権限アクセシビリティアクセシビリティアクセシビリティアクセシビリティアクセシビリティ+入力監視アクセシビリティ
System Integrity Protection有効のまま全機能には無効化が必要有効のまま有効のまま有効のまま有効のまま
macOS デスクトップネイティブ、デスクトップごとのプロファイルSIP 無効時のみ独自のものに置き換え個別スペースありで動作個別スペースが必要
ネイティブタブタイルを保持既知の問題既知の問題既知の問題対応
ショートカット内蔵、モードあり別アプリ(skhd)内蔵、モードあり内蔵内蔵、Hyper キー内蔵
スクリプトLua、CLI、イベントCLI、シグナル、クエリCLI、コールバックCLI記載なし
コミュニティ新しく、小規模最大規模 — skhd、SketchyBar大規模新しく、小規模新しく、小規模なし — 商用アプリ

表のセルはあえて簡潔にしています — 根拠は下の各セクションにあり、ガイドが KiwiDesk の 7 つのレイアウトを説明しています。レイアウトの数は各プロジェクトのドキュメントに基づき、2026 年 8 月時点で確認したものです。これらのプロジェクトは動きが速いので、古くなっている点があればぜひ教えてください。

KiwiDesk が実際に違うところ

5 つあります — そのどれも、他が仕事を下手にこなしているという話ではありません。

設定 App の下にスクリプト VM があること

yabai、AeroSpace、Rift は設計上、設定ファイルが先です。ファイルを書き、再読み込みし、また書く。それを楽しめる人には良い方法ですが、それ以外の人には壁になります。ただし OmniWM も設定 App を備えているので、GUI があること自体はもう KiwiDesk を分けるものではなく、このページはそれを取り繕いません。違うのはその下にあるものです。KiwiDesk は設定 App にサンドボックス化された Lua VM、CLI、JSON イベントストリームを組み合わせ、OmniWM は TOML ファイルを組み合わせています。レイアウト、余白、App ごとのルール、ショートカット、プロファイル — すべてどちらの側からも届くので、深さは必要になったときに手を伸ばすものであり、入場料ではありません。

ネイティブタブでレイアウトが散らからない

Finder や Safari、Ghostty で 2 つ目のタブを開くと、macOS は静かに 2 つ目のウインドウを作ります。タイル型のレイアウトにタブが余計なタイルを撒き散らしがちなのはこのためです。Ghostty 自身のドキュメントは、これを yabai と AeroSpace の既知の問題として挙げ、修正は自分たちの側にはないと述べています。macOS のウインドウ API がそういう仕組みだからです。Rift でも独自の Issue として未解決のままで、OmniWM はネイティブタブ対応を機能として挙げていますが、その挙動までは説明していません。KiwiDesk は切り替えを認識し、タブのグループを 1 つのタイルに保ちます。フロート状態も並び順もそのままです。できないこと — そしてこれは誰にもできないこと — は、2 つのタブを 2 つのタイルに分けることです。それにはプロセスをまたぐウインドウの付け替えが必要で、macOS はそれを許していません。私たちはそれをはっきり書いています。あなたが自分で気づくまで黙っているのではなく。

キーボードだけでなく、マウスのためにも作られている

yabai と AeroSpace は設計上キーボードが中心で — AeroSpace にはマウスの話がまったくありません — 多くの人にとってはそこが壁になります。KiwiDesk は両方のために作られていますが、それは KiwiDesk だけではありません。OmniWM には独自のマウスによるサイズ変更とトラックパッドジェスチャがあり、この点では両者は同等で、どちらかが先んじているわけではありません。KiwiDesk が用意しているのは、デスクトップ上をドラッグすると着地先をその場で示すドロップターゲット、ウインドウをドロップして別のスペースへ送れる Space Bar、そして密なレイアウトでキーボードの位置を教えるフォーカスリングです。App Bar と Space Bar は App の一部であり、別途インストールして設定するデーモンではありません。ショートカット、モード、App 起動の割り当ても内蔵で、yabai が skhd に頼る部分をカバーします。

SIP を切らずに、ネイティブの macOS デスクトップを扱う

ここは正直に書きます。KiwiDesk 自身のスペースは、非アクティブなウインドウを画面の隅に寄せて隠すことで実現しています。AeroSpace が説明しているのと同じ手法で、私たちは自分たちのドキュメントでそのことを引用しています。違うのは、KiwiDesk が普段スワイプで行き来しているネイティブの macOS デスクトップも操作できる点です。ウインドウをデスクトップ 3 に送り、そこへ切り替え、プロファイルをデスクトップに結びつけておけば、そこへ着いた瞬間に設定一式が読み込まれます。yabai は同じ操作を、SIP の無効化が必要な Scripting Addition 経由で行います。KiwiDesk はSIP を切るよう求めたことはなく、今後もありません。そして、どこにでも置いておきたいウインドウ — 通話、メモ、電卓 — は Sticky にでき、ウインドウ自身の印と Space Bar のタイル上のバッジを伴って、すべてのスペースに付いてきます。

macOS で許される限り、要求は少なく

KiwiDesk が求めるのはアクセシビリティだけです。入力監視は使いません。ショートカットは Carbon 経由なので、すべてのキー入力を読み取る権限を求めることはありません。画面収録もなし。そしてSIP も切りません。macOS の「ディスプレイごとに個別の操作スペース」がオンでもオフでも動作します — OmniWM 自身の README はオンであることを要求し、有効にするまでウインドウ管理を停止します。アップデートは App 自身に届くので、brew upgrade を習慣にする必要もありません。代償もはっきり書いておきます。入力監視を使わない以上、macOS 自身のショートカットとぶつかったときは macOS 側が勝ちます。もう一度選んでも同じ判断をしますが、それでも取引ではあります。

他のツールを、ひとつずつ

yabai

得意なこと

macOS で最も高機能で、最もスクリプトしやすいウインドウマネージャーであり、コミュニティの厚さは群を抜いています。クエリ API とシグナルは、macOS の ricing 界隈の多く — SketchyBar、JankyBorders、skhd — がこれを中心に育った理由です。ウインドウマネージャーをプログラムしたいなら、yabai は今も基準です。

KiwiDesk との違い

違いは 2 つ。フル機能 — スペース間のウインドウ移動、不透明度、ウインドウのサブレベル — にはScripting Addition が必要で、そのために System Integrity Protection を部分的に無効化しなければなりません。KiwiDesk はデスクトップ操作を SIP 有効のまま動くブリッジ経由で行い、SIP を切る必要がある部分はそもそも提供していません。また yabai の設定はシェルスクリプトの編集で、設定用の画面はまったくありません。yabai が本当に先を行っている点は、そのエコシステムと、公開された設定例の量です。5 年の先行があり、それは見て取れます。

AeroSpace

得意なこと

高速で、SIP を切らず、気持ちよく割り切っています。i3 風のワークスペースモデルは macOS のスペースを完全に迂回するため、ネイティブのスペースにはめったにない予測しやすさがあります。ドキュメントも際立って良く、私たち自身のドキュメントが読者をそちらへ送るほどです。

KiwiDesk との違い

AeroSpace はキーボード専用、TOML 専用です。設定画面もフォーカスリングもバーもなく、マウスの話もありません。ネイティブの macOS デスクトップにも意図的に触れず、ワークスペースがそれを置き換えるので、Mission Control やデスクトップに結びつけたプロファイルはモデルに含まれません。KiwiDesk は非アクティブなウインドウを AeroSpace とまったく同じ方法で隠し、その上にネイティブのデスクトップ層を重ねています。

Rift

得意なこと

この中で最も新しく、最も技術的に意欲的です。Rust で書かれ、SIP を切らず、niri 風のスクロール列を含む 5 つのレイアウトとトラックパッドジェスチャを備えます。設定ファイル方式で高速かつ現代的なものを求めるなら、真剣な選択肢です。

KiwiDesk との違い

Rift は TOML ファイルで設定し、設定 App はありません。画面上の表示もフォーカスリングやバーではなくメニューバー項目です。まだ若く、動きが速いことは両面あります。機能は早く届き、同時に物事は変わります。ネイティブの macOS タブをどう扱うかについての記載は見つからなかったため、このページはその点について、どちらの方向にも主張しません。

OmniWM

得意なこと

ここで最も対等に近い存在です。Swift 製、SIP を切らず、公証済みのビルドを配布し、このリストで本物の設定 App を持つもう一方でもあります。niri 風のスクロールと dwindle の BSP レイアウトはよくできており、急速に伸びています。

KiwiDesk との違い

選ぶ前に知っておく価値のある違いが 2 つ。起動時に入力監視を要求します(KiwiDesk はアクセシビリティだけです)。そして macOS の「ディスプレイごとに個別の操作スペース」がオンであることを要求し、オンになるまでウインドウ管理を停止します。KiwiDesk はどちらでも動きます。GUI の下にあるのはスクリプト VM ではなく TOML ファイルで、レイアウトは 2 つ(KiwiDesk は 7 つ)、ライセンスは GPL-2.0 です(KiwiDesk は MIT)。コードを再利用するつもりなら、この違いは効いてきます。

Magnet と Rectangle

得意なこと

Mac ユーザーが実際に名前を聞いたことがある唯一のもので、それには理由があります。数百円で買え、30 秒で理解でき、ウインドウを画面の端にドラッグするだけで、多くの人が実際に抱えている問題が解決します。Rectangle はほぼ同じことを無料で行います。

KiwiDesk との違い

Magnet はウインドウを領域にスナップさせるもので、レイアウトを管理するものではありません。ウインドウを開いたときの自動タイル化も、スペースの概念も、App ごとのルールも、デスクトップ全体を組み替えるプロファイルも、スクリプトもありません。有料でクローズドソースでもあります。「Magnet、ただし勝手に整え続けてくれるもの」が欲しいなら、それがおおよそ KiwiDesk の埋める隙間です。

では、どれを選ぶべきか

選ぶなら…

yabai
ウインドウマネージャーを深くスクリプトしたく、シェルの設定に慣れていて、フル機能のための SIP の妥協を受け入れられるなら。
AeroSpace
高速でキーボードだけの i3 風のワークフローが欲しく、macOS のスペースと付き合うより置き換えたいなら。
Rift
スクロール列を備えた、設定ファイル方式の現代的な Rust 製が欲しく、若いプロジェクトでも気にならないなら。
OmniWM
設定 App と niri 風スクロールを備えた Swift 製で SIP を切らないものが欲しく、入力監視も個別スペースの要件も気にならないなら。
Magnet
ウインドウを画面の半分にスナップさせたいだけで、あとは二度と考えたくないなら。
KiwiDesk
設定ファイルを書かずに本物のタイル型が欲しいなら — 設定 App、ちゃんと使えるマウス、内蔵のフォーカスリングとバー、SIP 有効のままのネイティブデスクトップとプロファイル連携、そして GUI で足りなくなったときのための Lua。

無料で MIT ライセンス、macOS 14 以降・Apple シリコン向けです。上のいずれかから移ってきましたか? Lua リファレンスが、設定がどこまで届くかを示します。