i3(i3 Window Manager)は、
X Window System上で動作する動的タイル型ウィンドウマネージャです。他のi3という名称と区別するために「i3-wm」と表記されることもあります。wmiiの改善と後継を意図して開発され、「直感的な操作、優れたドキュメント、簡潔なコード」という理念を掲げています。
概要
i3-wmは、現在も活発に開発が続けられているタイル型ウィンドウマネージャの一つです。開発は
GitHubの
リポジトリで行われています。ウィンドウの操作は、Modキー(通常はWinキーまたはAltキー)と他のキーの組み合わせで行い、ウィンドウの配置、生成、削除などを制御します。
設定は、ホームディレクトリにある
テキストファイル(通常~/.i3/configや~/.config/i3/configなど)を編集することで変更できます。設定を適用するためにOSやXの再起動は不要です。Vimのような「モード」の概念を持ち、設定ファイルを適切に変更することで、プログラムごとにウィンドウの挙動をカスタマイズすることも可能です。木構造のデータ構造とXCBを採用し、
9Pプロトコルを使用しないことで、高速なウィンドウ配置とプログラムとの連携を実現しています。また、
UTF-8に完全対応しています。
開発言語
i3-wmは、ほとんどが
C言語で記述されています。ソースコードのサイズは約900 KiBと軽量です。
特徴
i3-wmには以下のような特徴があります。
読みやすく文書化されたソースコード
i3-wmのソースコードは読みやすく、詳細なドキュメントが提供されています。X11の知識が浅い開発者でも、i3-wm内部の動作を理解しやすいように、わかりやすい解説も用意されています。初回起動時には、設定ファイルを作成するかどうかを尋ねられ、作成を選択すると、詳細な解説付きの設定ファイルが生成されます。これにより、Webサイトや
ブログで設定情報を探すよりも効率的に設定が行えます。
XCBの使用
Xlibの代わりに、より新しいXプロトコル抽象化であるXCBを使用しています。XCBはXlibに比べて高速な動作が期待できます。これはdwmからの影響ですが、i3の公式サイトでも特徴として紹介されています。
現代的な使用例への対応
マルチモニターやプロジェクターへの投影など、画面構成を迅速に変更する必要がある状況にも対応しています。
木構造の採用
ウィンドウの管理に木構造を採用しており、他の列指向のウィンドウマネージャよりも柔軟な配置が可能です。「stacking」という配置規則では、ウィンドウの
タイトルバーを画面上部に集約し、スタック型ウィンドウマネージャのようにウィンドウを重ねて表示します。
タイトルバーは元の配置を忠実に再現し、複数行にわたることもあります。また、「tabbing」という配置規則では、
タイトルバーがタブ形式で表示され、一行に収まります。これにより、複数のウィンドウを効率的に切り替えることができます。
「モード」という概念
Vimと同様の「モード」を持ち、特定のキー操作で異なるモードに移行できます。例えば、Modキー+rで「サイズ変更モード」に入ることができます。
9Pプロトコルを使用しないことで、より柔軟な
プロセス間通信が可能になり、i3の起動中でもコマンドの実行や予約を容易に行えます。
UTF-8に完全対応しており、
Pangoも採用しているため、日本語のような複雑な文字も問題なく表示できます。
軽量で高速
コンポジット型ウィンドウマネージャに比べて、高速な動作が期待できます。
参考
外部リンク