Hatena::ブログ(Diary)

I CAN ’CAUSE I THINK I CAN! このページをアンテナに追加 RSSフィード

, and twitter /真面目なブログ

2009/08/28(Fri)

screenの表示が崩れる

fedora11にて.

sudo yum install screen

.screenrcはこんなん(takaてんてーからもらった):

caption always "%{= kw}%-w%{= BW}%n %t%{-}%+w %-= @%H - %LD %d %LM - %c"

GNU screenインストールして実行してみたら、ステータスラインが表示されない。なぜかと思ったら.screenrcが.screeenrcだったので修正したところまた表示されない。なんでやねんと思いながら確認すると今度は.sceenrcになってた。死にたい。

ちゃんと.screenrcに修正したらびっくりするくらい表示が崩れた。あとで調べたところわかったのだけど、

  1. 日付表示内の日本語が化ける
  2. 文字列の長さが1行を溢れて2行になる
  3. 溢れた部分を最下行に残して、残りは下から2行目に浮かぶ
  4. 常に表示されるのは最下行だけ

という流れでステータスラインが表示されなかったようす。

そんなこととはつゆ知らず、takaてんてー(なぜか工事中の図書館で騒音に苦しんでいたらしい)と悩みに悩んで、次のような流れに:

  • debug onにしてみる
    • してみたら「-DEBUGでビルドされてないので無理!」とか言われたのでGNU screen 4.0.3を落としてきて--DDEBUGをつけてビルドしてみる
    • が/tmp/debugに吐かれたものを見てもイマイチ意味がわからない(なんかlsの実行結果みたいなものがあった
  • tscreen 0.4.9を落としてきてビルドしてみる

文字化けしている?そもそも設定ではステータスラインには:

Friday 28 August

みたいな感じで表示されることを期待しているし、takaてんてーのほうではそのように表示されている...

tnzk: 冷静に考えたらtakaてんてーのだと日付って英語で表示されてて
tnzk: 化ける要素ないと思うんだけど
opentaka: 普通にLANG=POSIXやからねぇ
tnzk: ああ。。。
tnzk: ストイックすぎるw
tnzk: 真似できねえw
opentaka: wwwww

ためしにLANG=POSIXで起動してみる:

$ LANG=POSIX screen

してみたところ、めちゃめちゃ正常に表示された。

というような経緯で冒頭の問題の原因がはっきりした。消極的に、ステータスラインに日本語を表示しないことで対応することに。

defencoding utf-8
encoding utf-8 utf-8
escape ^]v
vbell on
vbell_msg "(OxO)"
caption always "%{= kw}%-w%{= BW}%n %t%{-}%+w %-= [%t] - @%H - %Y/%m/%d %c:%s"

フォーマット指定子は次のURLから参照できる(一部だけっぽい...