xmonad
xmonad は X Window System 上で動く タイル型ウィンドウマネージャ である。このウィンドウマネージャは、関数型プログラミング言語Haskellで書かれている。
2007年3月に開発が始まったxmonadは、dwm、larswm、StumpWM等、他のタイル型ウィンドウマネージャと同様に、マウスを使わずに生産的にウィンドウを制御することを可能にすることを目指している。 xmonad は、Arch Linux、Debian、Ubuntu、Gentoo、FreeBSD、NetBSD、OpenBSD等、多くのUnix系OSで利用可能である。
xmonadは、元々dwmのクローンであったが、今では、ワークスペース毎のレイアウト、タイリングリフレクション、状態の保存、レイアウトのミラーリング、GNOME上でのサポート、ステータスバー等、dwmでは利用できない機能をサポートしている。
実行中に、設定ファイルを変更しリロードすることで、カスタマイズ可能である。
xmonadの特徴は、他のタイル型ウィンドウマネージャへ影響を与えている。例えば、dwm は urgency hooks という機能を xmonad から取り入れたり、バージョン4.8 で Xinerama をサポートし、 xmonadの機能である Fibonacci レイアウトを可能している。
他のウィンドウマネージャのエミュレーションやFibonacci レイアウトのような普通ではないレイアウトアルゴリズム等、xmonadのコアシステムの拡張は活発なコミュニティで実装されており、ライブラリとして利用可能である。
マウスを使う必要をなくすことに加えて、xmonadのバージョン0.7では、開発においてsemi-formal methodとプログラム導出を多く使うことで、信頼性の向上と、コード量を1200行以下にすることを可能にした。例えば、ウィンドウマネージャの特性(ウィンドウフォーカスの振舞いなど)はQuickCheckを用いて検査される。
xmonadは、Haskellで書かれた初めてのウィンドウマネージャであることに加えて、 次の点においても、一般的ではない。 それは、zipper データ構造を、フォーカスを自動で扱うのに使ったことである。 これは、パターンマッチを用いていることを考慮すると安全であることが証明されており、さらなる信頼性の向上に寄与している。
開発者は次のように述べている。
"xmonad は X Window System 用のタイル型ウィンドウマネージャであり、Haskellによって実装し、設定を行い、動的に拡張可能である。xmonadの実装は、副作用に支配されるソフトウェアを、純粋関数型データ構造や、表現力の高い型システム、高度な静的検査、特性に基いたテストを利用した Haskell から予想されるように、正確で効率的に開発可能であることを示している。加えて、我々はHaskellをアプリケーションの設定や拡張を行う言語でもあると考える。"
xmonadの実装は、Haskell の特徴や、Xlib や xft の Haskell バインディング に加えて、QuickCheck、パターンガードのようなGHC拡張、モナド、モナド変換、zipper、Cabalライブラリ、等のさまざまなツールを利用している。