Home > Unix系OS > | screen > 最新版GNU Screenで縦分割(その3〜captionとhardstatusについて〜)

最新版GNU Screenで縦分割(その3〜captionとhardstatusについて〜)

これはその1〜導入編〜その2〜設定ファイルについて〜の続きです。

defbce on
attrcolor b ".I"
term xterm-256color
termcapinfo xterm-256color 'is=^[r^[m^[2J^[H^[?7h^[?1;4;6l'
defscrollback 1000
altscreen on
escape ^Zz
vbell off
bell_msg "Bell in window %^G"
autodetach on
shell $SHELL
startup_message off
logfile "$HOME/.screen/screen-%Y%m%d-%n.log"
deflog on
shelltitle '$ |bash'
caption always "%{= Rk} %?%F%{b kr}%? %?%h%:%t (screen #%n)%? %{-}"
hardstatus alwayslastline "%{= Gk} %-Lw%40L>%{b kg} %n %t %{-}%+Lw%-040=%{b km} %l %{.b} %Y/%m/%d %C:%s %A "
sorendition "= Rk"

では一番難解なcaptionhardstatusの解説だ。そもそもcaptionhardstatusの違いは何か。

いろいろ理屈はあるが、これだけ覚えておけばいい *1

caption     => 各ウィンドウに一つずつ
hardstatus  => 全体で一つだけ

まずはcaptionから説明しよう。

Captionについて

caption always "%{= Rk} %?%F%{b kr}%? %?%h%:%t (screen #%n)%? %{-}"

最初のcaption alwaysは見たまんま。キャプションを常に(例えウィンドウが一つの時でも)表示する。

captionhardstatusでは"%"に続く文字列が特別な意味を持っている。まず最初の、

%{= Rk}
これは"%"に続いて中括弧"{}"があるので色指定を表す。色指定は各色を表すアルファベット+何かによって表されており、この文の意味はこうだ。

    =    => 今までの色指定をリセット
スペース => 区切り文字
    R    => 背景は明るい赤
    k    => 文字の色は黒

ここはまだ簡単。次が難解である。

%?%F%{b kr}%?
これは所謂IF文だ。"%? ~ %?"で、"IF ~ END IF"となる。上の形式で説明すると、

    %?          => IF
        %F      => ウィンドウがアクティブなら真
        %{      => 色指定開始
        b kr    => 太字、背景は黒、文字の色は赤
        }       => 色指定終了
    %?          => END IF
もしそのウィンドウがアクティブなら次の文字列を「太字、背景は黒、文字の色は赤」に設定する

となるわけだ。次はもっと難関。"IF ~ ELSE ~ END IF"だ。

%?%h%:%t (screen #%n)%?

    %?      => IF
        %h  => ハードステータスがあればそれ
    %:      => ELSE
        %t (screen #%n) => なければこっち
            %t  => ウィンドウタイトル
            %n  => ウィンドウの番号
    %?      => END IF
もしそのウィンドウにハードステータスがあればそれを表示する。無ければ、ウィンドウのタイトルと番号を所定の書式で表示する。

普通はウィンドウのハードステータス("%h")は必要ないのでこのIF文は削ってもいい気もする。Screenの中でScreenを起動したりするときには"%h"も必要なんだろうか?

最後は簡単だ。

    %{-}    => 一つ前の色に戻す
少し前のIF文、"%?%F%{b kr}%?"で色が変わっていたら元に戻す。変わってなかったら(この場合は)何もしない。

次はさらに長い。hardstatusに行こう。

hardstatusについて

hardstatus alwayslastline "%{= Gk} %-Lw%40L>%{b kg} %n %t %{-}%+Lw%-040=%{b km} %l %{.b} %Y/%m/%d %C:%s %A "

順に見ていこう。

hardstatus alwayslastline

captionと同じく最初は見たまんま、ハードステータスを常に一番下に表示する。次もいつものように色指定だ。

%{= Gk} %-Lw

    %{= Gk} => 色指定を初期化し、背景を明るい緑、文字の色を黒にする
    %-Lw
        %-w => 現在のウィンドウより前のもののタイトル
        L   => フラグを付ける
現在のウィンドウより前のもののフラグ付きタイトルを「背景は明るい緑、文字の色は黒」で表示する。

となる。実はフラグってのが何なのかよくわかってません。一つ前にいたウィンドウのタイトルに"-"が付くのはわかったけれども......。

%40L>%{b kg} %n %t

    %40L>
        %40>    => 次の文字列を全体の40%の位置に置く
        L       => 省略された部分を"..."に置き換える
    %{b kg} => 「太字、背景は黒、文字の色は緑」
    %n      => ウィンドウの番号
    %t      => ウィンドウのタイトル
左から40%の位置に次の文字列を置き、表示しきれなかった分は"..."と表示する。ウィンドウの番号とタイトルを「太字、背景は黒、文字の色は緑」で表示する。

"L"なんて使い場所によって意味が変わるのだからめんどくさい。また、「文字の色は緑」と書いたが、前回説明した「attrcolor b ".I"」が効いているので、実際には文字の色は明るい緑となる。

%{-}%+Lw

    %{-}    => 一つ前の色に戻す
    %+Lw
        %+w => 現在のウィンドウより後のもののタイトル
        L   => フラグを付ける
一つ前の色、つまり「背景は明るい緑、文字の色は黒」に戻し、現在のウィンドウより後のもののフラグ付きタイトルを表示する。

ここはもう説明不要か。読んだまんまだね。
%-040=%{b km} %l

    %-040=
        -       => 画面右から
        040     => 40文字
        =       => 位置指定
    %{b km} => 「太字、背景は黒、文字の色はマゼンダ」
    %l      => システム負荷
画面右から40文字の位置に、「太字、背景は黒、文字の色はマゼンダ」に設定する。次にシステム負荷を表示する。

"040"は絶対文字位置指定。頭に"0"が付くと絶対位置、付かないとパーセント表示になる。"システム負荷"とは所謂ロードアベレージ......って何だっけ。ちゃんと調べたことなかったのでググってみた。

CPU使用率とロードアベレージ - 教えて!goo
http://oshiete1.goo.ne.jp/qa1480201.html

Linuxのtopコマンドで表示されるload averageについて教えてください。... - 人力検索はてな http://q.hatena.ne.jp/1135926670

うちの鯖だと1.00行くか行かないか位だから、大丈夫なのかな。

%{.b} %Y/%m/%d %C:%s %A

    %{.b}   => 背景色はそのまま、文字の色は青
    %Y/%m/%d %C:%s %A
        %Y  => 年
        %m  => 月
        %d  => 日
        %C  => 時:分(12時間表記)
        %s  => 秒
        %A  => AM/PM
「太字、背景は黒、文字の色は青」で、日付と時刻を表示する。

最後は日付及び時刻の表示だ。色指定の時、"."を使うと前の指定をそのまま継承する。又、"="が付いてない場合はその他の属性(この場合は「太字」)も継承する。

長かったがこれでやっと終了だ。後はsorenditionとその他の情報について。

sorenditionについて+その他

sorendition "= Rk"

これは「その他のメッセージ」に対する色指定である。「その他のメッセージ」とはScreenの出す様々な情報や警告のことだ *2 が、縦分割時の分割線もこれに含まれるのだ。因って、この色指定にはcaptionの時と同じものを使って統一性のあるものにしている。

ここまでの設定で以下のような表示が可能になる。他に効果と色の早見表と、リンク集を置いておく。

2010-02-04_120544.png
色指定は大文字だと明るい色になります
記号効果記号
d暗くなるk
u下線r
b太字g
r反転y
s強調b
B点滅mマゼンダ
cシアン
w
d標準

Manpage of SCREEN
http://www.linux.or.jp/JM/html/GNU_screen/man1/screen.1.html

CreativeStyle » Gitリポジトリから取得したscreenをコンパイル & インストール
http://www.kadoppe.net/archives/2010/01/screen-git-install.html

卜部昌平のあまりreblogしないtumblr - 俺の .screenrc が火を吹くぜ
http://shyouhei.tumblr.com/post/313410522/screenrc

*1 : 前回挙げたリンクにはhardstatusをたくさん使う荒技も解説されている。
*2 : 尤も、標準ではこれらの情報、警告は色指定が反映されない。初期設定では、これらを表示するときにハードステータス行全てを消して、白黒表示することになっているからだ。色指定を反映したいときは、"hardstatus off"という一文を入れておく。

Comments:1

misshi 2011年10月27日 21:18

参考になりました
ありがとうございます

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://blog.remora.cx/mt/mt-tb.fcgi/25
Listed below are links to weblogs that reference
最新版GNU Screenで縦分割(その3〜captionとhardstatusについて〜) from blog.remora.cx

Home > Unix系OS > | screen > 最新版GNU Screenで縦分割(その3〜captionとhardstatusについて〜)

Feeds
CC Licence

Creative Commons License

このブログはクリエイティブ・コモンズでライセンスされています。

W3C Validation

I ♥ validator

Return to page top