これはその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"
では一番難解なcaption
とhardstatus
の解説だ。そもそもcaption
とhardstatus
の違いは何か。
いろいろ理屈はあるが、これだけ覚えておけばいい1。
caption => 各ウィンドウに一つずつ hardstatus => 全体で一つだけ
まずはcaption
から説明しよう。
Caption
について
caption always "%{= Rk} %?%F%{b kr}%? %?%h%:%t (screen #%n)%? %{-}"
最初のcaption always
は見たまんま。キャプションを常に(例えウィンドウが一つの時でも)表示する。
caption
やhardstatus
では”%”に続く文字列が特別な意味を持っている。まず最初の、
%{= 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.htmlLinuxの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
の時と同じものを使って統一性のあるものにしている。
ここまでの設定で以下のような表示が可能になる。他に効果と色の早見表と、リンク集を置いておく。
色指定は大文字だと明るい色になります | |||
記号 | 効果 | 記号 | 色 |
---|---|---|---|
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.htmlCreativeStyle » Gitリポジトリから取得したscreenをコンパイル & インストール
http://www.kadoppe.net/archives/2010/01/screen-git-install.html
卜部昌平のあまりreblogしないtumblr – 俺の .screenrc が火を吹くぜ
http://shyouhei.tumblr.com/post/313410522/screenrc
参考になりました
ありがとうございます
Pingback: .screenrc(captionとhardstatusの設定)にもがく | abendsundayのブログ
Pingback: .screenrc(captionとhardstatusの設定)にもがく | callcc28