Screenで色を変える方法

Screenとは

コンソール上で動作する仮想端末管理ソフト。
CUIGnome端末のタブコンソール?のように複数の端末をまとめて扱うことが出来ます。

問題点

いまどのScreenにいるか分かりにくい。

解決後


解決策1 バーを表示する

.screenrcを少しいじってみる

 caption always "%{b RK} %y/%m/%d(%D)%c:%s %{bu dr} | %-w%{=bu CK}%n %t%{-}%+w"

結果はこちら

  08/06/15(Sun) 3:34:10  | 0 bash  1 bash

これは人のページを見ながらずいぶん前に書いたもの 改めてみてみる。

問題になっているのは

 %{bu dr} | %-w%{=bu CK}%n %t%{-}%+w

後半のここらへん

 %{bu dr} | %-w%{=bu CK}%n %t%{-}%+w

現在のWindowより前は %{bu dr} (bold underline default red) で 以降は {=bu CK} (bold underline Cyan blacK) でって感じ?

解決策2 プロンプトを変えてみる

.bashrcを書き換えてみる

分かっていること

都合よくdebianのデフォルトの.bashrcはTERMで分岐していたので、そこにScreenの場合を書けば良かった。

 colors=(41 44 45 40)
 col_str=${colors[$(($WINDOW%4))]}
 PS1='${debian_chroot:+($debian_chroot)}\u@\h_\[\033[${col_str};1;37m\]S$WINDOW\[\033[0m\]:\w\$ '

ええい bashスクリプトってややこしいな。

1行目は配列を作っている。 これが背景色を表している
で、2行目でWindow番号の剰余を取っている。もしかしたらこれはPS1でワンライナーにかけるのかもしれないけど、ごちゃごちゃしそうだから却下。(もう十分ごちゃごちゃしてる)

肝なのは3行目

僕が追加したのは

 _\[\033[${col_str};1;37m\]S$WINDOW\[\033[0m\]:\w\$ 

ここだね。

 \[\033[${col_str};1;37m\]
 [\033[0m\]

特にこの部分

 \[\033[A;1;Bm\]
  • A:背景色
  • B:文字色

のようだ
間の1ってのは太字?

2行目は装飾クリア命令