ウィンドウマネジメントの話。
色んなウィンドウを開いてると「画面半分ずつにしたい」とか「表示してるものを移動したい」とか思うことがある。細かい調整をするのもマウスで操作するのも地味に面倒。これまでは Shiftit というアプリケーションを使っていたが、ビデオ通話との相性が悪くて使えなくなってしまった。
開発者ならイケてる開発環境に憧れるもの、windows なら i3 なるウィンドウマネージャがあり、ウィンドウをタイル状に並べていい感じにしてくれる。MacOS でこれと近いことを実現してくれるものを探したら yabai にたどり着いた。導入後のイメージは これ とか これ とか これ を見て。
今回は yabai によるウィンドウマネジメントを設定するまでを記録。
yabai + skhd によるウィンドウマネジメント
yabai
はコマンドラインからコマンドを実行するとウィンドウマネジメントができるようにしてくれる。そして yabai
のコマンドに skhd
を使ってショートカットを設定することでキーボード操作できるようにする、という流れ。
yabai
も skhd
も同じ作者によって作成されたもので、基本的な設定はコピペだけで完結する。
インストール
brew でインストールします。
brew install koekeishiya/formulae/yabai brew install koekeishiya/formulae/skhd
起動
それぞれ下記コマンドで起動する。停止する時は stop-service
を使う。
yabai start-service skhd start-service
brew services
を使えという記事も散見されたが上手くいかず、上記を試したらいけた。homebrew API の仕様変更により変更されたようだ(参考)。
アクセシビリティの設定
サービスを使うにはアクセシビリティの設定で yabai
と skhd
による操作を許可する必要がある。[設定] > [Privacy & Security] > [Accessibility] と進み、yabai と skhd のチェックをONにする
設定ファイル
設定ファイルは .yabairc
と .skhdrc
の2種類。どちらも基本的なものが既にあるので公式から引っ張ってくると良い。
念のため差分を紹介。
.yabairc
yabai -m config mouse_follows_focus off yabai -m config active_window_border_color 0xff4dcb7f yabai -m config layout float
- マウスオーバーでアクティブにする処理を無効化
- アクティブウィンドウのボーダーカラーを変更。色指定は 0xff + カラーコードで記述
- レイアウトは
float
を指定。bsp
に設定する方が通っぽいと思ったが使いこなせなさそうだったので固定グリッドでサイズを変更できるようにしたかった
.skhdrc
alt - left : yabai -m window --grid 1:2:0:0:1:1 # left alt - right: yabai -m window --grid 1:2:1:0:1:1 # right shift + alt - left : yabai -m window --grid 1:3:0:0:2:1 # left 2/3 alt - down : yabai -m window --grid 2:2:0:1:1:1 # left-down alt - up : yabai -m window --grid 2:2:0:0:1:1 # left-up shift + alt - up : yabai -m window --grid 2:2:1:0:1:1 # right-up shift + alt - down : yabai -m window --grid 2:2:1:1:1:1 # right-down alt - t : yabai -m window --grid 4:4:1:1:2:2 # center
- 画面の半分と4分の1での分割を指定して、それぞれにショートカットを割り当てた。グリッドの設定方法の詳細がわからずあれこれ試して分割方法を探った…
- センター表示はデフォルトから存在する
- alt + left -> right みたいなキーバインドを設定したかったが方法がわからなかったのでシフトキーに甘んじている
- 本当は yabai はもっと強力なウィンドウマネージャであり、フォーカスの変更、ウィンドウの移動、配置変更などできるが今のところは使っていない