ウィンドウマネージャ
ウィンドウマネージャ (WM) とは、グラフィカルユーザインターフェイス (GUI) でウインドウシステムにおけるウィンドウの配置や外観を制御するシステムソフトウェアです。デスクトップ環境 (DE) の一部として、あるいはスタンドアロンに使用することができます。
概要
ウィンドウマネージャは、さまざまなグラフィカルアプリケーションが描画されるフレーム ("ウィンドウ") の外観と動作を制御する X クライアントです。ウィンドウマネージャはウィンドウの境界線、タイトルバー、サイズ、リサイズ機能を決定し、Window Maker のように dockapps を貼り付けるための予約領域、Fluxbox のようにウィンドウをタブ化する機能などを提供することもあります。ウィンドウマネージャの中には、プログラムを起動したり、ウィンドウマネージャ自体を設定するためのメニューのような簡単なユーティリティがバンドルされているものもあります。
Extended Window Manager Hints 仕様は、ウィンドウマネージャがサーバや他のクライアントと標準的な方法で対話できるようにするために使用されます。
一部のウィンドウマネージャは、より包括的な デスクトップ環境 の一部として開発され、通常、他の提供されるアプリケーションがより良く相互作用できるようにし、デスクトップのアイコン、フォント、ツールバー、壁紙、デスクトップウィジェットなどの機能を備えたより一貫した体験をユーザーに提供することができるようにします。
その他のウィンドウマネージャは、代わりに スタンドアロン で使用するように設計されており、使用する他のアプリケーションの選択に関して完全な自由をユーザーに与えています。このため、ユーザーは自分のニーズに合わせて、より軽量でカスタマイズされた環境を構築することができます。デスクトップアイコン、ツールバー、壁紙、デスクトップウィジェットなどの エクストラ は、必要であれば、専用のアプリケーションを追加する必要があります。
スタンドアロン型ウィンドウマネージャの中には、デスクトップ環境のデフォルトウィンドウマネージャを置き換えるために使用できるものもありますし、デスクトップ環境向けのウィンドウマネージャをスタンドアロンで使用できるものもあります。
ウィンドウマネージャをインストールする前に、機能する X サーバ環境が必要です。詳しい情報は Xorg を見て下さい。
種類
- スタック型 (フロート型とも) ウィンドウマネージャは、Windows や OS X などの商用 OS で使われる伝統的なデスクトップメタファーを提供します。ウィンドウはデスクの上の紙のように動き、それぞれを重ねることができます。Arch Wiki で利用可能なページとしては カテゴリ:スタック型ウィンドウマネージャ を見てください。
- タイル型ウィンドウマネージャは、ウィンドウがオーバーラップしないようウィンドウを"タイル状に"敷き詰めます。基本的にキーボードで操作し、マウスを使うことはあまり(もしくは全く)ありません。タイル型ウィンドウマネージャのレイアウトは手動で設定することも、定義済みのレイアウトを使うこともできます。Arch Wiki で利用可能なページとしては カテゴリ:タイル型ウィンドウマネージャ を見てください。
- 動的ウィンドウマネージャはタイル型とフロート型のウィンドウレイアウトを動的に切り替えることができます。Arch Wiki で利用可能なページとしては カテゴリ:動的ウィンドウマネージャ を見てください。
ウィンドウマネージャの比較は タイル型ウィンドウマネージャの比較 や Wikipedia:Comparison of X window managers を見て下さい。
ウィンドウマネージャ一覧
スタック型ウィンドウマネージャ
- 2bwm — 高速なフロート型 WM で、2つのボーダーを持つという特徴を持ち、XCB ライブラリによって書かれ Michael Cardell による mcwm から継承されました。2bwm では、キーボードによって全てにアクセスすることが可能ですが、ポインティングデバイスを使うことで移動、リサイズ、最大化/最小化することもできます。
- 9wm — Plan 9 の rio からインスパイアされた X11 ウィンドウマネージャ
- AfterStep — 初めは NeXTStep インターフェースのルックアンドフィールをベースとしていました。調和したクリーンでエレガントなデスクトップをエンドユーザーに提供します。AfterStep の開発のゴールは、デスクトップ設定の柔軟性の提供、美しさを向上、システムリソースを効果的な利用です。
- berry — C で記述されたコンパクトなウィンドウマネージャ。これはコマンドラインクライアントを介して制御されるため、ユーザーは sxhkd などのホットキーデーモンを介してウィンドウを制御したり、シェルスクリプトを介して機能を拡張したりできます。二重枠、タイトルバー、ウィンドウテキストにおいて拡張可能なテーマオプションを提供します。berry は、空いているスペースに新しいウィンドウを直感的に配置し、仮想デスクトップをサポートします
- Blackbox — 高速かつ軽量な、X 用のウィンドウマネージャで、ライブラリに全く依存していません。Blackbox は C++ で記述されており、完全にオリジナルなコードのみが含まれています (とはいえ、グラフィックの実装は WindowMaker に似ています)。
- 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 用仮想デスクトップウィンドウマネージャです。開発は活発的に行われており、サポートも充実しています。
- https://www.fvwm.org/ || fvwmAUR
- Goomwwm — Goomwwm は C で実装された X11 ウィンドウマネージャであり、クリーンルームソフトウェアプロジェクトとして開発されています。ミニマルなフロート型レイアウトでウィンドウを管理しつつ、ウィンドウの切り替え・サイズ変更・移動・タグ付け・タイリングを柔軟にキーボードで操作できるようになっています。また、高速・軽量・モードレス・Xinemara-対応で EWMH にほとんど準拠しています。
- IceWM — IceWM は X Window System のウィンドウマネージャです。IceWM のゴールは、スピード、シンプリシティ、そしてユーザーの邪魔をしないことです。
- jbwm — evilwm ベースのウィンドウマネージャ。約16KBという最小の構成。バイナリサイズの小ささや利便性を重視。コンパイル時のオプションとしてタイトルバーと XFT タイトルバーのフォントレンダリングを組み込み。evilwm よりも使いやすいキーバインド。
- JWM — JWM は X11 Window System のウィンドウマネージャです。JWM は C で書かれ、使用するのに必要なのは Xlib だけです。
- Karmen — X のウィンドウマネージャで、Johan Veenhuizen によって作られました。"何もしなくても動く"ように設計されています。設定ファイルがなく、また Xlib 以外に必要なライブラリもありません。入力フォーカスモデルは、「クリックするとフォーカスする」です。Karmen は ICCCM と EWMH 準拠を目的にしています。
- KWin — KDE 4.0 以降の標準の KDE ウィンドウマネージャであり、かつコンポジット型ウィンドウマネージャでもあります。そのため、KWin では、Compiz に似た先進的なグラフィカルエフェクトを利用でき、さらに以前の KDE リリースのすべての機能を備えています (例えば、KDE との高いレベルでの統合、高度なカスタマイズ性、フォーカススティールの防止、よくテストされたウィンドウマネージャ、不審な挙動をするアプリケーション/ツールキットの堅牢な対処など)。また、Wayland のコンポジタとしても機能します。
- lwm — lwm はあなたの前にほとんど姿を現さない X ウィンドウマネージャです。アイコン、ボタン、バー、メニューなどがなく、それらが欲しい場合、他のプログラムを使うことになります。また設定項目もありません: 設定したいならば、他のウィンドウマネージャを使えばいいのです、それらウィンドウマネージャは、OS からディスク容量・物理メモリを占拠するでしょう。
- Marco — MATE のウィンドウマネージャ、Metacity のフォーク。
- Metacity — Metacity は、静かに、小さく、安定して仕事をこなしながら、貴方の注意を引かないように努力しています。Metacity は旧バージョンの GNOME 2 と GNOME Flashback セッションで使用されており、新しいバージョンでは Mutter に置き換わっています。
- MLVWM — Macintosh ライクな仮想ウィンドウマネージャ。Mac OS X 以前の Macintosh のレイアウトとウィンドウデザインでルックアンドフィールをエミュレートしようと試みる FVWM の後継です。
- Muffin — Cinnamon のウィンドウ・コンポジットマネージャ。Clutter ベースの Mutter のフォーク。OpenGL を使用します。Cinnamon 以外で使うことはできません。
- Mutter — Clutter ベースの GNOME 向けコンポジット型ウィンドウマネージャで、OpenGL を使います。Wayland コンポジタとしても利用可能。
- MWM — Motif Window Manager (MWM) は Motif ツールキットを使用する X ウィンドウマネージャです。
- Openbox — 高度に設定可能な、様々な標準をサポートした次世代ウィンドウマネージャです。*box ビジュアルスタイルは最小主義の外観を持つことで知られています。Openbox は *box 視覚スタイルを使いながら、以前の *box 実装に比べて、テーマ作成者に高い自由度を与えています。2010 年以降、「機能は完成」されていますが、未だにメンテナンスが続けられています。
- pawm — pawm は X Windows system のウィンドウマネージャです。'デスクトップ'ではなく、役に立たない大量のオプションはありません。ただ X アプリケーションを動かすための装備だけを持ちフレンドリーにインターフェースを使えるようになっています。
- PekWM — pekwm は aewm++ ウィンドウマネージャをベースに作られたウィンドウマネージャですが、今では aewm++ の面影は全くありません。ウィンドウのグループ化 (Ion, PWM, Fluxbox に類似したもの)、自動プロパティ、Xinerama、キーチェインなどの大幅に拡張された機能を持っています。
- Sawfish — Sawfish は Lisp ベースのスクリプト言語を使った拡張性のあるウィンドウマネージャです。ポリシーはウィンドウマネージャとして非常にミニマルなこと。最も柔軟に魅力的な方法でウィンドウを管理できるように開発されています。将来性のために、すべての高次元な WM の機能は、Lisp によって実装されています。
- sowm — Simple Opinionated Window Manager (シンプルなオプション指向のウィンドウマネージャ)。フルスクリーン切り替え、ウィンドウセンタリング、ミックスされたワークフロー (つまり、マウスとキーボード) を提供します。
- TinyWM — TinyWM はとても (tiny) 小さいウィンドウマネージャでミニマリズムの極みです。ウィンドウマネージャを作るにあたって必要な基本的なことを学ぶのにも役に立つかもしれません。たった 50 行の C で作られています。python-xlib を使った Python バージョンもあります。
- twm — X 用のシンプルなウィンドウマネージャ。1989 年から Xorg で使用されているデフォルト/フォールバックです。タイトルバー、ウィンドウ形状、様々な形態のアイコン管理、ユーザー定義マクロ、クリックタイプ・ポインタードリブンなキーボードフォーカス、ユーザー定義キーとポインターボタンバインディングを提供します。
- ukwm — 軽量の GTK+ ウィンドウマネージャ。UKUI デスクトップ環境のデフォルトのウィンドウマネージャです。
- UWM — UDE のアルティメットウィンドウマネージャ。
- Wind — 小さなフローティングウィンドウマネージャ ICCCM、EHWM、NetWM に準拠しようとします。
- WindowLab — 新しいデザインの小さくシンプルなウィンドウマネージャです。クリックフォーカスでレイズオンフォーカスでないポリシーを持ち、一度に多くのウィンドウのサイズを変えることができたり、タスクバーとして画面の一部になった革新的なメニューバーなどがあります。タイトルバーは画面からはみ出ないようになっており、場合によってポインターをタスクバー/メニューバーに移動させてメニューアイテムを押しやすくしたりできます。
- 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 ウィンドウマネージャです。キーボードドリーブンな操作、ハイブリッドレイアウトモード (タイル+スタック)、ダイナミックワークスペースのサポート、ICCCM/EWMH 準拠、RandR (マルチモニター) サポート、システムトレイなどの機能があります。
- Herbstluftwm — herbstluftwm は手動タイル型 X11 ウィンドウマネージャで Xlib と Glib を利用します。フレームをサブフレームに分割するレイアウトを取っています (i3/musca に似ています)。実行時にタグ (ワークスペース/仮想デスクトップなどとも) を追加・削除できます。それぞれのタグには1つのレイアウトが含まれます。1つのタグは1つのモニターで表示します。タグごとのモニターは独立します (xmonad に似ています)。起動時に herbstclient からの ipc を通して設定されます。設定ファイルはスクリプトで起動時に実行されます (wmii/musca に似ています)。
- i3 — 完全にゼロから書かれたタイル型ウィンドウマネージャです。wmii (この開発者が当時お気に入りだったウィンドウマネージャ) に必要な機能 (マルチモニタなど) が欠けていたりバグがあるのに、長いこと放置され修正も難しい (ソースコードのコメント・ドキュメントが部分的に存在しない) ことを理由に i3 は作られました。特徴的な違いとしてマルチモニタのサポートやツリーメタファーがあります。速度のために wmii の Plan 9 インターフェイスは実装されていません。
- Larswm — 9wm に基づくタイリングウィンドウマネージャ
- https://leftwm.org || leftwmAUR
- Notion — Notion はタイル型、タブ式の X Window System 用ウィンドウマネージャで、'タイル'と'タブ式'ウィンドウを利用します。
- タイル: 画面をオーバーラップしないように'タイル'に分割します。ウィンドウは1つのタイルを占領し、そのタイルに最大化されます。
- タブ: ひとつのタイルに複数のウィンドウを収めることもできます - この時に'タブ'を使います
- 静的: ほとんどのタイル型ウィンドウマネージャは'動的'、つまり、ウィンドウが現れたり消えたりしたときに自動でタイルをリサイズ・移動してウィンドウを表示します。対照的に、Notion は自動ではタイルを変更しません。
- Notion は Ion3 のフォークです。
- https://notionwm.net/ || notion
- Ratpoison — Ratpoison はシンプルなウィンドウマネージャで、大きなライブラリ依存はなく、着飾ったグラフィックもなく、ウィンドウ装飾もなく、げっ歯類に依存しません (訳注: 「マウス に頼る必要がない」という意味だと思われます)。仮想端末として幅広く使われている GNU Screen に主として倣っています。Ratpoison の設定はシンプルなテキストファイルで行います。Ratpoison の情報バーはいささか異なり、必要な時だけ表示されます。通知バーだけでなくランチャも提供します。Ratpoison にはシステムトレイがありません。
- Stumpwm — Stumpwm はタイル型の、キーボードドリブンな X11 ウィンドウマネージャで、全て Common Lisp によって書かれています。Stumpwm では、カスタマイズ可能ではあるが視覚的にミニマルであるように心がけています。Stumpwm には個人設定にとりつける様々なフックや、実行中にも再設定・リロードできる変数があります。ウィンドウ装飾・アイコン・ボタンはありません。情報バーはずっと表示するかそれとも必要な時だけ表示するか設定できます。
動的ウィンドウマネージャ
- awesome — 設定可能な範囲が広い、X 用の次世代のフレームワークウィンドウマネージャです。非常に高速で、拡張性があり、GNU GPLv2 でライセンスされています。ビルトインのシステムトレイ、情報バー、ランチャーがあり、Lua で設定を行います。Lua で書かれた拡張機能を利用できます。Awesome は Xlib の代わりに XCB を使うことで、動作速度を高速化させています。Awesome には他にも、notification-daemon の初期の代替や、*box ウィンドウマネージャに似た右クリックメニューなど様々な機能があります。
- dwm — X 用の動的ウィンドウマネージャです。ウィンドウをタイル、モノクル、フロートのレイアウトで扱います。レイアウトは全て動的に適用することができ、使用中のアプリケーションや実行中のタスクの環境を最適化します。システムトレイや自動ランチャは含まれていませんが、同じ作者による dmenu は良く統合されています。テキストの設定ファイルは存在しません。設定は C ソースコードの修正によって全て行い、変更するたびに再コンパイル・再起動する必要があります。
- https://dwm.suckless.org/ || dwmAUR
- echinus — X11 用のシンプルかつ軽量なタイル・フロート型ウィンドウマネージャです。echinus は dwm の設定を簡単にしたフォークから始まり、今では EWMH をサポートしている完全なリペアレントウィンドウマネージャになっています。ouricoAUR と呼ばれる EWMH 準拠のパネル/タスクバーを持っています。
- http://plhk.ru/ || echinusAUR
- FrankenWM — 基本的には monsterwm にフロート機能が付いたウィンドウマネージャです。ベーシックな mwm の上に追加された機能としては: より多くのレイアウト (fibonacci, equal stack, dual stack), 動的に隙間 (とボーダー) を調整可能、シングルウィンドウの最小化・最大化、全てのウィンドウの表示・非表示、マスターとスタックのサイズを別々に変更、スタックの反転。
- spectrwm — X11 用の小さな動的ウィンドウマネージャで、主として xmonad と dwm からインスパイアされています。邪魔にならないように存在することで、スクリーンをもっと重要なことに使えるように作られています。穏健なデフォルトがあり、設定はテキストファイルで行います。Spectrwm はハッカーのためにハッカーによって書かれ、小さく・コンパクト・高速になるよう力が入れられています。ユーザー定義のスクリプトから呼び出せるビルトインのステータスバーを持っています。
- Qtile — Qtile はフル機能の、ハックしやすいタイル型ウィンドウマネージャで Python で書かれています。Qtile はシンプルかつ小さく、拡張性があります。レイアウト、ウィジェット、ビルトインコマンドを書くのは簡単です。Qtile はすべて Python で書かれており、また Python で設定するので、Pyhon のフルパワーを発揮させて柔軟にあなたの要望を満たすことができるでしょう。
- Wingo — モニター毎のワークスペースをサポートするフル機能の真のハイブリッドウィンドウマネージャです。フロートモードもタイルモードも自由自在です。これにより、あるワークスペースではタイルモードを使い、他のワークスペースではフロートモードを使うといったことが可能になります。Wingo は独自のコマンド言語でスクリプト化することができます。Wingo は完全にテーマ設定可能で、ユーザ定義のフックをサポートしています。Wingo は Go で書かれており、ランタイムの依存関係はありません。
- xmonad — xmonad は動的タイル型 X11 ウィンドウマネージャで、Haskell によって書かれています。一般的な WM ではウィンドウを調整したり探したりするのに時間を割かなければなりませんが、xmonad はこれを自動化することでそれらを楽にします。XMonad は Haskell で設定します。いかなる設定を変更したときでも、xmonad をリコンパイルしなくてはいけません。なので Haskell コンパイラ (100MB 以上) をインストールする必要があります。xmonad-contrib という名の大きなライブラリによって多くの追加機能が使用できます。