DR;TL
macOSにタイル型ウィンドウマネジャー(もどき)のyabaiを入れました。タイル型初心者なので、へんな癖をつけないほうがいいかなとおもい、i3-wmのデフォルトキーバインドになるべく近づけるように設定しました。
設定の概要
i3 User’s Guideと、デフォルトconfig(i3/config.keycodes)を参考にし、なるべく近い感じに設定するように意図しました。
i3-wm | yabai | |
---|---|---|
フォーカスの移動 | $mod + jkl; | alt + hjkl |
ウィンドウをワープ | $mod + shift + jkl; | shift + alt + hjkl |
スペースにワープ | $mod + shift + num | shift + alt + 12345 |
スペースにワープ (prev/next) | -- | shift + alt + 9/0 |
スペースに切り替え | $mod + num | |
フルスクリーン (native) | $mod + f | shift + alt + f |
フルスクリーン (zoom) | たぶん存在しない | alt + f |
toggle floting | $mod + shift + space | shift + alt + space |
splith/splitv (toggle) | $mod + e | alt + e |
splith, splitv | $mod + h v | たぶん存在しない |
rotate 90 | -- | alt + r |
mirror x or y | -- | alt + x y |
スペースに切り替える機能は、SIPをdisableしないといけないようなので、ここではやめておきました。まあ、三本指スワイプで事足りるかなと。
フルスクリーンには、画面いっぱいにする(macOSだとタイトルバーダブルクリック)と、フルスクリーンにする(macOSだと緑のボタンを押す)があります。通常使いたいのは画面いっぱいのほうなので、そちらをalt + f
に割り当てました。
詳細
設定ファイルは下記のとおりです。
#!/usr/bin/env sh
# global settings
yabai -m config mouse_follows_focus on
yabai -m config focus_follows_mouse autoraise
yabai -m config focus_follows_mouse on
yabai -m config window_placement second_child
yabai -m config window_topmost on
yabai -m config window_shadow on
yabai -m config window_opacity on
yabai -m config window_opacity_duration 0.0
yabai -m config active_window_opacity 1.0
yabai -m config normal_window_opacity 0.95
yabai -m config window_border on
yabai -m config window_border_width 4
yabai -m config window_border_radius 12
yabai -m config window_border_blur off
yabai -m config window_border_hidipi on
yabai -m config active_window_border_color 0xff775759
yabai -m config normal_window_border_color 0xff555555
yabai -m config insert_feedback_color 0xaad75f5f
yabai -m config split_ratio 0.50
yabai -m config auto_balance on
yabai -m config mouse_modifier fn
yabai -m config mouse_action1 move
yabai -m config mouse_action2 resize
# general space settings
yabai -m config layout bsp
yabai -m config top_padding 6
yabai -m config bottom_padding 6
yabai -m config left_padding 6
yabai -m config right_padding 6
yabai -m config window_gap 2
# yabai -m config top_padding 12
# yabai -m config bottom_padding 12
# yabai -m config left_padding 12
# yabai -m config right_padding 12
# yabai -m config window_gap 06
# rules
# from https://github.com/JunichiSugiura/dotfiles/blob/main/packages/wm/.config/yabai/yabairc
yabai -m rule --add app="^Spark$" manage=off
yabai -m rule --add app="^Windows 11$" manage=off
yabai -m rule --add app="^System Preferences$" manage=off
yabai -m rule --add app="^Karabiner-Elements$" manage=off
yabai -m rule --add app="^Karabiner-MultitouchExtension$" manage=off
# focus window
# | | i3-wm | yabai |
# | ---------------- | ----------- | ---------- |
# | フォーカスの移動 | $mod + jkl; | alt + hjkl |
alt - h : yabai -m window --focus west
alt - j : yabai -m window --focus south
alt - k : yabai -m window --focus north
alt - l : yabai -m window --focus east
# move window
# | | i3-wm | yabai |
# | -------------------| -------------------- | ------------------- |
# | ウィンドウをワープ | $mod + shift + jkl; | shift + alt + hjkl |
# | スペースにワープ | $mod + shift + num | shift + alt + 12345 |
# | ↑(prev/next) | -- | shift + alt + 9/0 |
shift + alt - h : yabai -m window --warp west
shift + alt - j : yabai -m window --warp south
shift + alt - k : yabai -m window --warp north
shift + alt - l : yabai -m window --warp east
shift + alt - 1 : yabai -m window --space 1
shift + alt - 2 : yabai -m window --space 2
shift + alt - 3 : yabai -m window --space 3
shift + alt - 4 : yabai -m window --space 4
shift + alt - 5 : yabai -m window --space 5
shift + alt - 9 : yabai -m window --space prev
shift + alt - 0 : yabai -m window --space next
# fullscreen / floating
# | | i3-wm | yabai |
# | ----------------------- | -------------------- | ------------------- |
# | フルスクリーン (native) | $mod + f | shift + alt + f |
# | フルスクリーン (zoom) | たぶん存在しない | alt + f |
# | toggle floting | $mod + shift + space | shift + alt + space |
# toggle window native fullscreen
shift + alt - f : yabai -m window --toggle native-fullscreen
# toggle window fullscreen zoom
alt - f : yabai -m window --toggle zoom-fullscreen
# float / unfloat window and restore position
shift + alt - space : yabai -m window --toggle float && yabai -m window --grid 4:4:1:1:2:2
# toggle window split type
# | | i3-wm | yabai |
# | ---------------------- | --------- | -------- |
# | splith/splitv (toggle) | $mod + e | alt + e |
alt - e : yabai -m window --toggle split
# rotate window
# | | i3-wm | yabai |
# | -------------- | ----- | ---------- |
# | rotate 90 | | alt + r |
# | mirror x or y | | alt + x y |
# rotate tree
alt - r : yabai -m space --rotate 90
# mirror tree y-axis
alt - y : yabai -m space --mirror y-axis
# mirror tree x-axis
alt - x : yabai -m space --mirror x-axis
# restart yabai
# from https://github.com/koekeishiya/yabai/wiki/Tips-and-tricks
# (2022-10-11 21:24)
ctrl + alt + cmd - r : launchctl kickstart -k "gui/${UID}/homebrew.mxcl.yabai"
便利コマンド
skhdのconfigを変更したのちに、反映させるのは……
$ skhd -r
skhdのconfigが怪しいときに、チェックするには……
$ brew services stop skhd
$ skhd -V
yabaiのconfigを書き換えたとき、反映させるのは……
$ brew services restart yabai
または、上記skhdrc
にあるように記述しておいて、ctrl + option + command + r
。
おわりに
yabai + skhd、すごくいいです。なにより、「ウィンドウのレイアウトを操作する」という、ムダな手数が激減しました。macOS自体や各種アプリが、タイル型ウィンドウマネジャー用につくられているわけではないので、自然に使えるようになるには、もう少しコツを発見する必要がありそうですが、そのことを差し引いても、とてもいいです。
参考リンク
-
skhd
-
yabai
-
解説記事
環境
ここで書いていることは、下記のバージョンで実施しました。
- skhd version 0.3.5
- yabai-v5.0.1
- macOS Monterey 12.5.1
- MacBook Pro (14-inch, 2021)