Mac用Rectangle App:マウスに触れずキーボードでウィンドウを整列させる
Rectangleは無料でオープンソースのmacOS用ウィンドウマネージャーだ。ショートカットを押すと、アクティブなウィンドウが画面の左半分、四隅のどれか、あるいは画面の3分の1に移動する。ウィンドウを画面端までドラッグすれば、そこにピタッと収まる。対応OSはmacOS 10.15以降で、IntelでもApple Siliconでも動く。現行バージョン(執筆時点でv0.96)はrectangleapp.comかRectangle app/releases”>GitHubのリリースページから入手できる。
2つのウィンドウを単に並べたいだけなら、macOS Sequoia以降はキーボードだけですでにそれができる。Rectangleが本領を発揮するのは、3分の1単位で分割したいとき、四分割したいとき、ショートカットを自分で割り当て直したいとき、あるいはトラックパッドに触れずディスプレイ間でウィンドウを動かしたいときだ。
インストールとアクセシビリティのアクセス許可
.dmgをダウンロードしてRectangleをアプリケーションフォルダにドラッグするか、Homebrewを使う。
brew install --cask rectangle
初回起動時、macOSがアクセシビリティの許可を求めてくる。システム設定 > プライバシーとセキュリティ > アクセシビリティでRectangleを有効にしよう。アプリが必要とする許可はこれだけで、これがないとウィンドウは1つも動かない。Rectangleは初回起動時に、標準のショートカットにするか、旧Spectacle互換のショートカットにするかも聞いてくる。以下の表はRectangleの標準設定を前提にしている。
何か設定を変える前に、まずブラウザのウィンドウを1つ選び、メニューバーのアイコンから左半分を選んでみよう。ウィンドウが動けば許可はちゃんと通っているので、そこからショートカットを覚え始めればいい。
標準のキーボードショートカット
すべての操作はControl + Optionに加えてもう1キーの組み合わせだ。すべて環境設定のショートカットタブから割り当て直せる。
| 操作 | ショートカット |
|---|---|
| 左半分 / 右半分 | ⌃⌥← / ⌃⌥→ |
| 上半分 / 下半分 | ⌃⌥↑ / ⌃⌥↓ |
| 最大化 | ⌃⌥↩ |
| 中央配置 | ⌃⌥C |
| 左上 / 右上の四分割 | ⌃⌥U / ⌃⌥I |
| 左下 / 右下の四分割 | ⌃⌥J / ⌃⌥K |
| 最初の3分の1 / 中央の3分の1 / 最後の3分の1 | ⌃⌥D / ⌃⌥F / ⌃⌥G |
| 最初の3分の2 / 最後の3分の2 | ⌃⌥E / ⌃⌥T |
| 次のディスプレイ / 前のディスプレイ | ⌃⌥⌘→ / ⌃⌥⌘← |
| 拡大 / 縮小 | ⌃⌥= / ⌃⌥- |
| 元に戻す | ⌃⌥⌫ |
最初に知っておくべき挙動が2つある。最初の3分の1を繰り返し押すと、ウィンドウは最初・中央・最後の3分の1を順に巡っていく。つまり1つのショートカットで3列すべてをカバーできるということだ。そして元に戻すは、Rectangleが最後にそのウィンドウを動かす前のサイズと位置に戻すというもので、対象はアクティブなウィンドウだけ。すでに配置し終えたほかのウィンドウには影響しない。
標準ショートカットが割り当てられていない追加のサイズ(4分の1の列、6分の1、9分の1、「ほぼ最大化」、「高さだけ最大化」、サイズを変えずに端へ寄せる、など)は、一般タブの下部にある「…」ボタンの中にあり、そこで自分のキーを割り当てられる。
スナップ領域:ドラッグで整列させる
ウィンドウを画面端までドラッグすると、半透明の輪郭が表示され、手を離したときの着地点を示してくれる。この対応関係は固定だ。
| ドラッグ先 | 結果 |
|---|---|
| 左端または右端 | 左半分または右半分 |
| 上端 | 最大化 |
| いずれかの角 | その角の4分の1 |
| 左端または右端で、角のすぐ上または下 | 上半分または下半分 |
| 下端、左・中央・右の3分の1エリア | その3分の1 |
| 左下または右下の3分の1エリアから、さらに下中央へドラッグ | 最初または最後の3分の2 |
スナップ機能は、意図せず頻繁に発動してしまう場合、環境設定でオフにできる。READMEによれば、ごく一部のユーザーでスナップを有効にしたまま通知センターがフリーズする現象も報告されており、「ドラッグでウィンドウをスナップ」をオフにするのが公式に案内されている対処法だ。
最初のレイアウト例:文書と参照資料
ノートパソコンの画面向けに、こんな流れがおすすめだ。
- 文書のウィンドウをクリックしてアクティブにし、⌃⌥←を押す。
- ブラウザのウィンドウをクリックし、⌃⌥→を押す。
ここでフォーカスが重要になる。両方のショートカットを押している間ずっと文書側がアクティブなままだと、文書だけが2回動いてしまい、ブラウザは元の位置から動かない。
横幅の広いディスプレイなら、半分ずつよりも3分の2と3分の1の組み合わせのほうが見やすいことが多い。文書を⌃⌥E、参照資料を⌃⌥Gに割り当てる。両方のウィンドウで名前付きの配置を使うのがコツだ。片方のウィンドウで拡大を押しても隣のウィンドウは縮まないので、半分ずつのレイアウトから文書を大きくしようとすると、きれいに分割されるのではなく参照資料に重なってしまう。
2台のディスプレイをまたいで作業する
次のディスプレイ(⌃⌥⌘→)はアクティブなウィンドウを隣接するモニターへ移動させ、そのディスプレイの寸法に合わせてサイズを調整する。3分の1の区切りは向きを考慮する。縦向きに設置したモニターでは、「最初の3分の1」は一番上の3分の1になる。
左半分または右半分をすでに端にあるウィンドウに対して繰り返し押すことで、次のディスプレイへとそのまま送り込むオプションもある。専用のディスプレイ移動ショートカットより、こちらを好む人もいる。
知っておくべき制約が1つある。Rectangleはスペース(仮想デスクトップ)間ではウィンドウを移動させない。Appleがそのための公開APIを用意していないためだ。Rectangle Proはタイトルバーのドラッグをシステムのスペース切り替えショートカットと組み合わせてシミュレートすることで「次のスペース/前のスペース」を実現しているが、無料版のアプリにはこの機能は含まれていない。
ショートカットが競合するアプリを無視する
一部のアプリは、それ自体でControl + Optionの組み合わせを使っている。この場合、Rectangle側のショートカットを変更するのではなく、競合するアプリを前面に出し、Rectangleのメニューからアプリを無視を選ぼう。そのアプリが最前面にある間、RectangleのショートカットはmacOSから登録解除される
。別のアプリに切り替えれば元に戻る。同じことはスクリプトからも実行できる。
rectangle://execute-task?name=ignore-app&app-bundle-id=com.apple.Safari
スクリプトやランチャーからアクションを実行する
すべてのアクションはURL経由でも実行でき、これを使ってAlfred、Raycast、Keyboard Maestro、Stream Deckなどと連携させている人が多い。
open -g "rectangle://execute-action?name=left-half"
アクション名の完全なリスト(tile-all、cascade-all、reverse-all、半分から9分の1までのすべての分割を含む)はRectangle mac#execute-an-action-by-url”>プロジェクトのREADMEに載っている。
隠れた設定項目と環境設定の保存場所
環境設定ウィンドウはあえて項目が絞り込まれている。ほかのオプションはdefaults writeコマンドで設定する仕組みで、Rectangle app/blob/main/TerminalCommands.md”>TerminalCommands.mdにその一覧がある。たとえばタイル分割されたウィンドウ同士に隙間を入れる設定などだ。変更したらRectangleを再起動しておこう。
環境設定は~/Library/Preferences/com.knollsoft.Rectangle.plistに保存される。設定タブには書き出しと読み込みのボタンがあり、同じ設定内容をJSONとして扱える。~/Library/Application Support/Rectangle/RectangleConfig.jsonにファイルを置いておくと、起動時に一度だけ読み込まれ、その後タイムスタンプ付きの名前にリネームされる。つまり常時読み込まれるライブな設定ファイルではない。Homebrewでインストールしていて、再起動のたびに設定が消えてしまう場合、READMEが案内している対処法はbrew uninstall --zap rectangleを実行してから再インストールすることだ。
Rectangleなしでもすでにできること
macOS Sequoia以降、Appleは独自のウィンドウタイル分割機能を用意している。ウィンドウを画面端までドラッグする、ウィンドウ > 移動とサイズ変更メニューを使う、あるいは半分のサイズに使うfn-Control-左矢印・fn-Control-右矢印、元のサイズに戻すfn-Control-Rといった公式のショートカットを使う、といった方法だ。タイル分割されたウィンドウ同士の余白は設定項目になっていて(システム設定 > デスクトップとDockの「タイル化されたウィンドウに余白を付ける」)、オフにもできる。
まずは普段使っているアプリで、この標準機能を試してみるといい。ウィンドウメニューの半分・4分の1で自分の作業がまかなえるなら、わざわざユーティリティを追加する理由はない。Rectangleが向いているのは、3分の1や3分の2の分割をキーボードで済ませたい、繰り返し押してサイズを切り替えたい、ショートカットを自分で選びたい、アプリごとの除外リストが欲しい、あるいはスクリプトから操作したい、といった場合だ。これは機能の多さを競う話ではなく、自分の作業スタイルに合うかどうかの話でしかない。
RectangleとRectangle Proの違い
Rectangle Proは同じ開発者による、有料でクローズドソースの別アプリで、Rectangleをベースに作られている。公式ページによれば、ウィンドウ上のどこからでも「投げる」ジェスチャーで16箇所ある位置のどれかへ送る機能、カスタムのサイズと位置、1つのショートカットまたはディスプレイ接続時に適用されるワークスペースレイアウト、画面端へのウィンドウの一時退避、次/前のスペースへの移動アクション、iCloud経由の設定同期などが売りだ。10日間の試用が可能で、macOS 13.5以降が必須。現在の価格はProのページで確認してほしい。
実用面での判断基準はこうだ。ノートパソコンをドッキングするたびにエディタ・ブラウザ・ターミナルという同じ配置を毎回組み直しているなら、Proのワークスペース機能はまさにそのために作られている。だいたい2つのウィンドウを分割するだけなら、無料版で十分だ。
ショートカットが反応しないとき
READMEに書かれているトラブルシューティングの順序は、メンテナーが実際によく目にする原因を反映したものだ。
- Macをロックしてからロックを解除する。特にmacOSのアップデート直後は、これだけで意外なほど多くの不具合が解消する。
- それでも直らなければMacを再起動する。
- 同じ操作をメニューバーのメニューから試す。メニューからは動くのにショートカットだけ効かない場合、最前面のアプリでショートカットが競合している。
- 原因を切り分けている間、ほかのウィンドウマネージャー(Magnet、BetterSnapTool、yabaiなど)はすべて終了しておく。
- アクセシビリティの許可をリセットする。
tccutil reset All com.knollsoft.Rectangleを実行するか、システム設定のアクセシビリティ一覧でRectangleを無効にしてからマイナスボタンで削除し、再起動後、起動時にもう一度許可を与える。無効化してから削除する、という順番が重要だ。
問題が特定のアプリだけに限られている場合は、まずそのアプリを疑おう。READMEが名指ししているのはiTerm2で、デフォルトでは文字幅の単位でしかサイズ変更ができない。defaults write com.googlecode.iterm2 DisableWindowSizeSnap -integer 1でこの挙動をオフにできる。
Rectangleが実際に何をしているか確認するには、メニューを開いた状態でOptionキーを押しながらView Logging…(「Rectangleについて」の項目と入れ替わる)を選ぶ。各アクションのたびに、計算上の矩形と実際に反映された矩形がログに出力される。この2つが一致しているのにウィンドウがそこに収まらない場合は、ほかのアプリが干渉している。GitHubでIssueを立てるなら、このログを保存しておこう。
アンインストール
Rectangleを終了し、ゴミ箱に移動する。保存済みの設定も削除したい場合は次のコマンドを使う。
defaults delete com.knollsoft.Rectangle
Homebrewでインストールした場合はbrew uninstall --zap rectangleを実行すれば、plistファイルも一緒に削除される。