Show page source of wmii #44868

= wmii - window manager improved 2 =
== [wmiiの日本語manページ(仮)] ==
== 特徴 ==
non-WIMPyで9ishなX11上で動作する動的ウインドウマネージャ。[[BR]]
スクリプトによる拡張が可能で、9Pファイルシステムインターフェイスを備え、
古典的ウィンドウ管理とacme-likeなタイル型ウィンドウ管理をサポートする。[[BR]]
小さくて洗練されたハックし易く美しいコードベースである様にメンテナンスされている。

== 開発言語 ==
C言語で記述されたコアとPlan 9 rc、或いはPOSIX shサブセットで記述され
たスクリプトで構成される。[[BR]]
コア側の変更可能な全ての設定をファイルシステムに実装した事で、原理的には
ファイルI/Oのあるモノなら、どんなものでもこの付属するスクリプトの代替と
なる。
このファイルシステムによる実装はユーザー側への最大限の自由を保証し、且つ、
動的な設定変更を可能にしている。[[BR]]
但し、ファイルI/Oが有っても、コア側が提供するファイルシステムの理解する
9Pを直接喋る事が出来なければ、
 * libixp付属のixpc
 * plan9portの9P
 * v9fs
 * Inferno
等を使用して、このファイルシステムをユーザーランドプログラムが通常のファイル
として使用出来る様にマウントする必要が有る。

== 設定ファイル ==
*nixアプリケーションで常用される伝統的な${HOME}/.*rcにそのまま該当
する静的な設定ファイルは存在しない。[[BR]]
wmiiの設定は、ビルド時に決まるグローバルなスクリプト
 * ${ETC}/wmii${CONFVERSION}/rc.wmii
 * ${ETC}/wmii${CONFVERSION}/wmiirc
か、ユーザー毎のローカルなスクリプト
 * ${HOME}/wmii${CONFVERSION}/rc.wmii
 * ${HOME}/wmii${CONFVERSION}/wmiirc
が起動時、或いはユーザーのアクションに応じて、コア側が提供するファイル
システムに適当な内容を書き込む事で動的に設定される。
それぞれ前者はPlan 9 rcで、後者はPOSIX shサブセットで記述されている。[[BR]]
Plan 9 rcが利用出来る場合、wmiiはデフォルトではrc.wmiiを使用する。
この場合、
 * ${HOME}/wmii${CONFVERSION}/rc.wmii.local
と言う別のファイルに記述されたスクリプトでデフォルトのスクリプトの内容の
一部、或いは全てをオーバーロードする事が出来る。

== フォント ==
wmiiの使用するフォントの設定は、X論理フォント記述(X Logical Font
Description, XLFD)である。[[BR]]
適当なUTF-8なフォントが用意出来れば、wmiiは内部でlibiconvとlibutfを
使用しているのでマルチバイト文字の表示も可能である。[[BR]]
適当なXLFDを見つける為には、xfontsel等を利用すると良い。[[BR]]
なお,changeset 2458 f4cd1cc8e757にて、Xftのサポートが追加された。[[BR]]

== 用語 ==
以下、wmiiで使われる用語に関して記述する。
 * ディスプレイ[[BR]]
   入力デバイスとスクリーンで構成される動作中のXサーバ。
 * スクリーン[[BR]]
   Xディスプレイの物理的、或いは(XineramaやXnestによる)仮想的な
   表示領域。スクリーンはバー用のウィンドウとヴューを同時に表示する。
 * ウィンドウ[[BR]]
   スクリーン上の(矩形の)描画可能なXオブジェクト。
   通常はアプリケーションウィンドウの事。
 * クライアント[[BR]]
   ボーダーとタイトルバーで包含されるフレームウィンドウで囲まれた
   アプリケーションウィンドウ。
 * フローティングレイヤ[[BR]]
   wmiiのスクリーンレイヤの一つで、他のどのレイヤよりも手前に在り、
   クライアントは古典的な(浮遊する様な)方法で配置される。
   このレイヤにあるクライアントはサイズの変更や移動が自由に行える。
 * 管理レイヤ[[BR]]
   フローティングレイヤの背後に在るレイヤで、クライアントは重なり
   合わない様に配置される。ここでは、ウィンドウマネージャ側が動的
   にそれぞれのクライアントのサイズと位置を割り当てる。
   管理レイヤは複数のカラムで構成される。
 * タグ[[BR]]
   クライアントに割り当てる事の出来る英数字による文字列。
   これは複数のクライアントを属性によってグループ化するメカニズムを
   提供する。クライアントは一つ、或いは複数のタグを持つ事が出来る。
   例えば、work、work+mail。タグは記号+で分離される。
 * ヴュー[[BR]]
   特定のタグで制限されるクライアントの集合。他のウィンドウマネージャ
   のワークスペースと良く似ている。フローティングレイヤと管理レイヤで
   構成される。
 * カラム[[BR]]
   クライアントが重なり合わない様に垂直に配置されるスクリーンの或る領域。
   カラムはクライアントを等サイズにする、スタックする、最大化すると言う
   三つの異なるモードを提供する。クライアントはカラム内及びカラム間で
   サイズ変更や移動が自由に行える。
 * バー[[BR]]
   それぞれのヴューのラベルと特に制限の無いユーザー定義ラベルを表示する
   事が出来るスクリーンの下部の領域。
 * イベント[[BR]]
   wmiiのファイルシステムの特別なファイルから読み出す事の出来るメッセージ。
   マウスボタン押下、キー押下、別の9Pクライアントによって書き込まれた
   メッセージ等。

== キーバインド ==
以下、デフォルトで使用されるキーバインドについて説明する。
なお、これらのキーバインドは設定ファイルであるスクリプトで動的に設定される。
故に、当該部分のスクリプトを変更する事でキーバインドは如何様にでも変更可能である。
デフォルトでは$MODKEYにはMod1(大抵のキーボードでAlt)が使われている。

 * $MODKEY-Space[[BR]]
   管理レイヤとフローティングレイヤをトグルする。
   この際、選択されたクライアントのレイヤ間の移動は行われない。
 * $MODKEY-d[[BR]]
   現在選択しているクライアントが管理レイヤにある場合、
   現在選択しているクライアントの属するカラムのモードをクライアントを
   等サイズにするモードにする。
   現在選択しているクライアントがフローティングレイヤにある場合は、
   何もしない。
 * $MODKEY-s[[BR]]
   現在選択しているクライアントが管理レイヤにある場合、
   現在選択しているクライアントの属するカラムのモードをクライアントを
   スタックするモードにする。
   現在選択しているクライアントがフローティングレイヤにある場合は、
   何もしない。
 * $MODKEY-m[[BR]]
   現在選択しているクライアントが管理レイヤにある場合、
   現在選択しているクライアントの属するカラムのモードをクライアントを
   最大化するモードにする。
   現在選択しているクライアントがフローティングレイヤにある場合は、
   何もしない。
 * $MODKEY-a[[BR]]
   $WMII_MENUによるアクションランチャーが起動する。
   デフォルトでは$WMII_MENUにはdmenuが使用される。
 * $MODKEY-p[[BR]]
   $WMII_MENUによるプログラムランチャーが起動する。
   デフォルトでは$WMII_MENUにはdmenuが使用される。
 * $MODKEY-t[[BR]]
   このキーバインドを入力した後に、
   タグを一つ入力する事で、
   入力したタグに対応するヴューに切り替える。
 * $MODKEY-Return[[BR]]
   $WMII_TERMをバックグラウンドで起動する。
   デフォルトでは$WMII_TERMはxtermである。
 * $MODKEY-Shift-Space[[BR]]
   管理レイヤとフローティングレイヤをトグルする。
   この際、選択されたクライアントのレイヤ間の移動が行われる。
 * $MODKEY-f[[BR]]
   現在選択しているクライアントが管理レイヤおよびフローティングレイヤにある場合、
   そのクライアントをフルスクリーン表示する。
   クライアントがフルスクリーン表示されている場合は、これを元の管理レイヤ、
   或いはフローティングレイヤに戻す。
 * $MODKEY-Shift-c[[BR]]
   クライアントを終了する(killする)。
 * $MODKEY-Shift-t[[BR]]
   このキーバインドを入力した後に、
   記号+で分離された一つ以上のタグを入力する事で、
   現在選択しているクライアントにタグを付加する。
 * $MODKEY-$LEFT[[BR]]
   現在選択しているクライアントが管理レイヤにある場合、
   現在選択しているクライアントの属するカラムの左側のカラムに属する
   クライアントを選択する。
   デフォルトでは$LEFTはhである。
   現在選択しているクライアントがフローティングレイヤにある場合は、
   何もしない。
 * $MODKEY-$RIGHT[[BR]]
   現在選択しているクライアントが管理レイヤにある場合、
   現在選択しているクライアントの属するカラムの右側のカラムに属する
   クライアントを選択する。
   デフォルトでは$RIGHTはlである。
   現在選択しているクライアントがフローティングレイヤにある場合は、
   何もしない。
 * $MODKEY-$DOWN[[BR]]
   現在選択しているクライアントが管理レイヤにある場合、
   現在選択しているクライアントの属するカラムの下側のクライアントを
   選択する。
   デフォルトでは$DOWNはjである。
   現在選択しているクライアントがフローティングレイヤにある場合、
   フローティングレイヤに二つ以上のクライアントが存在すれば、
   現在選択しているクライアントとは別のクライアントを選択する。
   クライアントが選択される順序は$MODKEY-$UPの場合と逆順になる。
 * $MODKEY-$UP[[BR]]
   現在選択しているクライアントが管理レイヤにある場合、
   現在選択しているクライアントの属するカラムの上側のクライアントを
   選択する。
   デフォルトでは$UPはkである。
   現在選択しているクライアントがフローティングレイヤにある場合、
   フローティングレイヤに二つ以上のクライアントが存在すれば、
   現在選択しているクライアントとは別のクライアントを選択する。
   クライアントが選択される順序は$MODKEY-$DOWNの場合と逆順になる。
 * $MODKEY-Shift-$LEFT[[BR]]
   現在選択しているクライアントが管理レイヤにある場合、
   現在選択しているクライアントの属するカラムの左側のカラムに
   クライアントを移動する。
   移動先である左側のカラムが存在しない場合には、
   クライアントの移動時に左側のカラムが動的に作成される。
   移動元のカラムにクライアントが一つも存在しなくなる場合には、
   クライアントの移動時に移動元のカラムは動的に破棄される。
   デフォルトでは$LEFTはhである。
   現在選択しているクライアントがフローティングレイヤにある場合は、
   何もしない。
 * $MODKEY-Shift-$RIGHT[[BR]]
   現在選択しているクライアントが管理レイヤにある場合、
   現在選択しているクライアントの属するカラムの右側のカラムに
   クライアントを移動する。
   移動先である右側のカラムが存在しない場合には、
   クライアントの移動時に右側のカラムが動的に作成される。
   移動元のカラムにクライアントが一つも存在しなくなる場合には、
   クライアントの移動時に移動元のカラムは動的に破棄される。
   デフォルトでは$RIGHTはlである。
   現在選択しているクライアントがフローティングレイヤにある場合は、
   何もしない。
 * $MODKEY-Shift-$DOWN[[BR]]
   現在選択しているクライアントが管理レイヤにある場合、
   現在選択しているクライアントの属するカラムの下側に
   クライアントを移動する。
   デフォルトでは$DOWNはjである。
   現在選択しているクライアントがフローティングレイヤにある場合は、
   何もしない。
 * $MODKEY-Shift-$UP[[BR]]
   現在選択しているクライアントが管理レイヤにある場合、
   現在選択しているクライアントの属するカラムの上側に
   クライアントを移動する。
   デフォルトでは$UPはkである。
   現在選択しているクライアントがフローティングレイヤにある場合は、
   何もしない。
 * $MODKEY-$i[[BR]]
   ヴューを$iに切り替える。
   $iには0, 1, 2, 3, 4, 5, 6, 7, 8, 9が使用出来る。
   これ以外のヴューに切り替える時は、$MODKEY-tを使用する。
 * $MODKEY-Shift-$i[[BR]]
   現在選択しているクライアントのタグを$iとする。
   $iには0, 1, 2, 3, 4, 5, 6, 7, 8, 9が使用出来る。
   これ以外のタグを付加する時は、$MODKEY-Shift-tを使用する。

== 9ishなメモ(深追い専用) ==
 * libixp - for 9P
 * libutf - for UTF-8 and Unicode
 * libfmt - for formatted print
 * libbio - for buffered I/O
 * libregexp9 - for Unicode-capable regular expression
 * rc - Plan 9 shell

== スクリーンショット ==
[[Thumb(WIMP_is_dead.png, size=large, caption=wmii(hiyuh氏提供))]]

== 関連リンク ==
 * http://wmii.suckless.org/ (オフィシャルサイト)
 * http://en.wikipedia.org/wiki/wmii (Wikipedia英語)
 * http://ja.wikipedia.org/wiki/wmii (Wikipedia日本語)