🪟

Mac でウィンドウ配置をキーボードで操作するためのウィンドウマネージャー比較

2024/02/12に公開2

数年前に Windows から mac にマシンを変えたのですが、乗り換えた時に戸惑ったことの一つが、「ウィンドウを操作するショートカットがないこと」でした。
Windows だと Windows ボタン + 矢印でウィンドウをいい感じに動かせますが、Mac だとデフォルトではできません。

乗り換え当初はどこかでお勧めされていた ShiftIt を使っていましたが、すでにメンテナンスが止まっていて、実際自分の環境でも動かなくなってきました。
そこで、せっかくなので簡単ではありますが、ウィンドウマネージャーと呼ばれるソフトウェアは複数あるので、より自分に合うものを選ぶために比較してみました。

環境情報

  • Apple M1 Pro
  • macOS Sonoma 14.2.1

今回の自分の要件

現時点での私のニーズとしては、キーボード操作での上下左右への移動と、ディスプレイ間での移動ができれば十分 です。
以下で見るように有料のものといっても高々 1,000円前後ですが、リッチな操作をしたいわけじゃないので今回は無料のものにします。

比較表

※記事執筆時点である 2024/2/10 時点の情報 に基づきます

ツール名 特徴 実装言語 価格 最終リリース日
Amethyst Linux、BSD 系 OS のウィンドウマネージャー xmonad like なツール。レイアウトのプリセットを適用して複数ウィンドウをいい感じに配置してくれる Swift 無料 (OSS) 2023/8/14
Rectangle Spectacle をベースに発展したツール、シンプル Swift 無料 (OSS) (Pro は 1,521 円) 2023/12/3
yabai + skhd カスタマイズ性が高く、高機能なツール。skhd で yabai の操作にホットキーを割り当てる[1] C 無料 (OSS) 2024/2/5
Spectacle シンプル。メンテは止まっており、Rectangle への移行を推奨している Objective-C 無料 (OSS) 2022/1/15 (2023/1/22 に Public Archive)
ShiftIt シンプル。メンテは止まっており、Hammerspoon ShiftIt などへの移行を推奨している Objective-C 無料 (OSS) 2018/3/1
Hammerspoon ShiftIt Mac のカスタマイズツールである Hammmerspoon を用いた ShiftIt の実装 Lua 無料 (OSS) 2022/9/11
BetterSnapTool 操作はシンプルだがカスタマイズ製が高め - $2.99 2023/6/14
Magnet シンプル、カスタマイズはほぼなし - $4.99 2023/12/14
Moom マウス操作も可能 - $9.99 2022/6/14

ざっとみたところ、9種類くらいありました。
一応一言書いてますが、有料のものはあまりちゃんと見てません。
この中から、有料のものと、昨年 (2023年) に一度もリリースされておらずメンテナンスに不安があるものは除外 します。

結果、今回の選択肢は Amethyst、Rectangle、yabai + skhd の 3種 になりました。

選択肢

Amethyst

あらかじめ定義された複数のレイアウト (縦並び、横並び、フルスクリーン、左1 + 右上下2、etc.) をショートカット一発で順番に適用できます。
ただし、ShiftIt でできたようなウィンドウの任意の位置への配置はパッと見できなさそう? (できるかもしれない、ちゃんと調べてはいない)
正直動作が自分の想像とは違いましたが、大きいディスプレイを複数使ってる時などは便利そう。

公式 Readme からもリンクされている紹介動画も置いておきます (長い)。
https://www.youtube.com/watch?v=7Z9-Ry4yGNc

xmonad の系譜らしいので、Linux などで xmonad を使っていた方はこちらが良いのかもしれません。

Rectangle

ShiftIt の後継としてはかなりしっくり来ると思います。
非常にシンプルで、Readme にあるコマンドも見やすかったです。

ただし Pro エディションが存在するので、無料版は明確に機能が制限されているであろうこと は今後の機能拡張を考えると少し気になりました。
ただ、今の自分には無料版の機能で十分かなという感触です。

デモ動画例 (後半でメニューを使ってますがキーボードで全部できます)
https://www.youtube.com/watch?v=17t0OSziUgY

yabai + skhd

多分 Amethyst でできることと Rectangle でできること全部できそう。
ただ、一部機能の利用には OS のセキュリティ機能である SIP (System Integration Protection) の無効化が必要。

デモ動画例。高機能なのでワクワクしますね。
https://www.youtube.com/watch?v=AdwhjIg_Xe4

番外: ShiftIt

選択肢外ですが、今まで使っていたものなので、なぜ使えなくなったのかなど事情を書いておきます。

冒頭書いたように、初めて mac を触った時にお勧めされている記事を見て導入しました。
しかし数年使用した感想として、Issue で多々報告があるように時々動作しなくなっていました。
キーボードショートカットにもメニューからのクリックにも反応しなくなり、そういう時は結局手動でウィンドウを調整してたので辛かったです。

2024/2/10 時点での Open Issue を見ると、

  • sleep したあと操作できなくなる
  • OS update したら動かなくなった
  • Zoom や Outlook を起動してると操作できなくなる

などなど報告されています。

Issue #296 では、作者が「もう mac book は使いたくないのでメンテナンスするモチベーションがなくなり、代わりのメンテナを探している」と書かれています
(mac book を盗まれて、代わりに Linux を使っていたらもう戻りたくなくなったらしい。当時の mac book は touch bar などがあるモデルで、そのあたりが嫌だったなどなど書かれている)。

なお、ShiftIt としては Readme で Hammerspoon ShiftIt (ShiftIt Spoon) への移行を推奨しています。

A highly recommended alternative to ShiftIt that can be implemented using Hammerspoon.
You can use the ShiftIt Spoon which implements the ShiftIt functionality in Hammerspoon.

......が、Hammerspoon ShiftIt も最終更新が 2022/9/11 なので、メンテナンスは活発にはされていないさそうでした。

結論

Amethyst vs Rectangle vs yabai + skhd の対決ですが、今回は Rectangle に軍配が上がりました。
yabai + skhd は非常におもしろしそうでしたが、今の自分にはオーバースペックだったこと、一部機能を使うには SIP の無効化が必要だったことなどが理由で選外となりました[2]

残る Amethyst と Rectangle ですが、私が元々求めていた機能は Windows のような、そして ShiftIt でできたような、キーボード操作で左右や上下にウィンドウを寄せて配置することだったので、Rectangle を選びました。

正直、私のニーズはキーボードでウィンドウの位置やサイズを操作できれば十分という全然大したものではなかったので、シンプルさやわかりやすさは決め手でした。
また、Rectangle は マニュアルが非常に見やすく、それを見てすんなり結果をイメージしながら操作できた ことも好感触でした。


Rectangle の設定画面。自分にはこれが直観的だった

シンプルさという意味では、有料の Magnet も好みに合いそうでしたが、とりあえず今回は無料の範囲で選んでいます。

なお、yabai + skhd はいずれ試したくなるときが来そうです。
Rectangle では物足りなくなったときに、他の有力な新候補が現れていなければ触ってみるかもしれません。

私のようにシンプルなウィンドウマネージャーツールを探されている方は Amethyst や Rectangle を、カスタマイズしてリッチにキーボード操作したい方は yabai + skhd を触ってみると良いのかなと思いました。

おまけ

Amethyst と Rectangle を実際に触ったのですが、二者択一ではなく、同時に使うということも十分現実的そうでした。
Amethyst の定義済みレイアウトを利用していい感じにウィンドウを配置しつつ、左右や上下に寄せたいときは Rectangle のショートカットを使う、といった感じ。
ただ一部干渉し合って、必ずしも思った通りには動かないこともありそうでした。

この2種の組み合わせ以外でも、複数のウィンドウマネージャーを併用してもいいのかもしれませんね。

脚注
  1. yabai のコマンドにホットキーの割り当てなどができれば必ずしも skhd でなくても良い。公式 Readme yabai と同じ作者が作った skhd の併用を推奨している (ottotto さん、コメントありがとうございました!) ↩︎

  2. yabai の Readme では、用途によっては SIP を無効化する必要があること、それにはリスクがあるので理解して使うべきであり、製作者は責任は負わないことを明記しています:

    System Integrity Protection can be (partially) disabled for yabai to inject a scripting addition into Dock.app for controlling windows with functions that require elevated privileges. This enables control of the window server, which is the sole owner of all window connections, and enables additional features of yabai.
    ...
    Use at your own discretion. I take no responsibility if anything should happen to your machine while trying to install, test or otherwise use this software in any form. You acknowledge that you understand the potential risk that may come from disabling ↗ System Integrity Protection on your system, and I make no recommendation as to whether you should or should not disable System Integrity Protection.

    ↩︎

Discussion

おっとっとおっとっと

yabaiはskhdで操作する必要はないですよ。ショートカット(キー)にyabaiのターミナルコマンドを割り当てできればなんでもいいです。keyboardmaestroとかならマウスにも設定可能なんで便利です。

kangetsu_121kangetsu_121

コメントありがとうございます、確かに skhd でなくてもよいので脚注1で補足しました。
keyboardmaestro 知りませんでした、これも高機能で便利そうですね。