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

タイル型ウィンドウマネージャは、ウィンドウマネージャの一種で、画面を互いにオーバーラップしない領域に分割してウィンドウを表示する。ウィンドウなどのオブジェクトのオーバーラップを許す座標ベースの技法とは正反対である。

1. 歴史
-----

1.1. ゼロックス パロアルト研究所
-------------------

最初のビットマップディスプレイを使ったグラフィカルユーザインタフェースはタイル型ではなかったが、その直後にタイル型ウィンドウマネージャが登場した。最初の Xerox Star システムでは、アプリケーションのウィンドウはタイル型だが、ダイアログボックスやプロパティウィンドウだけオーバーラップを許していた。その後ゼロックスのパロアルト研究所が開発した CEDARが、初めて完全なタイル型ウィンドウマネージャをウィンドウシステムに採用している。

1.2. 様々なベンダー
------------

1983年に登場した Andrew Project のウィンドウマネージャは完全なタイル型ウィンドウマネージャを採用している。

マイクロソフトの Windows 1.0もタイル型だった。

1986年には、デジタルリサーチの GEM 2.0 が登場。CP/M上のウィンドウシステムであり、デフォルトではタイル型だった。

初期のタイル型ウィンドウマネージャの1つであるシーメンスの RTLはタイル型ウィンドウマネージャの教科書的な例であり、ウィンドウのサイズ変更・配置・並び順・アイコン化などを自動化するアルゴリズムを搭載していた。RTLは X11R2 および R3 で動作し、主にシーメンスのシステムで使われた。その機能を紹介した宣伝用ビデオがある。

2. 主なタイル型ウィンドウマネージャ
-------------------

2.1. X Window System
--------------------

X Window System では、ウィンドウマネージャはウィンドウシステム本体とは別のプログラムである。X自身はウィンドウ管理手法を定めておらず、現在の X11 は明示的にタイル型ウィンドウマネージャも選択肢として言及している。初めて自動配置/サイズ変更を採用したタイル型ウィンドウマネージャは、シーメンスのRTLだった。ほぼ同時期のタイル型ウィンドウマネージャとして、IBMの学術情報システム部門が開発した Cambridge Window Manager がある。

2000年には、larswmとIonの最初のバージョンがリリースされた。

2.1.1. X上のタイル型ウィンドウマネージャ一覧
--------------------------

awesome - dwm から派生したもので、Cで書かれLuaで構成・拡張可能である。XlibからXCBに移植された最初のウィンドウマネージャで、D-Bus、pango、XRandR、Xinerama をサポートしている。
[1] - xmonadベース。
dwm - ステータスバーのアスキーアートが表示されたアイコンをクリックすることでタイル型のレイアウトを変更可能。[]= という表示のアイコンがデフォルトで、左にメインエリア、右に上下にウィンドウを並べる形式となる。><> という表示のアイコンでは敷き詰める形でないフロート型の表示が可能で、個々のウィンドウの移動やサイズ変更が可能。サードパーティ製のパッチをあてることで、黄金比のフィボナッチ配置、グリッド配置、隙間のないグリッド配置、上にメインエリアで下にウィンドウを並べる配置なども可能。キーボードで操作するメニューユーティリティ dmenu も dwm 向けに開発されており、xmonadなど他のタイル型ウィンドウマネージャでも利用できるし、Openboxやuzblなどの軽量ソフトウェアでも利用することがある。
i3 - wmiiから派生したウィンドウマネージャで，2017年現在も活発に開発が行なわれている。dwmやawesomeといった他の主要なウィンドウマネージャと同様に，敷き詰める形でないフロート型のウィンドウ管理もサポートしている。Modキー}}と呼ばれるキーを基準に各々のウィンドウを操作する。例えばWinという操作は標準では“下方向のウィンドウに操作の焦点を合わせる”という動作に割り当てられている。これらの動作はホームディレクトリ下にあるテキストファイルを編集することで変更出来，その変更を即座に反映させることが可能である。viやemacsの持つ“モード”に似た機能を持ち，ウィンドウの大きさ・X/計算機の終了等の実行にモードとして移行することが出来る。開発言語はC言語。
Ion - タイル型にタブ型インタフェースを組合わせたもの。画面は人手でオーバーラップしない領域に分割される。各フレームには1つ以上のウィンドウを含めることができ、そのうちの1つのウィンドウだけがフレーム全体に表示される。
KWin - KDEのウィンドウマネージャで、KDE SC 4.4 から初歩的なタイル型機能をサポートし、KDE SC 4.5 から完全なタイル型機能をサポートしている。ただし、実装はコンポジット型である。
Larswm - 動的タイル型の一種。画面を左右2つのトラックと呼ばれる領域に分割する。左のトラックは1つのウィンドウで占められ、右のトラックは他のウィンドウを上下に並べて配置する。
Matchbox - システムトレイと1つのウィンドウをタイル型表示するもので、組み込みシステムや携帯機器向けである。基本的に表示されるウィンドウは1つである。
Ratpoison - キーボード駆動式の GNU Screen を発展させたもの。
[2] - 最小限の機能をサポートしたタイル型ウィンドウマネージャで、XRandRとXineramaをサポートしている。
[3]
wmii - dwm の作者が並行して開発したもの。
xmonad - Haskellで書かれた拡張可能なウィンドウマネージャ。

2.2. Microsoft Windows
----------------------

Microsoft Windows は、そもそも、前述の X Window System のようにウィンドウマネージャが独立したウィンドウシステムを採用しておらず、ユーザ自身が自由にウィンドウマネージャを選択して用いる文化が乏しい。ベンダー提供としては、Windows 95 からウィンドウマネージャを含んでおり、デフォルトではスタック型ウィンドウマネージャでありながら、オプションで簡単なタイル型ウィンドウマネージャのように動作させることもできる。なお Windows 8 では Metro UI にタイル型のインターフェイスが採用されており、基本的なタイル型ウィンドウマネージャが搭載されている。 最初のバージョン  はタイル型ウィンドウマネージャを採用していた。これはAppleがXEROX PARCで見た暫定ダイナブック環境を模して作ったオーバーラップ式のデスクトップメタファーをあえて避けたとする説もあるが、それよりは同じくXEROX PARCで開発された前述のとおり初めて完全なタイル型ウインドウを採用したCEDARをデザイン上の参考にした結果と考える方が自然である。しかし次のバージョン  以降はデフォルトがスタック型となっている。

2.2.1. サードパーティーによるアドオン
----------------------

Windowsにより洗練されたタイル型機能を追加するサードパーティー製プログラムがあり、他のOS上のタイル型ウィンドウマネージャとほぼ同等の機能を提供しているが、厳密にはウィンドウマネージャそのものでなく、WindowsのOS 的な制約に対する拡張がほとんどである。

[4] - ウィンドウをタイル型表示する
[5] - キーボード・ショートカットによるタイル型表示
[6] - 自動タイル型表示のタイル型ウィンドウマネージャ
[7] - ホットキーによる洗練されたタイル型配置とマルチモニターのサポート
[8] - dwm の機能を再現したもの 
[9] - C# で書かれた高度なカスタマイズが可能なウィンドウマネージャ 
[10] - ユーザーが定義した格子に沿ってウィンドウを並べる。マルチモニターもサポート
[11] - キーボード・ショートカットによるタイル型表示
[12] - ユーザーの作業に従って自動的にウィンドウを並べ替える
[13] - 商用
[14] - 非常に基本的なタイル型 

2.3. その他
--------

Oberon - チューリッヒ工科大学で開発されたOSおよび言語処理系で、タイル型ウィンドウマネージャを含んでいる。
Acme - Plan 9におけるエディタ/ウィンドウシステム/シェルであり、タイル型ウィンドウマネージャだった。

3. タイル型アプリケーション
---------------

ウィンドウマネージャがタイル型でなくても、アプリケーションがタイル型のような表示をすることはよくある。たとえば、電子メールクライアント、統合開発環境 、ウェブブラウザの「サイドバー」、Microsoft Office のコンテキストヘルプなどである。さらにHTMLのフレームは、マークアップ言語によるタイル型表示の実装と見ることもできる。タイル型ウィンドウマネージャは、そういった有用性をデスクトップ上の複数のアプリケーションにまで拡張したものという見方もできる。タブを使ったインタフェースはタイル型表示との相性がよく、同じ機能のウィンドウを画面上に複数同時に表示するのを防ぐことができる。

4. 脚注・出典
--------

5. 外部リンク
--------

[15] - Arch Linux Wiki