[Japanese] [English]


Index


Title: 私家版GNU Screen

優れたterminal multiplexerのGNU Screen、長年使っていると不満な点もちらほら出てきます。 そこで、思い切って改造してみました。

ここではscreenのコマンドを:commandのように表記します。

1 概要

2 新着情報

更新次第ここに追加します。

[2006/02/23]

state_fileのmemory leakを直しました。

3 ダウンロード

4 拡張したコマンド

:screen

オプションを新しく追加しました。

-k

ウィンドウが終了するとき、:zombieで設定して必ずそのウィンドウを消すようにします。

-z

番号つきで:screenを使ったとき、その番号のウィンドウが使われていたらそのウィンドウを選択します。

:bind

オプションを新しく追加しました。

-x

コマンドを割り当てたのち、そのコマンドを実行します。

:colon

screenコマンドラインで、コマンドヒストリが使えるようになりました。 C-pで過去方向、C-nで未来方向へヒストリを辿ります。 また、C-dでカーソル位置の文字を消すようにしました。

5 キー割り当て、起動、選択を1文で実現

 :bindと:screenの新オプションによって、キー割り当て、プログラム起動、ウィンドウ選択を一文で実現できるようになりました。 次のようなコマンドを使います。

 :bind -x 割り当てるキー screen -z (-t タイトル) 番号 起動するプログラム

たとえば、次の設定を.screenrcに入れたとします。

 :bind -x ^J screen -z 0  emacs -nw

このように、その番号のウィンドウを特定のプログラム専用のものにすることができます。 特定のプログラム専用のウィンドウの番号は、高い番号を割り当てることをおすすめします。 高い番号は通常簡単には選択できないし、:windowsやハードステータスラインに書かれるウィンドウのリストからはみ出てしまいます。 しかし、すでにキー割り当てが行われた後なので、そのウィンドウは番号を気にせずに使うことができます。

6 state file

現在のウィンドウの状態をリアルタイムにファイルに書き出すようにしました。 これでかなりスクリプティングの幅が広がると思います。 ファイル名は

~/.screen.windows.$STY

です。$STYは環境変数STYの値です。

state fileのフォーマットは、次の行の集合になっています。実際にスペースは入っていません。

ウィンドウ番号 ^A FileDescriptor ^A tty ^A タイトル ^A カレントディレクトリ ^A コマンドライン

^AはC-a(\001)です。コマンドラインは引数ごとに^B(C-b, \002)で区切られています。

emacs ^B -nw ^B

といった感じです。

なお、zombie状態のウィンドウは FileDescriptor が -1 になっています。

このstate fileを使えば、たとえば「次のw3mへ切り換える」などといった処理を簡単に書くことができます。 もう自前でウィンドウを管理するような小細工は必要はありません。

7 現在のウィンドウのttyがわかる

screen-4.0.2-short_ttyname.patchの効果で、String Escapeの%Tは現在使用中のttyに置換されます。次の設定を試してみてください。

 :windowlist title 'Num    TTY Name'
 :windowlist string '%3n %f %T %t'
 :hardstatus lastline "%f%n:%t[%T]%LW"

Back to Top

Valid XHTML 1.0!
rubikitch(rubikitch@ruby-lang.org)

Mail Form
Name Mail
URL