yabaiとskhdとstacklineを入れて超yabaiにする

yabaiとskhdとstacklineを入れて超yabaiにする

mac用のタイル型ウィンドウマネージャーのyabai

yabaiをキーボードショートカットから操作するためのskhd

yabaiにスタック機能を拡張するstackline

この3つを入れて超yabaiにする方法です。

yabaiをインストールする

yabai

Repository: koekeishiya/yabai

Homebrewからインストールします。

brew install koekeishiya/formulae/yabai

設定ファイルを作成する

~/.config/yabai/yabaircに作成した設定ファイルが読み込まれます。

公式にexampleが公開されています。

テクニック

yabaiのコマンドは種類が多く、フォーカスを移動するコマンドと別ディスプレイに移動するコマンドなど、それぞれ分かれています。
yabaiのコマンドはbashで実行されているだけなので1つ目のコマンドが失敗したら2つ目のコマンドを実行する||が有効です。
これを以下のように組み合わせることで、画面の端のウィンドウにフォーカスしている状態で外部ディスプレイ先へフォーカスするとエラーとなり、次のディスプレイフォーカスするコマンドを1ショートカットで実行できます。

yabai -m window –focus west || yabai -m display –focus west

# focus window
# 外部ディスプレイ間をフォーカス
alt - h : yabai -m window --focus west || yabai -m display --focus west
alt - j : yabai -m window --focus south || yabai -m display --focus south
alt - k : yabai -m window --focus north || yabai -m display --focus north
alt - l : yabai -m window --focus east || yabai -m display --focus east

# move window
# 外部ディスプレイ間を移動
alt + ctrl - h : yabai -m window --warp west || 
alt + ctrl - j : yabai -m window --warp south || (yabai -m window --display south && yabai -m display --focus south)
alt + ctrl - k : yabai -m window --warp north || (yabai -m window --display north && yabai -m display --focus north)
alt + ctrl - l : yabai -m window --warp east || (yabai -m window --display east && yabai -m display --focus east)

# window size
# ウィンドウサイズの拡大・縮小
shift + alt - a : yabai -m window --resize left:-20:0 || yabai -m window --resize right:-20:0
shift + alt - s : yabai -m window --resize bottom:0:20 || yabai -m window --resize top:0:20
shift + alt - w : yabai -m window --resize top:0:-20 || yabai -m window --resize bottom:0:-20
shift + alt - d : yabai -m window --resize right:20:0 || yabai -m window --resize left:20:0

iTerm2がyabaiのウィンドウ管理対象にならない場合

iTerm2は標準でsticky状態になっているらしく、以下の設定をAll Spaces以外に変更してiTerm2を再起動すればOKです。

(画像)

参考:iTerm2 won’t stop being ignored by Yabai #1005

実行する

brew services start yabai

skhdをインストールする

Repository: koekeishiya/skhd

Homebrewからインストールします。

brew install koekeishiya/formulae/skhd

設定ファイルを作成する

~/.config/skhd/skhdrcに作成した設定ファイルが読み込まれます。

公式のexampleが公開されています。

実行する

brew services start skhd

stacklineをインストールする

stackline

Repository: AdamWagner/stackline
Repository: Hammerspoon/hammerspoon

stacklineはHammerspoonに依存しているため、先にHammerspoonをインストールします。

brew install hammerspoon --cask

stackiineインストール・設定します。

# Get the repo
git clone https://github.com/AdamWagner/stackline.git ~/.hammerspoon/stackline

# Make stackline run when hammerspoon launches
cd ~/.hammerspoon
echo 'stackline = require "stackline"' >> init.lua
echo 'stackline:init()' >> init.lua

Hammerspoonkを起動してConsoleを開きます。
CLIをインストールします。

hs.ipc.cliInstall()

M1チップのMacの場合

M1チップからHomebrewのインストール先が変更になった事が原因でエラーになるため、対応が必要です。

hsコマンドのパスが通っていない

~/.zprofileに以下を追加してパスを通します。

eval $(/opt/homebrew/bin/brew shellenv)

hs.ipc.cliInstall()が失敗する

Homebrewのインストールパスが変わっている事が原因で失敗するため、M1チップの場合のHomebrewのディレクトリを以下のように指定します。

hs.ipc.cliInstall("/opt/homebrew")

参考: Cannot get hs.ipc.cli #2930

stacklineの初期化に失敗する

conf.luaに記載されているyabaiがインストールされているパスがIntel MacのHomebrewのインストール先(/usr/local/bin)になっています。
~/.hammerspoon/stackline/conf.lua変更対象の行を直接書き換えて変更します。

c.paths.yabai                         = '/opt/homebrew/bin/yabai'

参考:I can’t initialize stackline. #82

skhdrcにstacklineのコマンドを追加する

stack nextを実行するとアクティブウィンドウがstackに追加されます。
stackを解除する場合はyabai -m window --warp [west|south|north|east]のmove windowコマンドで移動すれば外れます。

# stackline
# Stack window
alt + ctrl - s : yabai -m window --stack next
# Focus window up/down in stack
alt + ctrl - n : yabai -m window --focus stack.next
alt + ctrl - p : yabai -m window --focus stack.prev

# Add the active window  to the window or stack to the {direction}
# Note that this only works when the active window does *not* already belong to a stack
alt + ctrl - left  : yabai -m window west --stack $(yabai -m query --windows --window | jq -r '.id')
alt + ctrl - down  : yabai -m window south --stack $(yabai -m query --windows --window | jq -r '.id')
alt + ctrl - up    : yabai -m window north --stack $(yabai -m query --windows --window | jq -r '.id')
alt + ctrl - right : yabai -m window east --stack $(yabai -m query --windows --window | jq -r '.id')

プログラミングカテゴリの最新記事