Yabai環境設定

はじめに

最近、LGの31インチモニタ*1を購入し、作業環境が大きく変わりました*2。そしてこれを機に、作業スペースをより効率的に活用する方法を模索し始めました。そこで、タイル型ウィンドウマネージャ「Yabai」を導入することにしました。

なぜタイル型ウィンドウマネージャか?

今までは16インチのMacBookの画面を1つのウィンドウを全画面表示していました。31インチモニタへの移行すると情報が散漫になりがちだったのでスペースの有効活用をしたくなりました。

それに私はマウスよりはキーボード操作を多用するので、ウィンドウを操作するために広い画面をマウスで移動するのにはストレスを感じました。

複数のウィンドウを自動で分割配置し、マウス操作を最小化してキーボード主体で操作できる環境が必要と感じました。

過去にLinuxでxmonaddwmを使用していた経験もあり、Mac環境で同様のツールを探していました。

タイル型ウィンドウマネージャとは?

タイル型ウィンドウマネージャは、デスクトップ環境にあるウィンドウを管理するために常駐起動しておくプログラムです。主な特徴は以下の通りです:

  • 初期状態でウィンドウをグリッド状に自動配置
  • 新規ウィンドウが開くと自動で画面分割
  • キーボードによるウィンドウサイズ・配置方式の変更など

Yabaiの特徴

github.com

Yabaiは、macOS向けのタイル型ウィンドウマネージャです。ノルウェーのkoekeishiyaさんが開発し、詳細な設定ファイルによる制御が可能です。

プラグインシステムもサポートしており、操作感がXmonadに似ているため、私はYabaiを選びました。

skhdについて

github.com

skhdは、Yabaiと組み合わせて使用するグローバルキーボードショートカットツールで、Simple HotKey Daemonの略です。

Yabaiの開発者koekeishiyaさんよって作成されており、組み合わせて使える設計になっています。yabaiに依存しないので、skhd単独でも使用可能です。skhdで任意コマンドを割り当てることが可能です。

インストール方法

Yabaiとskhdのインストールは以下の手順で行います:

Homebrewを使用してインストール

brew install koekeishiya/formulae/yabai
brew install koekeishiya/formulae/skhd

設定ファイルの準備

Yabaiとskhdの設定ファイルは別です。通常以下から読み込まれます

  • Yabai: ~/.yabairc
  • skhd: ~/.skhdrc

インストールディレクトリにテンプレートがあるのでこれをコピーしてきます

cp /opt/homebrew/opt/yabai/share/yabai/examples/yabairc ~/.yabairc
cp /opt/homebrew/opt/yabai/share/yabai/examples/skhdrc ~/.skhdrc

設定のカスタマイズ

私の好みでは基本的にはデフォルト設定を使用し、必要に応じて少しずつカスタマイズを追加します。

.yabaircはシンプルなシェルスクリプトで起動時に実行されます。個別の設定はコマンドラインからも実行できるので、コマンドで試してそれを設定に残しておきます

❯ yabai --help       
Usage: yabai [option]
Options:
    --load-sa              Install and load the scripting-addition.
    --uninstall-sa         Uninstall the scripting-addition.
    --install-service      Write launchd service file to disk.
    --uninstall-service    Remove launchd service file from disk.
    --start-service        Enable, load, and start the launchd service.
    --restart-service      Attempts to restart the service instance.
    --stop-service         Stops a running instance of the service.
    --message, -m <msg>    Send message to a running instance of yabai.
    --config, -c <config>  Use the specified configuration file.
    --verbose, -V          Output debug information to stdout.
    --version, -v          Print version to stdout and exit.
    --help, -h             Print options to stdout and exit.
Type `man yabai` for more information, or visit: https://github.com/koekeishiya/yabai/blob/v7.1.2/doc/yabai.asciidoc
yabai --start-service

を実行するとプロセスが起動します

macOSのlaunchdで自動起動する設定ファイルが以下に配置されます

ls ~/Library/LaunchAgents/com.koekeishiya.*.plist

.skhdrc はショートカットキー:実行するコマンドを列挙して設定するシンプルなファイルです。ここにyabaiコマンドを書いておくことでキーボード操作できるようになります

私の設定は以下のようにしています

# on/off toggle for yabai
cmd + alt - y : yabai --start-service
cmd + alt - d : yabai --stop-service

# focus window
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 managed window
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

# toggle window split type
alt - e : yabai -m window --toggle split

# float / unfloat window and center on screen
alt - t : yabai -m window --toggle float --grid 4:4:1:1:2:2

cmd + alt - yでオフにできるようにしているのは外出先では16インチで作業するからです。この時は全画面勢に戻りたい。

alt - tは再配置対象から除外したいモーダルダイアログなどに適用しています。

特定のウィンドウをタイル内に表示せずにしばらくお休みさせておきたい場合はmacOSのデフォルトウィンドウマネージャの⌘+Hで隠しています

終わりに

Yabaiの導入により、大画面モニタでの作業効率が向上しました。キーボード主体の操作と自動ウィンドウ管理により、ストレスなく複数のアプリケーションを同時に扱えるようになりました。

私の場合は、これをmacOSの仮想デスクトップを組み合わせて利用しています。デスクトップ1「開発ツールのみのタイル群」デスクトップ2「コミュニケーションツールを集めたタイル群」など。

タイル型ウィンドウマネージャに興味があるキーボード派なMacユーザーは、ぜひYabaiを試してみてください。初期設定に少し時間がかかりますが、慣れれば快適に大画面生活が送れます*3