思わず試したくなるカスタマイズ性の高いウィンドウ操作「Yabai + skhd」実装ガイド
NISLab小板研所属 M1の片岡です。
NISLab Advent Calendarの13日目の記事になります。
私たちの研究室
アドベントカレンダー 13日目~
Yabai + skhd の解説
Yabai
と skhd
は、macOS でのウィンドウ操作を向上させるための強力なツールです。特にキーボード主体のワークフローを好む人にピッタリです。本投稿では、これらのツールの概要、有用性、実装方法について解説します。
Yabai とは
Yabai
は macOS 用のウィンドウマネジメントツールで、コマンドを使用して窓の位置、サイズ、レイアウトを制御できます。このツールはタイリングウィンドウマネージャーを実装し、高用率でカスタマイズ可能なデスクトップ環境を提供します。
Yabai の特徴
- タイリング、スタッキング、フロートウィンドウレイアウト
- ウィンドウサイズや位置の精微な制御
- アプリの動作に関する設定規則
- スペースやディスプレイの簡単な操作
skhd とは
skhd
は、macOS 用のhotkey daemonです。これにより、キーコンビネーションの設定をコマンドやスクリプトに結びつけることが可能になります。Yabai
と組み合わせると、キーボード操作でのスムーズなウィンドウマネジメントが実現できます。
skhd の特徴
- シンプルなhotkey config syntax
- Yabai などの他のツールとの簡単な組み合わせ
実装ステップ
1. Yabai のインストール
Homebrew を使用して Yabai をインストール:
brew install koekeishiya/formulae/yabai
Yabai に必要な権限を付与:
echo "$(whoami) ALL=(root) NOPASSWD: sha256:$(shasum -a 256 $(which yabai) | cut -d \" \" -f 1) $(which yabai) --load-sa" | sudo tee -a /etc/sudoers
Yabai を起動:
yabai --start-service
2. skhd のインストール
Homebrew を使用して skhd をインストール:
brew install koekeishiya/formulae/skhd
skhd を起動:
skhd --start-service
3. Yabai と skhd の設定
設定ディレクトリの作成
設定ディレクトリへ移動し、Yabai と skhd 用のフォルダを作成:
cd ~/.config
mkdir yabai skhd
設定ファイルの作成
- Yabai 用:
touch ~/.config/yabai/yabairc
- skhd 用:
touch ~/.config/skhd/skhdrc
設定ファイルを実行可能にする
chmod +x ~/.config/yabai/yabairc
chmod +x ~/.config/skhd/skhdrc
4. サービスの再起動
設定を適用するため、両サービスを再起動:
yabai --restart-service
skhd --restart-service
5. skhd のホットキー設定
~/.config/skhd/skhdrc
を編集し、Yabai 用のホットキーバインドを追加する。
下記はサンプル設定例です:
# focus window
alt - x : yabai -m window --focus recent
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
# swap window
shift + alt - x : yabai -m window --swap recent
shift + alt - h : yabai -m window --swap west
shift + alt - j : yabai -m window --swap south
shift + alt - k : yabai -m window --swap north
shift + alt - l : yabai -m window --swap east
# move window
shift + cmd - h : yabai -m window --warp west
shift + cmd - j : yabai -m window --warp south
shift + cmd - k : yabai -m window --warp north
shift + cmd - l : yabai -m window --warp east
# move window
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
# increase window size
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
# decrease window size
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
# 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
# toggle desktop offset
alt - a : yabai -m space --toggle padding && yabai -m space --toggle gap
# toggle window fullscreen zoom
alt - f : yabai -m window --toggle zoom-fullscreen
# toggle window native fullscreen
shift + alt - f : yabai -m window --toggle native-fullscreen
# toggle window split type
alt - e : yabai -m window --toggle split
# float / unfloat window and restore position
# alt - t : yabai -m window --toggle float && /tmp/yabai-restore/$(yabai -m query --windows --window | jq -re '.id').restore 2>/dev/null || true
alt - t : yabai -m window --toggle float && yabai -m window --grid 4:4:1:1:2:2
6. Yabai の設定
~/.config/yabai/yabairc
を編集し、Yabai の動作をカスタマイズする。
下記はサンプル設定例:
# global settings
yabai -m config mouse_follows_focus off
# yabai -m config focus_follows_mouse autoraise
yabai -m config focus_follows_mouse off
yabai -m config window_placement second_child
yabai -m config window_topmost on
yabai -m config window_shadow off
yabai -m config window_opacity off
yabai -m config window_opacity_duration 0.0
yabai -m config active_window_opacity 0.0
yabai -m config normal_window_opacity 0.0
yabai -m config window_border off
yabai -m config window_border_width 3
yabai -m config active_window_border_color 0xFF88C0D0
yabai -m config normal_window_border_color off
yabai -m config insert_feedback_color
yabai -m config split_ratio 0.50
yabai -m config auto_balance off
yabai -m config mouse_modifier ctrl
yabai -m config mouse_action1 move
yabai -m config mouse_action2 resize
yabai -m config window_border_blur off
# general space settings
yabai -m config layout bsp
yabai -m config top_padding 01
yabai -m config bottom_padding 01
yabai -m config left_padding 01
yabai -m config right_padding 01
yabai -m config window_gap 0.5
# Rules
yabai -m rule --add app="^System Settings$" manage=off
yabai -m rule --add app="^Music$" manage=off
yabai -m rule --add app="^Docker$" manage=off
yabai -m rule --add app="^iTerm2$" manage=off
7. 動作の確認
skhdrc
に設定したホットキーを試し、Yabai
が正常に反応するか確認する。
最後に
上記のステップに従うことで、macOS で Yabai
と skhd
を実装し、キーボード操作ベースのウィンドウマネジメント体験を実現できます。
ぜひ試してみてください!
Discussion