xmonadは、
X Window System上で動作するタイル型ウィンドウマネージャであり、関数型プログラミング言語である
Haskellで記述されています。2007年3月に開発が開始され、dwm、larswm、
StumpWMなどの他のタイル型ウィンドウマネージャと同様に、マウスを使用せずに効率的にウィンドウを制御することを目指しています。
多くの
Unix系OSで利用可能であり、
Arch [[Linux]]、Debian、
Ubuntu、Gentoo、FreeBSD、
NetBSD、
OpenBSDなどが含まれます。xmonadは、当初dwmの
クローンとして開発されましたが、現在ではワークスペースごとのレイアウト、タイリングのリフレクション、状態の保存、レイアウトのミラーリング、GNOME上でのサポート、
ステータスバーなど、dwmにはない多くの機能が実装されています。
設定ファイルの変更とリロードにより、実行中でもカスタマイズが可能です。xmonadの特徴は、他のタイル型ウィンドウマネージャに影響を与えており、例えばdwmはurgency hooksという機能をxmonadから取り入れ、バージョン4.8ではxmonadの機能であるFibonacciレイアウトを実装するためにXineramaのサポートを導入しました。
xmonadのコアシステムの拡張は、活発なコミュニティによって行われており、他のウィンドウマネージャのエミュレーションや、Fibonacciレイアウトのような特殊なレイアウトアルゴリズムなどがライブラリとして利用できます。マウス操作を不要にするだけでなく、xmonadバージョン0.7では、開発にsemi-formal methodとプログラム導出を多く利用することで、信頼性の向上とコード量の削減(1200行以下)を実現しました。例えば、ウィンドウマネージャの特性(ウィンドウフォーカスの挙動など)は、QuickCheckを用いて検査されています。
xmonadは
Haskellで書かれた最初のウィンドウマネージャであるだけでなく、フォーカス処理にzipperデータ構造を採用している点も特徴的です。
パターンマッチングを用いることでこの構造の安全性が証明され、信頼性の向上に貢献しています。
開発者は、「xmonadは
Haskellで実装、設定、動的拡張が可能な
X Window System用のタイル型ウィンドウマネージャです。xmonadの実装は、
副作用に支配されたソフトウェアを、純粋関数型データ構造、表現力の高い
型システム、高度な静的検査、特性ベーステストを活用した
Haskellを用いて、正確かつ効率的に開発できることを示しています。さらに、
Haskellはアプリケーションの設定と拡張のための言語でもあると考えています」と述べています。
xmonadの実装には、
Haskellの特性に加え、
Xlibやxftの
Haskellバインディング、QuickCheck、パターンガードのようなGHC拡張、モナド、モナド変換、zipper、Cabalライブラリなど、様々なツールが利用されています。
これらの要素が組み合わさり、xmonadは機能性と信頼性を兼ね備えた、独特のウィンドウマネージャとして存在しています。