twm(1) X ウィンドウシステム用のタブウィンドウマネージャ(Tab Window Manager)

書式

twm [ -display dpy ] [ -s ] [ -f initfile ] [ -v ]

説明

twm は X ウィンドウシステム用のウィンドウマネージャである。この ウィンドウマネージャは、タイトルバー、非矩形ウィンドウ、複数の方法での アイコン管理、ユーザ定義マクロ関数、キーボードフォーカス変更におけるク リックとポインタ移動の両方のサポート、ユーザ定義のキーとポインタのボタ ンの関連づけ等の機能を持つ。

通常、このプログラムはセッションマネージャか起動スクリプトによって起動 される。セッションマネージャを使わずに xdm(1) または xinit(1) から起動するときには、twm は最後のクライアントと してフォアグラウンドで実行されることが多い。このように実行した場合、 twm を終了するとセッションは終了する(つまりログアウトとなる)。

デフォルトではアプリケーションのウィンドウは、上部にタイトルバーがあり、 ウィンドウの周りの特別な境界である「フレーム」で囲まれる。タイトルバー には、ウィンドウの名前、キーボードから入力できる時にハイライト状態にな る長方形領域がある。またタイトルバーの右端と左端には「タイトルボタン」 として知られる機能ボタンがある。

タイトルボタン上でポインタのボタン1(xmodmap を使って変更していな ければ、普通は左端のボタン)を押すと、そのボタンに関連づけられた機能が 呼び出される。 デフォルトのインタフェースでは、左のタイトルボタン(点のように見えるボ タン)をクリックする(ボタンを押し、すぐ離す)とウィンドウがアイコン化さ れる。 対応するアイコンかアイコンマネージャのエントリをクリックするとアイコ ン化を解除することができる(変数 ShowIconManager または関数 f.showiconmgr の説明を参照すること)。

右のタイトルボタン(四角が入れ子になっているもの)を押し、移動させたい辺 を越えてポインタをドラッグし、ウィンドウの外形が望むようになったときに ポインタを離すことにより、ウィンドウのサイズ変更を行うことができる。同 様に、タイトルやハイライト領域を押し、ウィンドウの外形を新しい位置にド ラッグし、外形が望む位置に移動したときに離すことにより、ウィンドウを移 動させることができる。タイトルやハイライト領域を単にクリックすると、ウィ ンドウを移動させずに最前面に出すことができる。

新しいウィンドウを生成する際には、twm はユーザが要求したサイズと 位置の情報を優先して扱う(通常はコマンド行オプション -geometry または個々のアプリケーションのリソースで指定される)。 これが指定されていない場合には、ウィンドウのデフォルトの大きさの外形、 タイトルバー、ウィンドウを 3x3 の格子に区切る線が表示される。これはポ インタの動きに従って移動する。 ポインタのボタン1を押すと、ウィンドウが現在の位置にデフォルトの大きさ で配置される。ボタン2(通常は真ん中のボタン)を押して外形をドラッグする と、ウィンドウは現在の位置に配置されるが、前で説明した方法でリサイズす ることができる。ボタン3(通常はポインタの右ボタン)をクリックすると、ウィ ンドウは現在の位置に配置されるが、ウィンドウの高さをスクリーンの最下部 まで届くように変更しようとする。

オプション

Twm に対しては、以下のコマンド行オプションが指定できる。

-display dpy
利用する X サーバを指定する。
-s
デフォルトのスクリーン(-display オプションや DISPLAY 環境 変数で指定する)だけを管理することを指定する。デフォルトでは、twm はディスプレイ上の全てのスクリーンを管理しようとする。
-f filename
使用する設定ファイルの名前を指定する。デフォルトでは twm はユー ザのホームディレクトリの .twmrc.num (num はスクリーン番号) または .twmrc という名前のファイルを探す。
-v
twm が予期しない X のエラーイベントを受け取ったとき、必ずエラー メッセージを出力するように指定する。このオプションはアプリケーションの デバッグ時には便利であるが、通常の使用時には邪魔かもしれない。

カスタマイズ

twm の見栄えと挙動のほとんどは設定ファイルで制御できる。設定ファ イルは以下で挙げる場所のいずれかに置かれる(twm の起動時に管理さ れているスクリーンそれぞれに対して順番に検索される)。

$HOME/.twmrc.screennumber
screennumber はスクリーン番号(環境変数 DISPLAY host:displaynum.screennum の最後の数)を表す正の小さい数(0,1等)で あり、そのディスプレイのスクリーンと接続するために用いられる。これは異 なるビジュアルタイプの複数のスクリーンを持つディスプレイのためのもので ある。
$HOME/.twmrc
個別ユーザの設定ファイルの通常の名前である。
<XRoot>/lib/X11/twm/system.twmrc
先に挙げたファイルのいずれも見つからない場合、twm はこのファイル を使ってデフォルトの設定を行う。サイト管理者がこのファイルを修正してメ ニューを便利にしたり、初心者に使いやすい操作にすることも多い。<XRoot> は X11 をインストールしたディレクトリを指す。

設定ファイルがまったく無い場合には、twm は上述のような組み込みの デフォルトの動作をする。twm が使う唯一のリソースは bitmapFilePath である。これはビットマップファイルを探すときに検 索するディレクトリをコロンで区切って並べたリストである(詳しくは Athena Widgets のマニュアルと xrdb(1) を参照すること)。

Twm の設定ファイルの内容は論理的には3つのタイプ指定、すなわち 変数関連づけメニューに分類できる。変数 セ クションにはフォント、色、カーソル、境界幅、アイコンとウィンドウの配置、 ハイライト、自動レイズ、タイトルバーのレイアウト、ワープ、アイコンマネー ジャの利用について記述する。このセクションは最初でなければならない。 関連づけ セクションは普通は2番目にある。このセクションでは、キー ボードやアイコン、タイトル、フレームの内側でキーボードやボタンが押され たときに呼び出される関数を指定する。メニュー セクションでは、ユー ザ定義のメニューを設定する(呼び出される関数や実行されるコマンドも指定 する)。

変数名やキーワードでは大文字・小文字は区別されない。文字列はダブルクォー ト文字で括らなければならず(例: "blue")、また大文字・小文字は区別される。 文字列の外側にポンド記号(#)があると、その行における以降の部分はコメン トとして扱われる。

変数

twm のユーザインタフェースは、ユーザ各自の設定ファイルを設定するこ とにより、さまざまな点を制御できる。オプションには特定キーワードの有無に よって有効・無効になるものや、キーワード、数値、文字列、ま たはこれらのリストを必要とするものがある。

リストは中括弧("{}")で括られ、要素は普通、空白文字か改行で区切られる。 以下に例を示す:

AutoRaise { "emacs" "XTerm" "Xmh" }

または

AutoRaise
{
   "emacs"
   "XTerm"
   "Xmh"
}

ウィンドウを表す文字列のリストを含む変数を調べる場合(例えば、先に述べ た自動レイズの有効・無効を指定する場合)、文字列はウィンドウ名(ウィンド ウの WM_NAME プロパティで与えられる)、リソース名、クラス名(いずれもウィ ンドウの WM_NAME プロパティで与えられる)に対して大文字・小文字も含めて 正確に一致しなければならない。先に挙げた例では、``emacs'' という名前の ウィンドウ、任意の xterm のウィンドウ(クラスが ``XTerm'' だから)、 任意の xmh のウィンドウ(クラスが ``Xmh'' だから)の自動レイズが有効とな る。

ファイル名として解釈される文字列である引き数(後述の Pixmaps, Cursors, IconDirectory を参照)は、最初の文字がチルダ (~)ならばユーザのディレクトリ(環境変数 HOME で指定される)の後に 追加される。最初の文字がコロン(:)ならば、その名前はデフォルトのタイト ルバーのシンボルを生成するために使われる内部ビットマップのどれかを参照 しているものとして扱われる。利用できるビットマップは :xlogo または :delete (どちらも X のロゴを指す), :dot または :iconify (どちらも点を指す), :resize (リサイズのボタンに使われる入れ子になっている四角形), :menu (線が入ったページ), :question (存在しないビットマップファイルに対して使われる疑 問符)である。

以下の変数は twm 設定ファイルの先頭で使うことができる。ウィンド ウ名プレフィックス文字列のリストは win-list で示す。 省略可能な引き数は大括弧("[]")内に示す。

AutoRaise { win-list }
この変数は、ポインタがウィンドウ内部に入ったときに自動的にレイズされる ウィンドウのリストを指定する。関数 f.autoraise を使ってこの動作 を個別のウィンドウに対して対話的に有効/無効にすることができる。
AutoRelativeResize
この変数はウィンドウサイズをドラッグで調整するとき(最初にポインタのボ タン2でウィンドウサイズを指定するときや、サイズ変更を行うとき)、ポイン タがウィンドウの端をまたぐのを待たないように指定する。 その代わりに、ポインタに最も近い辺(複数のこともある)が、ポインタを動か したのと同じ量だけ自動的に移動する。これにより、スクリーンの端から外に 出るようなウィンドウのサイズ変更が可能になる。 ポインタがウィンドウの中心にある場合、またはサイズ変更がタイトルボタン を押して始められた場合は、twm はポインタが(不慮の事態を避けるた め)ウィンドウの辺をまたぐのを待つ。このオプションは、「ボタンを押す-ド ラッグ-ボタンを離す」という操作でウィンドウを広げるのを好むユーザには 大変便利である。
BorderColor string [{ wincolorlist }]
この変数は、アイコン化されていない全てのウィンドウを囲むウィンドウ境界 のデフォルトの色を指定する。この変数には Color, Grayscale, Monochrome いずれかのリストしか指定できない。オプションの wincolorlist は、異なるタイプのウィンドウに対して特定の境界色を 指定するための、ウィンドウと色の組のリストを指定する。 例を以下に示す:

BorderColor "gray50"
{
   "XTerm"  "red"
   "xmh" "green"
}

デフォルト値は "black" である。

BorderTileBackground string [{ wincolorlist }]
この変数は、ハイライトされていない時の境界(NoHighlight が設定 されていない時だけ)で使われる灰色のパターンにおけるデフォルトの背景色 を指定する。この変数には Color, Grayscale, Monochrome のいずれかのリストしか指定できない。オプションの wincolorlist を 使って、ウィンドウごとに色を指定することができる。 デフォルト値は "white" である。
BorderTileForeground string [{ wincolorlist }]
この変数は、ハイライトされていない時の境界(NoHighlight が設定 されていない時だけ)で使われる gray パターンにおけるデフォルトの前景色 を指定する。この変数には Color, Grayscale, Monochrome のいずれかのリストしか指定できない。オプションの wincolorlist を使って、ウィンドウごとに色を指定することができる。
BorderWidth pixels
この変数は ClientBorderWidth が指定されていない場合に使われる、 全てのクライアントのフレームの周りの境界の幅をピクセル数で指定する。 この値は twm が作るウィンドウ(アイコンマネージャ等)の境界幅の設 定にも使われる。デフォルト値は2である。
ButtonIndent pixels
この変数は、タイトルボタンが両端からインデントされる量を指定する。正の 値を指定すると、ウィンドウのテキストとハイライト領域が目立つようにする ため、ボタンはこれらの領域よりも小さくなる。この変数と TitleButtonBorderWidth の値を 0 にすると、タイトルボタンはできる 限り大きくなる。デフォルト値は1である。
ClientBorderWidth
この変数はウィンドウのフレームの境界幅に BorderWidth の値ではな く、ウィンドウの初期境界幅を設定するように指定する。
Color { colors-list }
この変数は、デフォルトのディスプレイで白黒以外の表示が可能ならば行われ る、色の割り当てのリストを指定する。colors-list は以下の色変数と その値からなる: DefaultBackground, DefaultForeground, MenuBackground, MenuForeground, MenuTitleBackground, MenuTitleForeground, MenuShadowColor, PointerForeground, PointerBackground. 以下の色変数においては、ウィンドウと色名の組を与えてウィンドウごとの色 を指定することができる(詳しくは BorderColor を参照)。 BorderColor, IconManagerHighlight, BorderTitleBackground, BorderTitleForeground, TitleBackground, TitleForeground, IconBackground, IconForeground, IconBorderColor, IconManagerBackground, IconManagerForeground. 例を示す:

Color
{
   MenuBackground "gray50"
   MenuForeground "blue"
   BorderColor    "red" { "XTerm" "yellow" }
   TitleForeground"yellow"
   TitleBackground"blue"
}

これらの色変数の全ては、Monochrome 変数に対しても指定することが でき、カラーディスプレイとモノクロディスプレイで同じ設定ファイルを使う ことができる。

ConstrainedMoveTime milliseconds
この変数は、制約付きの移動操作を始めるために必要なボタンのクリックの時 間間隔を指定する。f.move が呼び出された時、この時間以内にダブル クリックされれば、ウィンドウは水平または垂直方向にしか動かなくなる。こ の値に0を指定すると、制約付きの移動は無効にされる。デフォルト値は400ミ リ秒である。
Cursors { cursor-list }
この変数は、twm が各種ポインタカーソルに使うグリフを指定する。カー ソルはそれぞれ cursor フォントかビットマップファイルで定義できる。 cursor フォントから得る形状は、次のようにして直接指定することが できる:

   cursorname  "string"

ここで cursorname は後述するカーソル名の1つであり、string は<XRoot>/include/X11/cursorfont.h ファイルに記述されているグリフ名で ある(ただしプレフィックス ``XC_'' は取り除く)。 カーソルフォントがビットマップファイルで定義されている場合には、代わり に次の記法を用いる:

   cursorname  "image""mask"

文字列 imagemask は、グリフとマスクのイメージ (bitmap(1) 形式)を持つファイルの名前を示す。 ビットマップファイルはアイコンのビットマップファイルと同じように配置する。 以下の例は、デフォルトのカーソル定義を表すものである:

Cursors
{
   Frame    "top_left_arrow"
   Title    "top_left_arrow"
   Icon     "top_left_arrow"
   IconMgr  "top_left_arrow"
   Move     "fleur"
   Resize      "fleur"
   Menu     "sb_left_arrow"
   Button      "hand2"
   Wait     "watch"
   Select      "dot"
   Destroy  "pirate"
}

DecorateTransients
この変数は、一時ウィンドウ(WM_TRANSIENT_FOR プロパティを持つウィンドウ) がタイトルバーを持つことを指定する。デフォルトでは、一時ウィンドウはリ ペアレントされない。
DefaultBackground string
この変数は、サイズ表示と情報ウィンドウで用いる背景色を指定する。デフォ ルト値は "white" である。
DefaultForeground string
この変数は、サイズ表示と情報ウィンドウで用いる前景色を指定する。デフォ ルト値は "black" である。
DontIconifyByUnmapping { win-list }
この変数は、(IconifyByUnmapping が設定されている場合のように) 単にウィンドウをアンマップしただけではアイコン化されないウィンドウのリ ストを指定する。これは、アイコンとして扱いたいウィンドウもアイコンマネー ジャに扱わせたいウィンドウもある場合によく用いられる。
DontMoveOff
この変数はウィンドウのスクリーンの外側への移動をできなくする。この設定 は f.forcemove 関数で上書きできる。
DontSqueezeTitle [{ win-list }]
この変数は、後述する SqueezeTitle のようにタイトルバーをスクイー ズしてサイズを最小にするという動作を行わないことを示す。 オプションのウィンドウリストを与えた場合、指定したウィンドウだけがスク イーズされないようになる。
ForceIcons
この変数は、Icons 変数で指定したアイコンのピックスマップをクライ アントが持っているピックスマップより優先させることを指定する。
FramePadding pixels
この変数は、タイトルバーのデコレーション(ボタンとテキスト)とウィンドウ の枠の間の距離を指定する。デフォルト値は2ピクセルである。
Grayscale { colors }
この変数は、スクリーンのデフォルトのビジュアルが GrayScale の場合に作 る色の割り当てリストを指定する。Colorsの 説明を参照すること。
IconBackground string [{ win-list }]
この変数はアイコンの背景色を指定する。これは Color, Grayscale, Monochrome リストの内部でしか指定できない。 オプションの win-list はウィンドウ名と色のリストであり、これを使っ てウィンドウごとの色を指定することができる。win-list の詳しい説 明については BorderColor 変数を参照すること。 デフォルト値は "white" である。
IconBorderColor string [{ win-list }]
この変数はアイコンのウィンドウの境界に用いる色を指定する。これは Color, Grayscale, Monochrome リストの内部でしか指定できない。 オプションの win-list はウィンドウ名と色のリストであり、これを使っ てウィンドウごとの色を指定することができる。win-list の詳しい説 明については BorderColor 変数を参照すること。 デフォルト値は "black" である。
IconBorderWidth pixels
この変数は、アイコンのウィンドウ周りの境界幅をピクセル数で指定する。デ フォルト値は2である。
IconDirectory string
この変数は bitmapFilePath で指定されたどのディレクトリでも見つか らないビットマップファイルを探すディレクトリを指定する。
IconFont string
この変数は、アイコンウィンドウでアイコン名の表示に使うフォントを指定す る。デフォルト値は "variable" である。
IconForeground string [{ win-list }]
この変数はアイコンを表示するときに使う前景色を指定する。これは Color, Grayscale, Monochrome リストの内部でしか指定 できない。 オプションの win-list はウィンドウ名と色のリストであり、これを使っ てウィンドウごとの色を指定することができる。win-list の詳しい説 明については BorderColor 変数を参照すること。 デフォルト値は "black" である。
IconifyByUnmapping [{ win-list }]
この変数は、アイコンを割り当てずに、ウィンドウをアンマップすることによっ てアイコン化を行うことを指定する。これは、ユーザがアイコンマネージャや f.warpto 関数、TwmWindows メニューを使ってウィンドウを再マッ プすることを想定している。 オプションの win-list が指定された場合は、指定されたウィンドウだ けがアンマップによってアイコン化される。このオプションと IconManagerDontShow オプションの両方が設定されているウィンドウ は、ユーザの設定ファイルで TwmWindows に関連づけられていなければ アクセスできなくなってしまう。
IconManagerBackground string [{ win-list }]
この変数はアイコンマネージャのエントリで使う背景色を指定する。これは Color, Grayscale, Monochrome リストの内部でしか指定 できない。 オプションの win-list はウィンドウ名と色のリストであり、これを使っ てウィンドウごとの色を指定することができる。win-list の詳しい説 明については BorderColor 変数を参照すること。 デフォルト値は "white" である。
IconManagerDontShow [{ win-list }]
この変数を設定すると、アイコンマネージャはウィンドウを全く表示しない。 オプションの win-list を指定すると、指定したウィンドウだけが表示 されなくなる。この変数を使うと、滅多にアイコン化しないウィンドウ (xclockxload等)がアイコンマネージャ上に場所を取るのを避 けることができる。
IconManagerFont string
この変数はアイコンマネージャのエントリを表示するときに使うフォントを 指定する。デフォルト値は "variable" である。
IconManagerForeground string [{ win-list }]
この変数はアイコンマネージャのエントリを表示するときに使う前景色を指 定する。これはColor, Grayscale, Monochrome リストの 内部でしか指定できない。 オプションの win-list はウィンドウ名と色のリストであり、これを使っ てウィンドウごとの色を指定することができる。win-list の詳しい説 明については BorderColor 変数を参照すること。 デフォルト値は "black" である。
IconManagerGeometry string [ columns ]
この変数はアイコンマネージャのウィンドウのジオメトリを指定する。引き数 string は標準的なジオメトリ指定であり、アイコンマネージャの初期 状態における全体のサイズを指定する。その後、アイコンマネージャのウィン ドウは columns 個のカラムに分割され、アイコンマネージャが管理する エントリの数に従って拡大・縮小される。追加のエントリは折り返され、 追加の列となる。デフォルトのカラム数は1である。
IconManagerHighlight string [{ win-list }]
この変数は、現在フォーカスを持っているアイコンマネージャのエントリを ハイライトさせるときに使う境界の色を指定する。これはColor, Grayscale, Monochrome リストの内部でしか指定できない。 オプションの win-list はウィンドウ名と色のリストであり、これを使っ てウィンドウごとの色を指定することができる。win-list の詳しい説 明については BorderColor 変数を参照すること。 デフォルト値は "black" である。
IconManagers { iconmgr-list }
この変数は生成するアイコンマネージャのリストを指定する。 iconmgr-list の各アイテムのフォーマットは以下である。

   "winname" ["iconname"]"geometry" columns

ここで、winname はこのアイコンマネージャに入れるウィンドウの名前、 iconname はアイコンマネージャのウィンドウのアイコンの名前、 geometry は標準のジオメトリ指定、columns はこのアイコンマ ネージャにカラム数(IconManagerGeometry で説明)である。以下に例を 示す:

IconManagers
{
   "XTerm"  "=300x5+800+5"5
   "myhost" "=400x5+100+5"2
}

名前かクラスが ``XTerm'' であるクライアントは、``XTerm'' というアイコ ンマネージャ内にエントリが生成される。名前が ``myhost'' であるクライ アントは ``myhost'' というアイコンマネージャに入れられる。

IconManagerShow { win-list }
この変数は、アイコンマネージャに表示するウィンドウのリストを指定する。 IconManagerDontShow 変数と組み合わせて用いた場合、このリストに含 まれるウィンドウだけがアイコンマネージャに表示される。
IconRegion geomstring vgrav hgrav gridwidth gridheight
この変数は、クライアントがアイコンの位置を指定しなかった場合にアイコン を配置するルートウィンドウ上の領域を指定する。geomstring は、標 準のジオメトリ指定を行うクォートされた文字列である。 複数の IconRegion が与えられた場合、アイコンは最初に指定した領域 から順に埋められていく。 引き数 vgravNorth または South のどちらかでなけ ればならない。この値を使って、アイコン領域の上部と下部のどちらから配置 していくかを制御する。同様に、hgravEast またはWest でなければならない引き数で、右辺と左辺のどちらからアイコンを配置してい くかを制御する。アイコンは、アイコン領域内で幅が gridwidth ピク セルで高さがgridheight ピクセルのセルを持つ格子内に配置される。
Icons { win-list }
この変数はウィンドウ名と、そのアイコンとして使うビットマップのファイル 名のリストを指定する。以下に例を示す:

Icons
{
   "XTerm"  "xterm.icon"
   "xfd"    "xfd_icon"
}

``XTerm'' にマッチし、アンマップによるアイコン化が行われないウィンドウ は、ファイル ``xterm.icon'' が持つビットマップアイコンを使おうとする。 ForceIcons が指定されている場合には、クライアントが自分自身のア イコンピックスマップの利用をリクエストしていても、このビットマップが使 われる。

InterpolateMenuColors
この変数はメニューエントリの色はエントリ固有の色を補間して求めるこ とを指定する。以下に例を示す:

Menu "mymenu"
{
   "Title"     ("black":"red")f.title
   "entry1"       f.nop
   "entry2"       f.nop
   "entry3" ("white":"green")f.nop
   "entry4"       f.nop
   "entry5" ("red":"white")f.nop
}

``entry1'' と ``entry2'' の前景色は black と white を補間して求められ、 背景色は red と green を補間して求められる。 同様に、``entry4'' の前景色は white と red の中間色になり、背景色は green と white の中間色となる。

MakeTitle { win-list }
この変数は、ウィンドウ上部にタイトルバーを配置するウィンドウのリストを 指定する。また、NoTitle が設定されているときに、特定ウィンドウ にタイトルを要求するために用いる。
MaxWindowSize string
この変数は、与えられたウィンドウの最大サイズを与える幅と高さであるジオ メトリを指定する。通常、これはウィンドウのサイズをスクリーンのサイズに 制限するために使われる。デフォルトの幅は (32767 - スクリーンの幅) であ り、デフォルトの高さは (32767 - スクリーンの高さ) である。
MenuBackground string
この変数はメニューで使う背景色を指定する。これはColor, Grayscale, Monochrome リストの内部でしか指定できない。 デフォルト値は "white" である。
MenuFont string
この変数は、メニューの表示に使うフォントを指定する。デフォルト値は "variable" である。
MenuForeground string
この変数はメニューで使う前景色を指定する。これはColor, Grayscale, Monochrome リストの内部でしか指定できない。デフォ ルト値は "black" である。
MenuShadowColor string
この変数はプルダウンメニューの背後の影の色を指定する。これはColor, Grayscale, Monochrome リストの内部でしか指定できない。デフォ ルト値は "black" である。
MenuTitleBackground string
この変数は、メニューの f.title エントリの背景色を指定する。こ れはColor, Grayscale, Monochrome リストの内部でしか 指定できない。デフォルト値は "white" である。
MenuTitleForeground string
この変数は、メニューの f.title エントリの前景色を指定する。こ れはColor, Grayscale, Monochrome リストの内部でしか 指定できない。デフォルト値は "black" である。
Monochrome { colors }
この変数は、スクリーンの深さが1の場合に行われる色割り当てのリストを指 定する。Colors の説明を参照すること。
MoveDelta pixels
この変数は、f.move 関数が動作を始める前にポインタが移動しなけれ ばならないピクセル数を指定する。f.deltastop 関数も参照すること。 デフォルト値は0ピクセルである。
NoBackingStore
この変数は、twm のメニューの再描画をできるだけ少なくするためのバッ キングストアのリクエストをしないことを指定する。これは通常、バッキング ストアの処理よりも再描画の方が早いサーバの場合に用いられる。
NoCaseSensitive
この変数を設定すると、アイコンマネージャにおいてアイコン名をソートする ときに大文字と小文字の区別は行われない。このオプションは通常、アイコン 名の最初の文字を大文字にするアプリケーションとがあるときに用いる。
NoDefaults
このオプションを指定すると、twm はデフォルトのタイトルボタンと関 連づけを与えない。このオプションは、起動ファイルにおいて完全な関連づけ と定義がなされている場合に限って使うべきである。
NoGrabServer
この変数を設定すると、twm はメニューをポップアップさせるときや opaque ウィンドウを移動させるときにサーバをグラブしない。
NoHighlight [{ win-list }]
この変数を設定すると、ポインタの位置を追跡するための境界のハイライトを 行わない。オプションの win-list を与えると、指定したウィンドウに 対してのみハイライトが無効になる。 境界がハイライト状態のとき、これは現在の BorderColor で描画され る。境界がハイライト状態でないときは、現在の BorderTileForegroundBorderTileBackground を使って gray パターンでスティプルする。
NoIconManagers
この変数を設定すると、アイコンマネージャは生成されない。
NoMenuShadows
この変数を設定すると、メニューの背後に影が落ちなくなる。少しメニュー が読みにくくなるだけでメニュー描画の速度が速くなるので、このオプション は通常、遅いサーバの場合に用いられる。
NoRaiseOnDeiconify
この変数を設定すると、アイコン化を解除されたウィンドウがレイズされな くなる。
NoRaiseOnMove
この変数を設定すると、ウィンドウを動かすときにレイズを行わない。これ は、相手ウィンドウの下側にある状態でウィンドウを動かしたいときに使われ る。
NoRaiseOnResize
この変数を設定すると、ウィンドウはサイズ変更時にレイズされない。これ は、相手ウィンドウの下側にある状態でサイズ変更をしたいときに使われる。
NoRaiseOnWarp
この変数を設定すると、f.warpto 関数を使ってポインタをウィンドウ に移動させた際にそのウィンドウはレイズされない。このオプションが設定 されていると、他のウィンドウの陰になっているウィンドウへポインタを移 動させようとすると、このウィンドウではなく、これを隠しているウィンドウ にポインタが移動してしまうことがある(これにより f.warpring は予 期しない挙動を示す)。
NoSaveUnders
この変数を設定すると、メニュー選択後のウィンドウの再描画を最小限にす るためのセーブアンダー機能を使わなくなる。この設定は、セーブアンダーの 処理よりも再描画の方が速いサーバで用いる。
NoStackMode [{ win-list }]
この変数を設定すると、クライアントウィンドウのスタック順変更のリクエ ストは無視されるようになる。オプションの win-list を指定すると、 指定したウィンドウについてのリクエストだけが無視される。この変数は、ア プリケーションが自分自身をウィンドウスタックの前面に絶えずポップアップ するのを防ぐために使われる。
NoTitle [{ win-list }]
この変数を設定すると、ウィンドウにタイトルバーが付かなくなる。オプション の win-list を指定すると、指定されたウィンドウだけにタイトルバー が付かなくなる。 MakeTitle 変数をこのオプションと共に用いて、特定のウィンドウに タイトルバーを付けることができる。
NoTitleFocus
この変数を設定すると、twm はタイトルバーにキーボード入力フォー カスを設定しなくなる。通常は twm は、タイトルバーとアイコンマ ネージャからのフォーカスとキーイベントをアプリケーションに送るように フォーカスを設定する。ポインタが速く動くのに twm の反応が遅い 場合、入力は移動後のウィンドウではなく移動前のウィンドウに送られる。こ のオプションは通常、この「入力のずれ」とフォーカスイベントの扱いに問題 がある古いアプリケーションのバグを避けるために使われる。
NoTitleHighlight [{ win-list }]
この変数を設定すると、タイトルバーのハイライト領域が表示されなくなる。 (ハイライト領域は現在入力フォーカスを持っているウィンドウを示すために 使われる。)オプションの win-list を指定すると、指定されたウィン ドウだけがハイライト領域を持たなくなる。このオプションと SqueezeTitle を設定すると、タイトルバーに必要なスクリーン領域 をかなり減らすことができる。
OpaqueMove
この変数を設定すると、f.move 関数がウィンドウの外形だけでなく 実際にウィンドウを動かすようになる。これにより、ユーザはウィンドウが新 しい位置でどのように見えるかをすぐに知ることができる。このオプションは 普通は高速なディスプレイで使う(NoGrabServer 変数が設定されてい る場合は特に)。
Pixmaps { pixmaps }
この変数は、各種イメージの見た目を定義するピックスマップのリストを指定 する。各エントリは、設定するピックスマップを示すキーワードとビット マップのファイル名の文字列を並べたものである。以下に指定の例を示す:

Pixmaps
{
   TitleHighlight "gray1"
}

デフォルトでは TitleHighlight には「even」スティプルパターンが使 われる。

Priority priority
この変数は twm の優先度を設定する。priority はクォートされ ていない符号付きの数値である(例: 999)。この変数は、サーバが SYNC 拡張 をサポートしている場合のみ有効である。
RandomPlacement
この変数を設定すると、ジオメトリが指定されていないウィンドウは、ユーザ が外形をドラッグして位置を決めるのではなく、疑似乱数で決めた位置に 配置されるようになる。
ResizeFont string
この変数は、ウィンドウのサイズを変更するときに表示されるサイズ表示の ウィンドウ(dimensions window)で使われるフォントを指定する。
RestartPreviousState
この変数を設定すると、twm はアイコン化するウィンドウや可視状態 を保つウィンドウを通知するために、クライアントウィンドウの WM_STATE プロパティを使おうとする。 このオプションは通常、前のウィンドウマネージャが停止する前のスクリーン の状態を再構築しようとするときに使われる。
SaveColor { colors-list }
この変数はルートウィンドウの _MIT_PRIORITY_COLORS プロパティにピクセル 値として格納される色割り当てのリストを指定する。クライアントは独自のカ ラーマップをインストールする際に、これらの値を保存するかどうか決めるこ とができる。この機構の利用は、アプリケーションが「色化け」問題を避ける ための方法である点に注意すること。この問題は、ウィンドウマネージャがプ ログラムのカスタムカラーをインストールしたときに、ウィンドウの境界やタ イトルバーなどのスクリーンオブジェクトが消えてしまうことである。 変数の設定例を示す:

SaveColor
{
        BorderColor
        TitleBackground
        TitleForeground
        "red"
        "green"
        "blue"
}

この指定を行うと、境界とタイトルバーに対するピクセル値 3 つと色名文字 列に対応するピクセル値 3 つがルートウィンドウに配置される。全てのピク セル値はデフォルトのカラーマップから取得される。

ShowIconManager
この変数を設定すると、twm の起動時にアイコンマネージャが表示さ れるようになる。f.showiconmgr 関数を使うといつでもアイコンマネー ジャを起動することができる。
SortIconManager
この変数を設定すると、アイコンマネージャのエントリは、新しいウィンドウ を単純にエントリの最後に追加するのではなく、アルファベット順にソート するようになる。
SqueezeTitle [{ squeeze-list }]
この変数を指定すると、twm は SHAPE 拡張の使用を試み、タイトルバー がウィンドウの上部全体を占めるのではなく、必要なスクリーン領域だけを使 うようになる。 オプションの squeeze-list を使って、ウィンドウの上部における縮め られたタイトルバーの位置を制御することができる。指定は以下のような形に なる:

   "name"      justificationnumdenom

ここで、name はウィンドウ名であり、justificationleft, center, right のいずれかである。また、 numdenom タイトルバーの相対位置を調整するために与える 比を指定する数値である。この比は、分子が正の数のならば左から右に測り、 負の数ならば右から左に測る。分母が0ならば、分子はピクセル単位で数えら れる。記述を容易にするため、比 0/0 は center に対しては比1/2 と 同じであり、right に対しては -1/1 と同じである。例を以下に示す:

SqueezeTitle
{
   "XTerm"  left  00
   "xterm1" left  13
   "xterm2" left  23
   "oclock" center00
   "emacs"  right 00
}

DontSqueezeTitle のリストを使うと、特定のウィンドウについて縮小 を無効にすることができる。

StartIconified [{ win-list }]
この変数を設定すると、クライアントウィンドウは初期状態でアイコン化さ れた状態になり、ユーザによって明示的にアイコン化解除されるまでそのまま である。オプションの win-list を指定した場合、指定したウィンドウ だけがアイコンの状態で起動される。この変数は、コマンド行オプション やリソースで -iconic をサポートしていないプログラムに対して便利 である。
TitleBackground string [{ win-list }]
この変数はタイトルバーで使われる背景色を指定する。これはColor, Grayscale, Monochrome リストの内部でしか指定できない。 オプションの win-list はウィンドウ名と色のリストであり、これを使っ てウィンドウごとの色を指定することができる。 デフォルト値は "white" である。
TitleButtonBorderWidth pixels
この変数はタイトルボタンの周りの境界の幅をピクセル数で指定する。タイト ルボタンができるだけ広いスペースを確保でき、境界を持たないようにするた め、この変数は普通は 0 に設定される。 デフォルト値は1である。
TitleFont string
この変数は、タイトルバーにおいてウィンドウ名を表示するために使うフォン トを指定する。デフォルト値は "variable" である。
TitleForeground string [{ win-list }]
この変数はタイトルバーの前景色を指定する。これは Color, Grayscale, Monochrome リストの内部でしか指定できない。 オプションの win-list はウィンドウ名と色のリストであり、これを使っ てウィンドウごとの色を指定することができる。 デフォルト値は "black" である。
TitlePadding pixels
この変数は、タイトルバー内での各種ボタン、テキスト、ハイライト領域の間 の距離を指定する。デフォルト値は8ピクセルである。
UnknownIcon string
この変数は、デフォルトのアイコンとして使われるビットマップファイルのファ イル名を指定する。このビットマップファイルは、アイコンのビットマップを 自分で持っておらず、Icons リストにも含まれていない全てのクライア ントのアイコンとして使われる。
UsePPosition string
この変数は、ユーザが位置を指定していない場合に、twm がプログラム が要求した位置(WM_NORMAL_HINTS プロパティの PPosition フラグで与 えられる)を使うかどうか指定する。 引き数 string は、以下の3つの値のうちいずれか1つを取る: twm はプログラムが与えた位置を無視することを示す "off"(デフォルト値), この位置を使用することを示す "on", この位置が (0, 0) 以外ならば使用する "non-zero". 最後のオプションは、古いツールキットにおけるバグの回避のためのものであ る。
WarpCursor [{ win-list }]
この変数を指定すると、アイコン化を解除したときにポインタはそのウィンド ウに移動する。オプションの win-list を指定すると、指定したウィン ドウがアイコン化解除された時に限ってポインタが移動する。
WindowRing { win-list }
この変数は、f.warpring 関数が循環させるウィンドウのリストを指定 する。
WarpUnmapped
この変数を指定すると、f.warpto はアイコン化されているウィンドウ に出会うと、これをアイコン化解除するようになる。これは通常、特定のウィ ンドウ(xmh 等)がどこにあってもポップアップされるようなキーバイン ドを設定するために使われる。f.warpto はデフォルトの動作では、ア イコン化されているウィンドウは全て無視する。
XorValue number
この変数は、移動やサイズ変更に使うウィンドウの外形を描画するときに使う 値を指定する。この変数には、ユーザの一般的なスクリーンと排他的論理和を 取ったときに見分けがつく色になるような値を指定すべきである。デフォルト カラーマップ内で隣接する色がはっきり違っていれば、この変数には1を指定 すると良い結果が得られることが多い。デフォルトでは、twm はテンポ ラリの線を引いて、そのグラフィックス表示から反対の端のカラーマップを得 ようとする。
Zoom [ count ]
この変数を指定すると、ウィンドウのアイコン化とアイコン化解除の際に、ウィ ンドウの動きを示す外形を表示するようになる。オプションの引き数 count を指定すると、この数の外形が描画される。デフォルト値は8で ある。

以下の変数は、フォントの指定が終わった後で指定しなければならない。従っ て、これらは変数セクションの終わりか関連づけセクションの最初に記述する とよい。

DefaultFunction function
この変数は、関連づけが与えられていないキーイベントかボタンイベントを受 け取ったときに実行される関数を指定する。これは通常、f.nop, f.beep, ウィンドウ操作を含むメニュー等に関連づけられる。
WindowFunction function
この変数は、TwmWindows からウィンドウが選択されたときに実行され る関数を指定する。この変数が設定されていなければ、このウィンドウは アイコン化解除され、レイズされる。

関連づけ

必要な変数を設定した後は、関数をタイトルボタン、キー、ポインタボタン に割り当てる。タイトルボタンはタイトルバーの右端または左端から追加され、 指定した順で左から右にタイトルバーに現れる。キーとポインタボタンの関連 づけは、任意の順で良い。

タイトルボタン指定では、ボタンで使うピックスマップの名前と、ボタン上で ポインタボタンが押されたときに呼び出される関数を指定しなければならない。

LeftTitleButton "bitmapname"= function

または

RightTitleButton "bitmapname"= function

bitmapname は、前述のコロンで始まる適切な名前を使って、組み込み ビットマップのいずれか(これはTitleFont にマッチするように拡大・ 縮小される)を指す。

キーとポインタボタンの指定では、押されなければならないモディファイア、 ポインタがスクリーンのどこになければならないか、どの関数が呼び出される かを指定しなければならない。キーは適切なキーシンボル名を含む文字列とし て指定する。ボタンはキーワード Button1-Button5 で指定する。

"FP1"    = modlist : context : function
Button1  = modlist : context : function

modlist は垂直バー(| を意味する)で区切りのモディファイア名の 任意の組合せである。モディファイア名は、shift, control, lock, meta, mod1, mod2, mod3, mod4, mod5 である(それぞれは s, c, l, m, m1, m2, m3, m4, m5 と省略できる)。 同様に、context は垂直バー区切りの window, title, icon, root, frame, iconmgr とこれらを最初の文字で省略したもの(iconmgr の省略形は m)の 任意の組合せ、または all である。例として、デフォルトの設定ファイルの関連づけを以下に示す:

Button1  =  : root: f.menu "TwmWindows"
Button1  = m   : window | icon: f.function "move-or-lower"
Button2  = m   : window | icon: f.iconify
Button3  = m   : window | icon: f.function "move-or-raise"
Button1  =  : title: f.function "move-or-raise"
Button2  =  : title: f.raiselower
Button1  =  : icon: f.function "move-or-iconify"
Button2  =  : icon: f.iconify
Button1  =  : iconmgr: f.iconify
Button2  =  : iconmgr: f.iconify

キーボードを使ったウィンドウ操作を望むユーザは、次のような関連づけを利 用することができる。

"F1"  =  : all    : f.iconify
"F2"  =  : all    : f.raiselower
"F3"  =  : all    : f.warpring "next"
"F4"  =  : all    : f.warpto "xmh"
"F5"  =  : all    : f.warpto "emacs"
"F6"  =  : all    : f.colormap "next"
"F7"  =  : all    : f.colormap "default"
"F20" =  : all    : f.warptoscreen "next"
"Left"   = m   : all: f.backiconmgr
"Right"  = m | s  : all: f.forwiconmgr
"Up"  = m   : all : f.upiconmgr
"Down"   = m | s  : all: f.downiconmgr

Twm は、タイトルバー、メニュー、キーバインディングの設定に簡単 には収められないくらい多くのウィンドウ操作プリミティブを提供している。 デフォルトでは(NoDefaults を指定しなければ)簡単なセットが与えら れているが、大抵のユーザはキーやボタン操作に基本操作のほとんどを関 連づけたいと考えるだろう。これを行うために、twm は名前を各プリミ ティブに対応させ、高レベルのプリミティブを構築するためのユーザ定義 関数と関数を対話的に選択するためのメニューを与える。

ユーザ定義関数は、f.functionの呼び出しで参照される名前と、実行す る他の関数群のリストからなる。その例を以下に示す:

Function "move-or-lower"{ f.move f.deltastop f.lower }
Function "move-or-raise"{ f.move f.deltastop f.raise }
Function "move-or-iconify"{ f.move f.deltastop f.iconify }
Function "restore-colormap"{ f.colormap "default" f.lower }

f.function で使う名前は、関数定義の際の名前と完全に同じでなけれ ばならない。

以下の説明において、選択されたウィンドウを操作するような関数が指定され たが、これがルートメニューから呼び出されている場合、カーソルは Select カーソルに変更され、ボタンが押されたイベントを次に受け取っ たウィンドウが選択される:

! string
これは f.exec string の短縮形である。
f.autoraise
この関数は、選択されたウィンドウにポインタがウィンドウに入ったとき、必 ずレイズされるかどうかをトグルさせる。
f.backiconmgr
この関数は、ポインタを現在のアイコンマネージャ内の前のカラムに移動させ、 必要ならば前の行に戻らせる。
f.beep
この関数はキーボードのベルを鳴らす。
f.bottomzoom
この関数は f.fullzoom と似ているが、スクリーンの下半分を占めるよ うにサイズ変更を行う点が異なる。
f.circledown
この関数は、他のウィンドウを隠している最も上のウィンドウを下面に移動さ せる。
f.circleup
この関数は、他のウィンドウに隠されている最も下のウィンドウを上面に移動 させる。
f.colormap string
この関数は、ポインタがウィンドウ内部にあるときに twm が表示に使 うカラーマップ(そのウィンドウの WM_COLORMAP_WINDOWS プロパティから取得 する)をローテートさせる。引き数 string は、"next", "prev", "default" のいずれかでなければならない。一般にイン ストールされたカラーマップはキーボードフォーカスによって決められる点に 注意すること。 ポインタ移動に基づくキーボードフォーカスの場合は、カラーマップを所有し ているウィンドウのエントリ上のプライベートカラーマップがインストール される。クリックに基づくモデルを使っている場合には、ユーザが対象のウィ ンドウ上でマウスボタンをクリックするまではカラーマップはインストールさ れない。
f.deiconify
この関数は、選択されたウィンドウをアイコン化解除する。ウィンドウがアイ コンでなれば、この関数は何もしない。
f.delete
クライアントアプリケーションが WM_PROTOCOLS ウィンドウプロパティを使っ て WM_DELETE_WINDOW メッセージをリクエストしていた場合、この関数はその メッセージを選択されたウィンドウに送る。アプリケーションは指定されたウィ ンドウを破棄して、そのメッセージに応答することになっている。ウィンドウ が WM_DELETE_WINDOW メッセージを要求していなければ、別の方法を使うよう にユーザに知らせるためにキーボードベルを鳴らす。この関数は f.destroy とは全く異なる点に注意すること。この関数の目的は単独のウィンドウを破棄 することであり、必ずしもアプリケーション全体の破棄ではない。
f.deltastop
この関数を使うと、ポインタが MoveDelta ピクセル以上動いていた場 合に、ユーザ定義の関数を止めることができる。このセクションの冒頭で Function "move-or-raise" として示した定義例を参照すること。
f.destroy
この関数は、選択されたウィンドウを生成したクライアントのディスプレイ接続を閉じるこ とを、X サーバに指示する。この関数は動作中のクライアントを終了させる最 後の手段としてのみ用いるべきである。f.delete も参照すること。
f.downiconmgr
この関数は、ポインタをアイコンマネージャの次の行へ移動させ、必要ならば 次のカラムの先頭へ移動させる。
f.exec string
この関数は、引き数 string を /bin/sh に渡して実行させる。 マルチスクリーンモードにおいて、ディスプレイを指定せずに X クライアン トを起動した場合、クライアントは関数が呼び出されたスクリーンに現れる。
f.focus
この関数は、必要ならばフォーカスの規則をポインタ移動に基づくものから変 更し、サーバのキーボードフォーカスを選択されたウィンドウに切替える。 選択されたウィンドウが既にフォーカスされていた場合、この関数は f.unfocus を実行する。
f.forcemove
この関数は f.move と同様であるが、DontMoveOff 変数を無視す る点だけが異なる。
f.forwiconmgr
この関数は、ポインタを現在のアイコンマネージャ内の次のカラムに移動させ、 必要ならばポインタを次の行の先頭に移動させる。
f.fullzoom
この関数は選択されたウィンドウのサイズをディスプレイ全体のサイズに変え る。ウィンドウが既にズームされている場合には、この関数はウィンドウのサ イズを元に戻す。
f.function string
この関数は、引き数 string で指定した名前を持つユーザ定義関数を実 行する。
f.hbzoom
この関数は f.bottomzoom の別名である。
f.hideiconmgr
この関数は現在のアイコンマネージャをアンマップする。
f.horizoom
この関数は f.zoom と同様であるが、選択されたウィンドウはディスプ レイ全体の幅にサイズ変更される点だけが異なる。
f.htzoom
この関数は f.topzoom の別名である。
f.hzoom
この関数は f.horizoom の別名である。
f.iconify
この関数は選択されたウィンドウをアイコン化し、選択されたアイコンをアイ コン化解除する。
f.identify
この関数は、選択されたウィンドウの名前とジオメトリの概要を表示する。サー バが SYNC 拡張をサポートしていれば、そのウィンドウを所有しているクライ アントの優先度も表示される。 このウィンドウは、クリックするかキーを押せば消える。
f.lefticonmgr
この関数は
f.backiconmgr と同様であるが、ポインタの移動により行 は変わらない点が異なる。
f.leftzoom
この関数は f.bottomzoom と同様であるが、選択されたウィンドウはディ スプレイの左半面を占めるようにサイズ変更される点が異なる。
f.lower
この関数は選択したウィンドウを下面に移動させる。
f.menu string
この関数は、引き数 string で指定されたメニューを呼び出す。 f.menu の呼び出しを入れ子にすることで、階層メニューを作ることが できる。
f.move
この関数は、この関数を呼び出したポインタボタンが離されるまで、選択され たウィンドウの外形(OpaqueMove 変数が設定されていればウィンドウ そのもの)をドラッグできるようにする。ConstrainedMoveTime で与え たミリ秒時間以内にダブルクリックすると、ポインタはウィンドウの中央に移 動し、ポインタが交差した格子線に基づいて動きが垂直方向か水平方向のどち らかに制限される。 移動を止めるためには、最初に押したボタンを離す前に別のボタンを押すこと。
f.nexticonmgr
この関数は、現在またはその後の任意のスクリーン上のウィンドウを含む次の アイコンマネージャにポインタを移動させる。
f.nop
この関数は何も行わない。この関数は普通、DefaultFunction 変数や WindowFunction 変数に対して用いたり、メニューに空白行を作るため に用いる。
f.previconmgr
この関数は、現在またはその前の任意のスクリーン上のウィンドウを含む次の アイコンマネージャにポインタを移動させる。
f.priority string
この関数は、選択されたウィンドウを所有しているクライアントの優先度を、 引き数 string の数値に設定する。この引き数は、ダブルクォートで 括った符号付き整数でなければならない(例: "999")。この関数は、X サーバ が SYNC 拡張をサポートしている場合のみ有効である。
f.quit
この関数は、ウィンドウの境界を元に戻し、twm を終了させる。 twmxdm が呼び出した最初のクライアントである場合には、 サーバがリセットされる。
f.raise
この関数は、選択されたウィンドウをレイズさせる。
f.raiselower
この関数は、選択されたウィンドウが他のウィンドウの下になっている場合、 これをレイズさせる。そうでない場合には、このウィンドウは下面に移動させ られる。
f.refresh
この関数は、全てのウィンドウを再描画させる。
f.resize
この関数は、選択されたウィンドウの外形を表示させる。ポインタが境界をま たぐと(または AutoRelativeResize が設定されていると)、この関数 を呼び出したときに押したボタンが離されるまで、外形がラバーバンドになる。 サイズ変更を止めるには、最初のボタンを離す前に他のボタンを押すこと。
f.restart
この関数は、twm を終了・再起動させる。
f.righticonmgr
この関数は
f.nexticonmgr とほぼ同じであるが、行の変更は行われな い点が異なる。
f.rightzoom
この関数は f.bottomzoom とほぼ同じであるが、選択されたウィンドウ はディスプレイの右半面を占めるようにサイズ変更される点が異なる。
f.saveyourself
この関数は、選択されたウィンドウが WM_PROTOCOLS ウィンドウプロパティで メッセージを要求している場合、そのウィンドウの WM_SAVEYOURSELF メッセー ジを送る。このメッセージを受け取るクライアントは、ウィンドウに関連する 全ての状態を検査し、ICCCM で指定されているように WM_COMMAND を更新する ことになっている。選択されたウィンドウがこのメッセージに対して選択され ていない場合、キーボードベルが鳴らされる。
f.showiconmgr
この関数は、現在のアイコンマネージャをマップする。
f.sorticonmgr
この関数は、現在のアイコンマネージャのエントリをアルファベット順に並 べ変える。 変数 SortIconManager を参照すること。
f.title
この関数は、メニュー定義において文字が中央寄せに書かれ、選択することが できない要素を作る。この関数はこれ以外の文脈で用いてはならない。
f.topzoom
この関数は f.bottomzoom とほぼ同じであるが、選択されたウィンドウ はディスプレイの上半面を占めるようにサイズ変更される点だけが異なる。
f.unfocus
この関数は、フォーカスの規則をポインタ移動に基づくものに戻す。この関数 は、フォーカスしたウィンドウが不要になったときに用いる。
f.upiconmgr
この関数は、現在のアイコンマネージャにおいて前の行にポインタを移動させ る。必要ならば、同じカラムの最後の行に移動させる。
f.vlzoom
この関数は f.leftzoom の別名である。
f.vrzoom
この関数は f.rightzoom の別名である。
f.warpring string
この関数は、WindowRing変数で指定された次または前のウィンドウにポ インタを移動させる。移動先のウィンドウは引き数 string で指定し、 この値は "next" または "prev" である。
f.warpto string
この関数は、string にマッチする名前かクラスを持つウィンドウにポ インタを移動させる。ウィンドウがアイコン化されている場合、変数 WarpUnmapped が設定されていればアイコン化が解除され、設定さ れていなければこれは無視される。
f.warptoiconmgr string
この関数は、引き数 string で指定されたアイコンマネージャ内のポイ ンタを含むウィンドウに対応するアイコンマネージャのエントリにポインタ を移動させる。string が空文字列(つまり"")の場合、現在のアイコン マネージャが選択される。
f.warptoscreen string
この関数は、引き数 string で指定したスクリーンにポインタを移動さ せる。string には数値(例えば "0""1")または文字列 "next"(現在のスクリーン番号に1を加え、管理されていないスクリーン を飛ばしたもの)、文字列 "back"(現在のスクリーン番号から1を引き、 管理されていないスクリーンを飛ばしたもの)、文字列 "prev" (訪れた 最後のスクリーンを示す)を指定することができる。
f.winrefresh
この関数は f.refresh とほぼ同じであるが、選択されたウィンドウの みが再描画される点が異なる。
f.zoom
この関数は f.fullzoom とほぼ同じであるが、選択されたウィンドウの 高さのみが変更される点が異なる。

メニュー

関数はグループ化し、ポップアップメニュー(ポインタボタンに関連づけられ たとき)やプルダウンメニュー(タイトルボタンに関連づけられたとき)を使っ て対話的に選択することができる。メニュー指定のそれぞれは、f.menu から参照されるメニュー名、デフォルトの前景色と背景色(省略可能)、アイテ ム名と呼び出す関数、個別のアイテムの前景色と背景色(省略可能)を含む:

Menu "menuname" [ ("deffore":"defback") ]
{
   string1  [ ("fore1":"backn")]function1
   string2  [ ("fore2":"backn")]function2
      .
      .
      .
   stringN  [ ("foreN":"backN")]functionN
}

menuname では大文字と小文字は区別される。 オプションの引き数である defforedefback は、カラーディ スプレイ上でメニューのエントリをハイライトさせるときに使う前景色と背 景色を指定する。 各メニューエントリの string はメニューに表示されるテキストであ る。 オプションの引き数 foreback は、ポインタがエントリ内 に入っていないときのメニューエントリの前景色と背景色である。これらの 色はカラーディスプレイだけで使われる。デフォルトで使う色は 変数 MenuForegroundMenuBackground で指定する。 メニューエントリの function 部分は、ユーザ定義関数を含むいずれ かの関数または追加メニューである。

TwmWindowsという名前の特別なメニューがあり、これは全てのクライア ントとtwm が与えるウィンドウの名前を含んでいる。エントリを選択 すると、そのウィンドウ上で WindowFunction が実行される。 WindowFunction が設定されていなければ、そのウィンドウはアイコ ン化解除され、レイズされる。

アイコン

Twm はアイコン化されたウィンドウを操作する方法をいくつか提供して いる。 ピックスマップとテキストを使う一般的な方法においては、IconRegion 変数で記述されるように手動または自動でレイアウトを調整する。加えて、 アイコン名を簡単に並べたウィンドウ(アイコンマネージャと呼ばれる)を使う と、スクリーンのスペースをより有効に利用することができるし、キーボード を使ってウィンドウ間を移動することもできる。

アイコンマネージャは、現在ディスプレイ上にある全てのウィンドウまたは選 択されたウィンドウの名前を含むウィンドウである。ウィンドウがアイコン化 されているときには、ウィンドウ名に加えて、デフォルトのアイコン化のシン ボルに使われる小さなボタンがウィンドウ名の左に表示される。デフォルトで は、アイコンマネージャのエントリをクリックすると f.iconify が 実行される。 アイコンマネージャのこの動作を変更するには、ボタンやキーボードの関連づ けを指定する際に iconmgr コンテクストを使用すること。

ポインタをアイコンマネージャ内へ移動させると、指定されたウィンドウ(明 示的にフォーカスを設定するか、NoTitleFocus が設定されている 統合的なイベントを送る)にキーボードフォーカスが与えられる。 関数 f.upiconmgr, f.downiconmgr, f.lefticonmgr, f.righticonmgr を用いると、キーボード操作で直接ウィンドウ間の入 力フォーカスを変えることができる。

バグ

全てのウィンドウリストの代わりに、リソースマネージャが用いられるべきで あった。

IconRegion 変数はリストを引き数に取るべきである。

制約付き移動の関数を呼び出そうとして非常に素早いダブルク