ウィンドウマネージャ
ウィンドウマネージャ (WM) はグラフィカルユーザーインターフェース (GUI) のコンポーネントのひとつです。ユーザーによっては完全にユーザーインターフェースの揃ったデスクトップ環境(アイコン、ウィンドウ、壁紙、デスクトップウィジェットを含む)をインストールする方を好むかもしれません。
ウィンドウマネージャは Xorg に特有のものです。Wayland 上のウィンドウマネージャに相当するものは コンポジタ と呼ばれます。これはウィンドウマネージャが コンポジット型ウィンドウマネージャ として動作するためです。
概要
ウィンドウマネージャは、さまざまなグラフィカルアプリケーションが描画されるフレーム ("ウィンドウ") の外観と動作を制御する X クライアントです。ウィンドウマネージャはウィンドウの境界線、タイトルバー、サイズ、リサイズ機能を決定し、Window Maker のように dockapps を貼り付けるための予約領域、Fluxbox のようにウィンドウをタブ化する機能などを提供することもあります。ウィンドウマネージャの中には、プログラムを起動したり、ウィンドウマネージャ自体を設定するためのメニューのような簡単なユーティリティがバンドルされているものもあります。
Extended Window Manager Hints 仕様は、ウィンドウマネージャがサーバや他のクライアントと標準的な方法で対話できるようにするために使用されます。
あるウィンドウマネージャはより包括的な デスクトップ環境 の一部として開発され、通常、他の提供されるアプリケーションがより良く相互作用できるようにし、デスクトップのアイコン、フォント、ツールバー、壁紙、デスクトップウィジェットなどの機能を備えたより一貫した体験をユーザーに提供することができるようにします。
他のウィンドウマネージャは、代わりに スタンドアロン で使用するように設計されており、使用する他のアプリケーションの選択に関して完全な自由をユーザーに与えています。このため、ユーザーは自分のニーズに合わせて、より軽量でカスタマイズされた環境を構築することができます。デスクトップアイコン、ツールバー、壁紙、デスクトップウィジェットなどの エクストラ は、必要であれば、専用のアプリケーションを追加する必要があります。
スタンドアロン型ウィンドウマネージャの中には、デスクトップ環境のデフォルトウィンドウマネージャを置き換えるために使用できるものもありますし、デスクトップ環境向けのウィンドウマネージャをスタンドアロンで使用できるものもあります。
ウィンドウマネージャをインストールする前に、機能的な X サーバーがインストールされていることが必要です。詳しい情報は Xorg を見て下さい。
種類
- スタック型 (もしくはフロート型) ウィンドウマネージャは Windows や OS X などの商用 OS で使われる伝統的なデスクトップメタファーを提供します。ウィンドウはデスクの上の紙のように動き、それぞれを重ねることができます。カテゴリ:スタック型ウィンドウマネージャ。
- タイル型ウィンドウマネージャは、ウィンドウがオーバーラップしないようウィンドウを"タイル状に"敷き詰めます。基本的にキーボードで操作し、マウスを使うことはあまり(もしくは全く)ありません。タイル型ウィンドウマネージャのレイアウトは手動で設定することも、定義済みのレイアウトを使うこともできます。カテゴリ:タイル型ウィンドウマネージャ。
- 動的ウィンドウマネージャはタイル型とフロート型のウィンドウレイアウトを動的に切り替えることができます。カテゴリ:動的ウィンドウマネージャ。
ウィンドウマネージャの比較はタイル型ウィンドウマネージャの比較や Wikipedia:Comparison of X window managers を見て下さい。
ウィンドウマネージャ一覧
スタック型ウィンドウマネージャ
- 2bwm — 高速なフロート型 WM で、2つのボーダーを持つという特性を持ち、XCB ライブラリによって書かれ Michael Cardell による mcwm から作られています。2bwm ではキーボードによって全てにアクセスすることが可能ですが、ポインティングデバイスを移動・リサイズ・上げ下げに使うこともできます。最近まで mcwm-beast と呼ばれていました。
- 9wm — Plan 9's rio に触発された X11 ウィンドウマネージャ
- AfterStep — AfterStep は Unix X Window System 用のウィンドウマネージャです。初めは NeXTStep インターフェースのルックアンドフィールをベースとしていました。エンドユーザーに調和したクリーンでエレガントなデスクトップを提供します。AfterStep の開発のゴールは、デスクトップ設定の柔軟性の確保・美しさの向上・システムリソースの効果的な利用です。
- berry — Unix システム用に C で記述されたコンパクトなウィンドウマネージャ。これはコマンドラインクライアントを介して制御されるため、ユーザーは sxhkd などのホットキーデーモンを介してウィンドウを制御したり、シェルスクリプトを介して機能を拡張したりできます。二重枠、タイトルバー、ウィンドウテキストを備えた拡張可能なテーマオプションを提供します。berry は、空いているスペースに新しいウィンドウを直感的に配置し、仮想デスクトップをサポートします
- Blackbox — Blackbox は高速かつ軽量な X Window System 向けウィンドウマネージャで、依存ライブラリはほとんどありません。Blackbox は C++ によってスクラッチから作られています(グラフィックの実装は WindowMaker に似ています)。
- Compiz — Compiz は OpenGL を使うコンポジット型ウィンドウマネージャで、ウィンドウをテクスチャオブジェクトに変換するのに GLX_EXT_texture_from_pixmap を使っています。柔軟なプラグインシステムをもっており、ほとんどのハードウェアで動作するように設計されています。
- https://launchpad.net/compiz || compizAUR, compiz-coreAUR
- 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)。Wayland のコンポジタとして使うこともできます。
- lwm — lwm はあなたの前にほとんど姿を現さない X ウィンドウマネージャです。アイコン、ボタン、バー、メニューなどがなく、それらが欲しい場合、他のプログラムを使うことになります。また設定項目もありません: 設定したいならば、他のウィンドウマネージャを使えばいいのです、それらウィンドウマネージャは、OS からディスク容量・物理メモリを占拠するでしょう。
- Marco — MATE のウィンドウマネージャ、Metacity のフォーク。
- Metacity — ここは Metacity のホームページではありません。Metacity にはホームページがありません。これと同じ理由で派手なロゴもありません: Metacity は、静かに、小さく、安定して仕事をこなしながら、貴方の注意を引かないように努力しています。Metacity は旧バージョンの GNOME 2 と GNOME Flashback セッションで使用されており、新しいバージョンでは Mutter に置き換わっています。
- Muffin — Cinnamon のウィンドウ・コンポジットマネージャ。Clutter ベースの Mutter のフォーク。OpenGL を使用します。Cinnamon 以外で使うことはできません。
- Mutter — Clutter ベースの GNOME 向けコンポジット型ウィンドウマネージャで、OpenGL を使います。Wayland コンポジタとしても利用可能。
- 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 のアルティメットウィンドウマネージャ。
- Wind — 小さなフローティングウィンドウマネージャ ICCCM、EHWM、NetWM に準拠しようとします。
- WindowLab — WindowLab は新しいデザインの小さくシンプルなウィンドウマネージャです。クリックフォーカスでレイズオンフォーカスでないポリシーを持ち、一度に多くのウィンドウのサイズを変えることができたり、タスクバーとして画面の一部になった革新的なメニューバーなどがあります。タイトルバーは画面からはみ出ないようになっており、場合によってポインターをタスクバー・メニューバーに移動させてメニューアイテムを押しやすくしたりできます。
- Window Maker — Window Maker は X11 のウィンドウマネージャで、もともとは GNUstep デスクトップ環境として統合するために作られました。可能な限り、NEXTSTEP ユーザーインターフェースのエレガントなルックアンドフィールを再現しています。高速で、リッチな機能を持ち、設定しやすく、そして使いやすくなっています。また、世界中のプログラマーによって作られているフリーソフトウェアでもあります。
- WM2 — wm2 は X のウィンドウマネージャです。珍しいウィンドウ装飾をしていて機能性は限られています。ソースコードを編集・リコンパイルする他に wm2 には設定がありません。ウィンドウマネージャがフレンドリーすぎないでほしいユーザーのために作られています。
- worm — wormは、X11 用の動的なタグベースのウィンドウマネージャーです。フローティングレイアウトとマスタースタックタイリングレイアウトの両方をサポートし、オープンに開発されています。また、Nim プログラミング言語で書かれています。
- Xfwm — Xfce ウィンドウマネージャは画面のアプリケーションウィンドウの位置を管理するだけでなく、美しいウィンドウ装飾、ワークスペースや仮想デスクトップの管理、マルチスクリーンモードのサポートも行います。完全透過やシャドウのある (X.Org コンポジットエクステンション による) コンポジット型マネージャを提供します。Xfce ウィンドウマネージャにはユーザーがコマンドを設定するキーボードショートカットエディタや細かい設定を行うための設定ダイアログも含まれています。
タイル型ウィンドウマネージャ
- Bspwm — bspwm はウィンドウがフルバイナリツリーの葉となるウィンドウマネージャです。EWMH とマルチモニタをサポートしており、メッセージを使って設定・操作します。
- EXWM — EXWM (Emacs X Window Manager) は XELB で動作する Emacs 向けのフル機能のタイル型 X ウィンドウマネージャです。ハイブリッドレイアウトモード (タイル+スタック)、ダイナミックワークスペースのサポート、マルチモニターのサポート、コンポジットマネージャ、システムトレイなどの機能があります。
- Herbstluftwm — herbstluftwm は手動タイル型 X11 ウィンドウマネージャで Xlib と Glib を利用します。フレームをサブフレームに分割するレイアウトを取っています (i3/musca に似ています)。実行時にタグ・ワークスペース・仮想デスクトップを追加・削除できます。それぞれのタグには1つのレイアウトが含まれます。1つのタグは1つのモニターで表示します。タグごとのモニターは独立します (xmonad に似ています)。起動時に herbstclient からの ipc を通して設定します。設定ファイルはスクリプトで起動時に実行されます (wmii/musca に似ています)。
- 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 は手動タイル型ウィンドウマネージャでいささか独特なタイリングを行います: デフォルトでは典型的なレイアウトはなく、ウィンドウはカスタムグリッドのポジション(グラビティ)によって配置されます。ユーザーはウィンドウそれぞれのグラビティを、直接掴むかタグ設定のルールによって変更できます。ワークスペースタグや自動クライアントタグ、マウス・キーボード操作、拡張できるステータスバーなどを備えています。
- sway — Sway は Wayland において i3 の代わりになるウィンドウマネージャです。既存の i3 設定を使うことができ i3 のほとんどの機能をサポートしています。
- way-cooler — Rust で書かれたタイル型の Wayland ウィンドウマネージャです。Lua で設定を行い、D-Bus で拡張することができます。
- 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 ウィンドウマネージャに似た右クリックメニューなど様々な機能があります。
- dwm — dwm は X の動的ウィンドウマネージャです。ウィンドウをタイル・モノクル・フロートのレイアウトで扱います。レイアウトは全て動的に適用することができ、アプリケーションの使用時の環境を最適化します。トレイアプリや自動ランチャは含まれていませんが、同じ作者による dmenu がピッタリあいます。テキストの設定ファイルは存在しません。設定は C ソースコードの修正によって全て行い、変更するたびにリコンパイル・再起動する必要があります。プログラムのサイズに予め自分で制限をかけていて、これ以上増えないようにしています。
- http://dwm.suckless.org/ || dwmAUR
- 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 のフルパワーを発揮させて柔軟にあなたの要望を満たすことができるでしょう。
- xmonad — xmonad は動的タイル型 X11 ウィンドウマネージャで、Haskell によって書かれています。一般的な WM では、ウィンドウの調整や検索に時間が割かれますが、xmonad は自動化することでそれらを楽にします。全ての設定項目を使うには、xmonad をリコンパイルしなくてはいけません、つまり Haskell コンパイラ (100MB 以上) をインストールする必要があります。xmonad-contrib という名の大きなライブラリによって多くの追加機能が使用できます。