LoginSignup
4
6

More than 1 year has passed since last update.

macOSのタイル型ウィンドウマネジャーyabaiを、なるべくi3-wmに近くなるよう設定

Last updated at Posted at 2022-10-13

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 alt + 12345
フルスクリーン (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に割り当てました。

詳細

設定ファイルは下記のとおりです。

yabairc
#!/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

skhdrc
# 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 version 0.3.5
  • yabai-v5.0.1
  • macOS Monterey 12.5.1
  • MacBook Pro (14-inch, 2021)
4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6