manjaro linux に追加されたタイル型のウィンドウマネージャーのようなタイルモードの使い方について記載します。 気軽にタイル型ウィンドウマネージャーを試す ウィンドウマネージャーといえば i…
mac用のタイル型ウィンドウマネージャーのyabai
yabaiをキーボードショートカットから操作するためのskhd
yabaiにスタック機能を拡張するstackline
この3つを入れて超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をインストールする
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')
コメントを書く