ウィンドウマネージャ
ウィンドウマネージャ (WM) はグラフィカルユーザーインターフェース (GUI) のコンポーネントのひとつです。ユーザーによっては完全にユーザーインターフェースの揃ったデスクトップ環境(アイコン、ウィンドウ、壁紙、デスクトップウィジェットを含む)をインストールする方を好むかもしれません。
目次
X Window System
X Window System はグラフィカルユーザーインターフェースの基礎を提供します。デスクトップ環境をインストールする前に、X サーバーをインストールする必要があります。詳しい情報は Xorg を見て下さい。
- X は、GUI環境構築のための基本フレームワークやプリミティブを提供する。ウィンドウを画面上に描画したり、移動させたり、マウスやキーボードを使ってやり取りするといったことである。X はユーザインタフェースを規定しない。それは、個々のクライアントプログラムの管理下にある。そのため、X に基づいた環境の見た目は様々であり、プログラムごとにインタフェースが異なる。X は OS の中核部分には含まれず、アプリケーション層構築の基盤となっている。
ユーザーは様々な方法によって自由に GUI 環境を設定することができます。
ウィンドウマネージャ
ウィンドウマネージャはウィンドウ周りの機能を提供する X クライアントです。ウィンドウマネージャはアプリケーションの外観を操作します: ボーダー、タイトルバー、サイズ、ウィンドウのリサイズ機能などはウィンドウマネージャによって管理されます。多くのウィンドウマネージャには Window Maker のような dockapps を置くための場所、プログラムを起動するためや WM の設定などを行うためのメニューなどの機能も備わっています。例えば、Fluxbox はウィンドウをタブ化することができます。
一般的にウィンドウマネージャはデスクトップアイコンなどの、デスクトップ環境にあるようなエクストラを提供しません (ただし WM に他のプログラムを組み合わせることでアイコンなどを追加することはできます)。
エクストラがないために、ウィンドウマネージャはシステムリソースの消費がかなり軽くなっています。
種類
- スタック型 (もしくはフロート型) ウィンドウマネージャは Windows や OS X などの商用 OS で使われる伝統的なデスクトップメタファーを提供します。ウィンドウはデスクの上の紙のように動き、それぞれを重ねることができます。カテゴリ:スタック型ウィンドウマネージャ。
- タイル型ウィンドウマネージャは、ウィンドウがオーバーラップしないようウィンドウを"タイル状に"敷き詰めます。基本的にキーボードで操作し、マウスを使うことはあまり(もしくは全く)ありません。タイル型ウィンドウマネージャのレイアウトは手動で設定することも、定義済みのレイアウトを使うこともできます。カテゴリ:タイル型ウィンドウマネージャ。
- 動的ウィンドウマネージャはタイル型とフロート型のウィンドウレイアウトを動的に切り替えることができます。カテゴリ:動的ウィンドウマネージャ。
ウィンドウマネージャの比較はタイル型ウィンドウマネージャの比較や Wikipedia:Comparison of X window managers を見て下さい。
ウィンドウマネージャ一覧
スタック型ウィンドウマネージャ
- 2bwm — 高速なフロート型 WM で、2つのボーダーを持つという特性を持ち、XCB ライブラリによって書かれ Michael Cardell による mcwm から作られています。2bwm ではキーボードによって全てにアクセスすることが可能ですが、ポインティングデバイスを移動・リサイズ・上げ下げに使うこともできます。最近まで mcwm-beast と呼ばれていました。
- aewm — aewm は近代的で小さな X11 ウィンドウマネージャです。全てをマウスから操作できるようになっていますが、ウィンドウフレーム以外の目に見える UI を持っていません。コマンドセットは vi に沿っています: デザインはプロジェクト創設当初から変わっておらず、メモリが少ないマシンでも高速に動作します。あまり直感的とは言えず、新しいユーザーには適さないかもしれませんが、それなりにクイックかつエレガントです。
- AfterStep — AfterStep は Unix X Window System 用のウィンドウマネージャです。初めは NeXTStep インターフェースのルックアンドフィールをベースとしていました。エンドユーザーに調和したクリーンでエレガントなデスクトップを提供します。AfterStep の開発のゴールは、デスクトップ設定の柔軟性の確保・美しさの向上・システムリソースの効果的な利用です。
- Blackbox — Blackbox は高速かつ軽量な X Window System 向けウィンドウマネージャで、依存ライブラリはほとんどありません。Blackbox は C++ によってスクラッチから作られています(グラフィックの実装は WindowMaker に似ています)。
- Compiz — Compiz は OpenGL を使うコンポジット型ウィンドウマネージャで、ウィンドウをテクスチャオブジェクトに変換するのに GLX_EXT_texture_from_pixmap を使っています。柔軟なプラグインシステムをもっており、ほとんどのハードウェアで動作するように設計されています。
- cwm — 元は evilwm からフォークして作られましたが、後にスクラッチで書きなおされました。cwm はシンプルになるように設計されており、ウィンドウの検索などの便利な機能が付いています。
- eggwm — 軽量な Qt4/Qt5 ウィンドウマネージャ。
- Enlightenment — Enlightenment はただの Linux/X11 のウィンドウマネージャというだけでなく、美しいユーザーインターフェースを作るためのライブラリスイートとされます。伝統的なツールキットと格闘するような古臭い手法は使われません。伝統的なウィンドウマネージャとは異なるものです。
- evilwm — X Window System の最小主義ウィンドウマネージャです。ここで言う'最小主義'とは、機能が少なくて使いづらいということではなく、他のウィンドウマネージャにあるような役に立たない機能を省略するということです。
- Fluxbox — Fluxbox は X のウィンドウマネージャで Blackbox 0.61.1 のコードをベースにしています。非常に軽量で、使いやすく、デスクトップエクスペリエンスを高める機能を揃えています。C++ を作って作られており MIT ライセンスを使っています。
- Flwm — Flwm は複数のウィンドウマネージャにあるアイデアを兼ね備える試みです。主要なインターフェースとコードベースは Chris Cannam の wm2 に由来します。
- FVWM — FVWM はとてもパワフルな ICCCM-準拠の X Window System 用仮想デスクトップウィンドウマネージャです。開発は活発的に行われており、サポートも充実しています。
- Goomwwm — Goomwwm は X11 ウィンドウマネージャであり、クリーンルームソフトウェアプロジェクトとして C で実装されています。ミニマルなフロート型レイアウトでウィンドウを管理しつつ、ウィンドウの切り替え・サイズ変更・移動・タグ付け・タイリングを柔軟にキーボードで操作できるようになっています。また、高速・軽量・モードレス・Xinemara-対応で EWMH にほとんど準拠しています。
- IceWM — IceWM は X Window System のウィンドウマネージャです。IceWM のゴールは、スピード、シンプリシティ、そしてユーザーの邪魔をしないことです。
- jbwm — jbwm は evilwm がベースのウィンドウマネージャで、バイナリサイズを小さくすること、利便性、タイトルバーの統合に焦点を置いており、XFT や XPM のサポートをコンパイル時に選択することができます。
- JWM — JWM は X11 Window System のウィンドウマネージャです。JWM は C で書かれ、使用するのに必要なのは Xlib だけです。
- Karmen — Karmen は X のウィンドウマネージャで、Johan Veenhuizen によって作られました。"何もしなくても動く"ように設計されています。設定ファイルがなく、また Xlib 以外に必要なライブラリもありません。入力フォーカスモデルは、「クリックするとフォーカスする」です。Karmen は ICCCM と EWMH 準拠を目的にしています。
- KWin — KWin は KDE 4.0 の標準 KDE ウィンドウマネージャであり、最初のバージョンからコンポジットのサポートがあるため、コンポジット型ウィンドウマネージャでもあります。KWin は Compiz に似た先進的なグラフィカルエフェクトが使えるだけでなく、以前の KDE リリースにあった全ての機能を揃えています (KDE との高いレベルでの統合、高度なコンフィグレーション、フォーカススティールの防止、よくテストされたウィンドウマネージャ、わがままなアプリケーション/ツールキットの強固な制御 etc)。
- lwm — lwm はあなたの前にほとんど姿を現さない X ウィンドウマネージャです。アイコン、ボタン、バー、メニューなどがなく、それらが欲しい場合、他のプログラムを使うことになります。また設定項目もありません: 設定したいならば、他のウィンドウマネージャを使えばいいのです、それらウィンドウマネージャは、OS からディスク容量・物理メモリを占拠するでしょう。
- Marco — MATE のウィンドウマネージャ、Metacity のフォーク。
- Metacity — ここは Metacity のホームページではありません。Metacity にはホームページがありません。これと同じ理由で派手なロゴもありません: Metacity は、静かに、小さく、安定して仕事をこなしながら、貴方の注意を引かないように努力しています。
- Muffin — Cinnamon のウィンドウ・コンポジットマネージャ。Clutter ベースの Mutter のフォーク。OpenGL を使用します。
- Mutter — Clutter ベースの GNOME 向けコンポジット型ウィンドウマネージャで、OpenGL を使います。
- MWM — Motif Window Manager (MWM) は Motif ツールキットを使用する X ウィンドウマネージャです。
- Openbox — Openbox は高度な柔軟性があり、様々な標準をサポートした次世代ウィンドウマネージャです。*box ビジュアルスタイルは最小主義の外観を持つことで知られています。Openbox は *box ビジュアルスタイルを使いながら、以前の *box 実装に比べて、テーマ作成者に高い自由度を与えています。テーマのドキュメントでは、Openbox のテーマには完備されたオプションがあると謳っています。
- pawm — pawm は X Windows system のウィンドウマネージャです。'デスクトップ'ではなく、役に立たない大量のオプションはありません。ただ X アプリケーションを動かすための装備だけを持ちフレンドリーにインターフェースを使えるようになっています。
- PekWM — pekwm は aewm++ ウィンドウマネージャをベースに作られたウィンドウマネージャですが、今では aewm++ の面影は全くありません。ウィンドウのグループ化 (Ion, PWM, Fluxbox に類似したもの)、自動プロパティ、Xinerama、キーチェインなどの大幅に拡張された機能を持っています。
- Sawfish — Sawfish は Lisp ベースのスクリプト言語を使った拡張性のあるウィンドウマネージャです。ポリシーはウィンドウマネージャとして非常にミニマルなこと。最も柔軟に魅力的な方法でウィンドウを管理できるように開発されています。将来性のために、すべての高次元な WM の機能は、Lisp によって実装されています。
- TinyWM — TinyWM はとても (tiny) 小さいウィンドウマネージャでミニマリズムの極みです。ウィンドウマネージャを作るにあたって必要な基本的なことを学ぶのにも役に立つかもしれません。たった 50 行の C で作られています。python-xlib を使った Python バージョンもあります。
- twm — twm は X Window System のウィンドウマネージャです。タイトルバー、ウィンドウ、アイコン管理、ユーザー定義マクロ、クリックタイプ・ポインタードリブンなキーボードフォーカス、ユーザー定義キーとポインターボタンバインディングを提供します。
- UWM — UDE のアルティメットウィンドウマネージャ。
- WindowLab — WindowLab は新しいデザインの小さくシンプルなウィンドウマネージャです。クリックフォーカスでレイズオンフォーカスでないポリシーを持ち、一度に多くのウィンドウのサイズを変えることができたり、タスクバーとして画面の一部になった革新的なメニューバーなどがあります。タイトルバーは画面からはみ出ないようになっており、場合によってポインターをタスクバー・メニューバーに移動させてメニューアイテムを押しやすくしたりできます。
- Window Maker — Window Maker は X11 のウィンドウマネージャで、もともとは GNUstep デスクトップ環境として統合するために作られました。可能な限り、NEXTSTEP ユーザーインターフェースのエレガントなルックアンドフィールを再現しています。高速で、リッチな機能を持ち、設定しやすく、そして使いやすくなっています。また、世界中のプログラマーによって作られているフリーソフトウェアでもあります。
- WM2 — wm2 は X のウィンドウマネージャです。珍しいウィンドウ装飾をしていて機能性は限られています。ソースコードを編集・リコンパイルする他に wm2 には設定がありません。ウィンドウマネージャがフレンドリーすぎないでほしいユーザーのために作られています。
- Xfwm — Xfce ウィンドウマネージャは画面のアプリケーションウィンドウの位置を管理するだけでなく、美しいウィンドウ装飾、ワークスペースや仮想デスクトップの管理、マルチスクリーンモードのサポートも行います。完全透過やシャドウのある (X.Org コンポジットエクステンション による) コンポジット型マネージャを提供します。Xfce ウィンドウマネージャにはユーザーがコマンドを設定するキーボードショートカットエディタや細かい設定を行うための設定ダイアログも含まれています。
タイル型ウィンドウマネージャ
- Bspwm — bspwm はウィンドウがフルバイナリツリーの葉となるウィンドウマネージャです。EWMH とマルチモニタをサポートしており、メッセージを使って設定・操作します。
- Herbstluftwm — herbstluftwm は手動タイル型 X11 ウィンドウマネージャで Xlib と Glib を利用します。フレームをサブフレームに分割するレイアウトを取っています (i3/musca に似ています)。実行時にタグ・ワークスペース・仮想デスクトップを追加・削除できます。それぞれのタグには1つのレイアウトが含まれます。1つのタグは1つのモニターで表示します。タグごとのモニターは独立します (xmonad に似ています)。起動時に herbstclient からの ipc を通して設定します。設定ファイルはスクリプトで起動時に実行されます (wmii/musca に似ています)。
- howm — vi のようなオペレータ・モーション・モードがある軽量なタイル型 X11 ウィンドウマネージャ。設定はインクルードされる
config.h
ファイルを通して行います。
- Ion3 — Ion はタイル型タブ式 X11 ウィンドウマネージャで、キーボードを使うユーザーを念頭に置いて設計されています。タイル型ウィンドウマネージャの"ニューウェーブ"を作った最初のウィンドウマネージャのひとつで (もうひとつは全く違ったアプローチをとった LarsWM)、X11 のタイル型ウィンドウマネージャの草分け的な存在です。設定をするための埋め込みインタプリタとして Lua を使っています。
- Notion — Notion はタイル型、タブ式の X Window System 用ウィンドウマネージャで、'タイル'と'タブ式'ウィンドウを利用します。
- タイル: 画面をオーバーラップしないように'タイル'に分割します。すべてのウィンドウにタイルが割り当てられます。
- タブ: ひとつのタイルに複数のウィンドウを収めることもできます - 'タブ'を使います
- 静的: ほとんどのタイル型ウィンドウマネージャは'動的'、つまり自動でタイルをリサイズ・移動してウィンドウを表示します。対照的に、Notion は自動ではタイルを変更しません。
- Notion は Ion3 のフォークです。
- http://notion.sf.net/ || notion
- Ratpoison — Ratpoison はシンプルなウィンドウマネージャで、大きなライブラリが必要なく、着飾ったグラフィックもなく、ウィンドウ装飾もありません。仮想端末として幅広く使われている GNU Screen に主として倣っています。Ratpoison の設定はシンプルなテキストファイルで行います。Ratpoison の情報バーはいささか異なり、必要な時だけ表示されます。通知バーだけでなくランチャも提供します。Ratpoison にはシステムトレイがありません。
- Stumpwm — Stumpwm はタイル型の、キーボードドリブンな X11 ウィンドウマネージャで、全て Common Lisp によって書かれています。Stumpwm には個人設定にとりつける様々なフックや、実行中にも再設定・リロードできる変数があります。ウィンドウ装飾・アイコン・ボタン・システムトレイはありません。情報バーはずっと表示するかそれとも必要な時だけ表示するか設定できます。
- subtle — subtle は手動タイル型ウィンドウマネージャでいささか独特なタイリングを行います: デフォルトでは典型的なレイアウトはなく、ウィンドウはカスタムグリッドのポジション(グラビティ)によって配置されます。ユーザーはウィンドウそれぞれのグラビティを、直接掴むかタグ設定のルールによって変更できます。ワークスペースタグや自動クライアントタグ、マウス・キーボード操作、拡張できるステータスバーなどを備えています。
- WMFS — WMFS (Window Manager From Scratch) は軽量で細かく設定できる X 向けタイル型ウィンドウマネージャです。設定ファイルを使って設定します。Xft (FreeType) フォントをサポート、Extended Window Manager Hints (EWMH)、Xinemara、Xrandr に対応しています。WMFS は Vi ベースのコマンドを使って操作可能です。
- WMFS2 — WMFS2 は WMFS の後継となるウィンドウマネージャですが、互換はありません。より最小主義を徹底していて新しい機能が追加されています。
動的ウィンドウマネージャ
- awesome — awesome は設定範囲が広い、X の次世代型ウィンドウマネージャです。非常に高速に動作で、拡張性があり、GNU GPLv2 でライセンスされています。ビルトインのシステムトレイ・情報バー・ランチャーが使え、Lua で設定を行います。Lua で機能を拡張することも可能です。Awesome は Xlib の代わりに XCB を使うことで、動作速度を高速化させています。Awesome には他にも、notification-daemon の代替や、*box ウィンドウマネージャに似た右クリックメニューなど様々な機能があります。
- catwm — catwm は小さなウィンドウマネージャで、dwm よりもシンプルに C で書かれています。config.h ファイルを変更しリコンパイルすることで設定を行います。
- dwm — dwm は X の動的ウィンドウマネージャです。ウィンドウをタイル・モノクル・フロートのレイアウトで扱います。レイアウトは全て動的に適用することができ、アプリケーションの使用時の環境を最適化します。トレイアプリや自動ランチャは含まれていませんが、同じ作者による dmenu がピッタリあいます。テキストの設定ファイルは存在しません。設定は C ソースコードの修正によって全て行い、変更するたびにリコンパイル・再起動する必要があります。プログラムのサイズに予め自分で制限をかけていて、これ以上増えないようにしています。
- echinus — X11 のシンプルかつ軽量なタイル・フロート型ウィンドウマネージャ。echinus は dwm の設定を簡単にするフォークから始まり、今では EWMH をサポートしている完全なリペアレントウィンドウマネージャになっています。ouricoAUR と呼ばれる EWMH 準拠のパネル・タスクバーを持っています。
- http://plhk.ru/ || echinusAUR
- i3 — i3 は完全にスクラッチから書かれたタイル型ウィンドウマネージャです。wmii に必要な機能 (マルチモニタなど) が欠けていたりバグがあるのに、長いこと放置され修正も難しい (ソースコードのコメント・ドキュメントが部分的に存在しない) ことを理由に i3 は作られました。特徴的な違いとしてマルチモニタのサポートやツリーメタファーがあります。速度のために wmii の Plan 9 インターフェイスは実装されていません。
- FrankenWM — 基本的には monsterwm にフロート機能が付いたウィンドウマネージャです。ベーシックな mwm の上に追加された特徴: レイアウトの増加 (fibonacci, equal stack, dual stack), 動的に隙間 (とボーダー) を調整可能、シングルウィンドウの最小化・最大化、全てのウィンドウの表示・非表示、マスターとスタックのサイズを別々に変更、スタックの反転。
- spectrwm — Spectrwm は小さな X11 の動的ウィンドウマネージャで、主として xmonad と dwm からインスパイアされています。邪魔にならないように存在することで、スクリーンをもっと重要なことに使えるように作られています。穏健なデフォルトがあり、設定はテキストファイルで行います。Spectrwm はハッカーのためにハッカーによって書かれ、小さく・コンパクト・高速になるよう力が入れられています。ユーザー定義のスクリプトから呼び出せるビルトインのステータスバーを持っています。
- Qtile — Qtile はフル機能の、ハックしやすいタイル型ウィンドウマネージャで Python で書かれています。Qtile はシンプルかつ小さく、拡張性があります。レイアウト・ウィジェット・ビルトインコマンドを書くのは簡単です。全て Python で設定するので、Pyhon のフルパワーを発揮させて柔軟にあなたの要望を満たすことができるでしょう。
- wmii — wmii は X11 の小さい動的ウィンドウマネージャです。スクリプトによって管理され、9P ファイルシステムインターフェースを持っておりクラシックな (Acme-ライク) タイル型ウィンドウマネージメントをサポートしています。コードベースを小さくクリーンにする(ハックしやすく美しくする)ことを目指しています。デフォルト設定は bash と rc (Plan 9 シェル) によりますが、ruby によるプログラムや、テキストで設定することができるプログラムもあります。ステータスバーとランチャーが内蔵されており、任意でシステムトレイ (
witray
) も使えます。
- xmonad — xmonad は動的タイル型 X11 ウィンドウマネージャで、Haskell によって書かれています。一般的な WM では、ウィンドウの調整や検索に時間が割かれますが、xmonad は自動化することでそれらを楽にします。全ての設定項目を使うには、xmonad をリコンパイルしなくてはいけません、つまり Haskell コンパイラ (100MB 以上) をインストールする必要があります。xmonad-contrib という名の大きなライブラリによって多くの追加機能が使用できます。