タイル型ウィンドウマネージャーをchunkwm から yabai に移行した話

概要
---
タイル型ウィンドウマネージャーのchunkwmがアーカイブ化されていたので、後継のyabaiに移行した。
https://github.com/koekeishiya/yabai

chunkwm で利用していた skhd がそのまま利用できるため移行手順はシンプルなのだが、yabaiが一部の機能(chunkwmでもあったstickey等) を用いてDockを通じてウィンドウを操作するためにSIPを無効化しなければならないことに注意。

## chunkwm から移行すべきか？
chunkwm は macOS10.13–10.14 をサポートしているが、先日リリースされた 10.15(catalina) はサポートされない。
つまり、catalina ユーザは yabai を利用しなければならない。


システム要件
---
|項目|URL|
|:-----------------|:------------------|
| 要件 | https://github.com/koekeishiya/yabai/wiki#installation-requirements |
| SIP無効化方法とその機能 | https://github.com/koekeishiya/yabai/wiki/Disabling-System-Integrity-Protection |


移行作業
---
### chunkwm のアンインストール
``` text:chunkwm
rm ~/.chunkwmrc
brew services stop chunkwm
brew uninstall chunkwm
```
### yabaiのインストール
``` text:yabai
brew install yabai
```

設定
---
### .yabaircの設定
公式サンプル
https://github.com/koekeishiya/yabai/blob/master/examples/yabairc

設定
https://github.com/koekeishiya/yabai/wiki/Configuration#configuration-file

.yabaircはそのまま公式のサンプルを流用した。

### .skhdrcの設定
公式サンプル
https://github.com/koekeishiya/yabai/blob/master/examples/skhdrc

コマンド
https://github.com/koekeishiya/yabai/wiki/Commands#message-passing-interface


いくつか吟味してみたところ、以下になった。

``` text:.skhdrc
#------------------------------------------------------------
# モニター操作
#------------------------------------------------------------
# モニターを選択する
ctrl + cmd - j  : yabai -m display --focus 1
ctrl + cmd - k  : yabai -m display --focus 2

# ウィンドウをモニターに移動する
ctrl + cmd - 1  : yabai -m window --display 1; yabai -m display --focus 1
ctrl + cmd - 2  : yabai -m window --display 2; yabai -m display --focus 2

#------------------------------------------------------------
# ウィンドウの選択・操作
#------------------------------------------------------------
# ウィンドウを選択する
cmd - j : yabai -m window --focus prev
cmd - k : yabai -m window --focus next

# ウィンドウを入れ替える
ctrl + cmd - b : yabai -m window --swap west
ctrl + cmd - n : yabai -m window --swap south
ctrl + cmd - p : yabai -m window --swap north
ctrl + cmd - f : yabai -m window --swap east

# オフセット有無
alt - a : yabai -m space --toggle padding; yabai -m space --toggle gap

#------------------------------------------------------------
# ウィンドウのサイズ調整
#------------------------------------------------------------
# ウィンドウサイズを全て等しくする
shift + cmd - 0 : yabai -m space --balance

# ウィンドウを移動する
shift + ctrl - a : yabai -m window --move rel:-20:0
shift + ctrl - s : yabai -m window --move rel:0:20
shift + ctrl - w : yabai -m window --move rel:0:-20
shift + ctrl - d : yabai -m window --move rel:20:0

# ウィンドウのサイズを増やす
shift + alt - a : yabai -m window --resize left:-20:0
shift + alt - s : yabai -m window --resize bottom:0:20
shift + alt - w : yabai -m window --resize top:0:-20
shift + alt - d : yabai -m window --resize right:20:0

# ウィンドウのサイズを減らす
shift + cmd - a : yabai -m window --resize left:20:0
shift + cmd - s : yabai -m window --resize bottom:0:-20
shift + cmd - w : yabai -m window --resize top:0:20
shift + cmd - d : yabai -m window --resize right:-20:0

# set insertion point in focused container
ctrl + alt - h : yabai -m window --insert west
ctrl + alt - j : yabai -m window --insert south
ctrl + alt - k : yabai -m window --insert north
ctrl + alt - l : yabai -m window --insert east


#------------------------------------------------------------
# レイアウトの設定
#------------------------------------------------------------
# レイアウト変更
ctrl + alt - b : yabai -m space --layout bsp
ctrl + alt - f : yabai -m space --layout float

# ----------------------------------------------------------
#   float 時のレイアウト操作
# ----------------------------------------------------------
# ウィンドウを移動する(Float時のみ)
#ctrl + cmd - b : yabai -m window --warp west
#ctrl + cmd - n : yabai -m window --warp south
#ctrl + cmd - p : yabai -m window --warp north
#ctrl + cmd - f : yabai -m window --warp east

# フルスクリーンにする
shift + cmd - up     : yabai -m window --grid 1:1:0:0:1:1

# 左半分にする
shift + cmd - left   : yabai -m window --grid 1:2:0:0:1:1

# 右半分にする
shift + cmd - right  : yabai -m window --grid 1:2:1:0:1:1

#------------------------------------------------------------
#   bsp 時のレイアウト操作
#------------------------------------------------------------
# ウインドウの並びを回転する
alt - r : yabai -m space --rotate 90

# Y軸方向で反転する
alt - y : yabai -m space --mirror y-axis

# Y軸方向で反転する
alt - x : yabai -m space --mirror x-axis

# 親レイアウト方向で伸ばす
alt - d : yabai -m window --toggle zoom-parent

# フルスクリーンにする
alt - f : yabai -m window --toggle zoom-fullscreen

# 縦分割にする
alt - e : yabai -m window --toggle split

# 画面中央に表示する
alt - t : yabai -m window --toggle float;\
          yabai -m window --grid 12:12:1:1:10:10

```