はじめに
最近、LGの31インチモニタ*1を購入し、作業環境が大きく変わりました*2。そしてこれを機に、作業スペースをより効率的に活用する方法を模索し始めました。そこで、タイル型ウィンドウマネージャ「Yabai」を導入することにしました。
なぜタイル型ウィンドウマネージャか?
今までは16インチのMacBookの画面を1つのウィンドウを全画面表示していました。31インチモニタへの移行すると情報が散漫になりがちだったのでスペースの有効活用をしたくなりました。
それに私はマウスよりはキーボード操作を多用するので、ウィンドウを操作するために広い画面をマウスで移動するのにはストレスを感じました。
複数のウィンドウを自動で分割配置し、マウス操作を最小化してキーボード主体で操作できる環境が必要と感じました。
過去にLinuxでxmonadやdwmを使用していた経験もあり、Mac環境で同様のツールを探していました。
タイル型ウィンドウマネージャとは?
タイル型ウィンドウマネージャは、デスクトップ環境にあるウィンドウを管理するために常駐起動しておくプログラムです。主な特徴は以下の通りです:
- 初期状態でウィンドウをグリッド状に自動配置
- 新規ウィンドウが開くと自動で画面分割
- キーボードによるウィンドウサイズ・配置方式の変更など
Yabaiの特徴
Yabaiは、macOS向けのタイル型ウィンドウマネージャです。ノルウェーのkoekeishiyaさんが開発し、詳細な設定ファイルによる制御が可能です。
プラグインシステムもサポートしており、操作感がXmonadに似ているため、私はYabaiを選びました。
skhdについて
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。
*1:
*2:ギリギリ感に定評のあるうちのデスクトップ: https://x.com/laiso/status/1820468805732282581
*3:タイル型ウィンドウマネージャとしてはhttps://github.com/ianyh/Amethyst もあります