twm は X-Window system Release 4 におけるウィンドウ・マネージャです。
Motif を利用しないマネージャで、Tom La Strange 氏が開発しました。当初、開発者に敬意を払って、Tom's Window Manager を略したものでしたが、その後タブ・ウィンドウ・マネージャと呼ばれるようになりました。
※ 現在、システム標準のウィンドウマネージャは WindowMaker です。
twmを立ち上げると、次のようなターミナルだけが表示されます。
デフォルトでは機能的に非常に不便ですが、容易にカスタマイズすることが可能です。
twm の設定ファイルは「.twmrc」です。最初はこのファイルはありませんので、まずシステム標準のファイルをコピーしてきます。
cp /usr/local/X11/lib/twm/system.twmrc ~/.twmrc
ちなみに、このファイルのありかは、「 man twm 」のマニュアルの最後に既述してあります。
FILES $HOME/.twmrc.<screen number> $HOME/.twmrc <XRoot>/lib/X11/twm/system.twmrc
このファイルをホームディレクトリに置くことで、twm 起動時にファイルが読まれるようになります。
カスタマイズを加えると、下図(一例)のようになります。設定ファイルは「.twmrc」です(日本語である程度説明をつけています※利用しているアイコンはmenu.tar.gzに置いておきます)。
設定ファイルのカスタマイズについて、説明していきます。
フォントを設定できる部品は、アイコンラベル、アイコンマネージャ、 タイトルバー、メニュー、寸法表示(リサイズの際に表示される)です。
書式は 変数名 "フォント名" で、フォント名には XLFD, alias どちらでも使えます。xfontsel を使うと楽でしょう。
TitleFont | タイトルバーのフォント | |
ResizeFont | 寸法表示用のフォント | |
MenuFont | メニューのフォント | |
IconFont | アイコンラベルのフォント | |
IconManagerFont | アイコンマネージャのフォント |
一例を載せておきます。
TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" MenuFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" IconFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" IconManagerFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*"
色あいを変えるのは、見栄えを変える重要な一手段です。twmの場合、色は設定ファイル中のColorというセクションで設定してありますので、 ここを変更します。
ここでは、タイトルバー、メニュー、アイコン、ウィンドウ(アイコン含む)の枠、 マウスカーソル、アイコンマネージャの色が指定できます。
書式は Color { VARI "COLOR" } です。
なお、利用できる配色は次のコマンドで調べて下さい。
% cat /usr/X11R6/lib/X11/rgb.txt
PointerForeground | マウスカーソルの前景色 | |
PointerBackground | マウスカーソルの背景色 | |
DefaultBackground | 基本背景色 | |
DefaultForeground | 基本前景色 |
各部分の対応を確認できる画像を用意しています。参考にして下さい。
MenuBackground | メニューの背景色 | |
MenuForeground | メニューの前景色 | |
MenuTitleBackground | メニューのタイトル部分の背景色 | |
MenuTitleForeground | メニューのタイトル部分の前景色 |
BorderColor | ウィンドウの枠の色 | |
TitleBackground | タイトルバーの背景色 | |
TitleForeground | タイトルバーの前景色 |
IconManagerBackground | アイコンマネージャの背景色 | |
IconManagerForeground | アイコンマネージャの前景色 |
IconBackground | アイコンの背景色 | |
IconForeground | アイコンの前景色 | |
IconBorderColor | アイコンの枠の色(original twm には無い) |
タイトルボタン、キー、ポインタボタンに割り当てることで、ウインドウ操作が可能になります。
BUTTON | Button1 | 左ボタン | ||
Button2 | 中ボタン | |||
Button3 | 右ボタン | |||
KEY | m | [META] | ||
c | [CTRL] | |||
s | [SHIFT] | |||
l | [CAP] | |||
CONTEXT | frame | ウィンドウの枠 | ||
icon | アイコン | |||
iconmgr | アイコンマネージャ | |||
root | ルートウィンドウ | |||
title | タイトルバー | |||
window | ウィンドウ | |||
all | 全ての場所 |
twm は、タイトルバー、メニュー、キーバインディングの設定に簡単には収められないくらい多くのウィンドウ操作プリミティブを提供しています。
f.beep | ビープを鳴らす | |
f.circledown | 重なったウィンドウの一番上を一番下にする | |
f.circleup | 重なったウィンドウの一番下を一番上にする | |
f.destroy | クライアントの強制終了 | |
f.deltastop | MoveDelta で指定したドット数以上動かした場合に | |
Function で定義した関数の動きを止める | ||
f.move | ウィンドウの移動 | |
f.resize | ウィンドウの大きさ変更 | |
f.raise | 選択したウィンドウを上にする | |
f.lower | 選択したウィンドウを下にする | |
f.raiselower | 選択したウィンドウが重なっていて、下にあれば上 | |
に、上にあれば下にする | ||
f.iconify | アイコン化 | |
f.deiconify | ウィンドウへ戻す | |
f.delete | クライアントの終了 | |
f.exec "COMMAND" | 外部コマンド COMMAND を実行("!" で置き換えも可) | |
f.fullzoom | ウィンドウを画面全体で表示 | |
f.menu "MENU" | MENU を表示 | |
f.title "TITLE" | TITLE をセンタリングして表示 | |
f.hideiconmgr | アイコンマネージャを隠す | |
f.showiconmgr | アイコンマネージャを表示 | |
f.sorticonmgr | アイコンマネージャで表示されているリストをアル | |
ファベット順にソートする | ||
f.nop | 何もしない | |
f.quit | twm の終了 | |
f.refresh | リフレッシュ | |
f.restart | twm の再起動 | |
f.twmrc | ~/.twmrc の再読み込み | |
f.function "FUNCTION" | Function で定義した FUNCTION を呼び出す |
メニューの定義をします。twm ではメニューの階層化が可能ですが、あまり深くなると使いにくくなります。書式は以下の通り。
Menu "MENU" { "LABEL" TWM_FUNCTION : : }
ここで、「 LABEL 」と「 TWM_FUNCTION 」の間に ("文字色":"背景色") を書き込めば、メニュー表示の色も変更可能です。
# ルートウインドウで中ボタンをクリックした時のメニュー menu "applications" { "applications" f.title "Netscape" ("#7d26cd":"#dae7ee") f.menu "netscape" "acroread" ("#7d26cd":"#d4e0ee") ! "acroread &"
MoveDelta NUM | f.deltastop が有効になるドット数 NUM を決める | |
SortIconManager | アイコンマネージャのリストをソートする | |
ShowIconManager | 起動時にアイコンマネージャ表示 | |
IconManagerGeometry "GEOMETRY" | アイコンマネージャのジオメトリを設定します | |
IconDirectory "DIRECTORY" | twm にビルトインされていないアイコンを読み込む | |
DontMoveOff | ウィンドウを画面からはみ出させない | |
NoRaiseOnMove | 位置を変更しても上下関係を変えない | |
NoRaiseOnResize | リサイズしても上下関係を変えない | |
RandomPlacement | ウィンドウを適当に配置 | |
OpaqueMove | 位置を変更するときウィンドウの枠だけ表示 |