week コマンド
少し前にこういう記事を書いた。

プロ野球チーム別カラーコード
試しにプロ野球チーム用オプションをいくつか用意したのだが、厳密な色設定はしていなかった。探してみると、RGB値を調べてくれているサイトがあったので、これを反映してみた。
week コマンドの色設定は Getopt::EX::Colormap モジュールを使っていて、基本は 6x6x6 の216色で指定する。しかし、24ビットで指定した値は216色に変換して表示し、24ビットカラー対応の端末であれば、そのまま表示することも可能だ。
冒頭のタイガースカラーはこうなった。

ライオンズカラー
さて、我らが西武ライオンズだが、今のユニフォームは3代目らしい。前に作った --lions
オプションは第2世代の色を使っていたので、現役カラーに変更した。古い色は --lions2
に。上のサイトを参考にしたら、なんとなく赤が暗すぎる気がする。修正案あれば採用します。

背景色に合わせる
さて、このライオンズ第3世代カラーを背景色が黒い端末で表示するとこうなる。

これでは冴えないので、--lions-rev
という反転パターンを作った。

Getopt::EX::termcolor
こうなると、端末の背景色に合わせてオプションを変更したい。実は、こんなこともあろうかと、最近 Getopt::EX 用の termcolor というモジュールを作ってあった。
これは、Getopt::EX
を利用するアプリから共通に使えるモジュールだ。week
コマンドの場合 ~/.weekrc
に次のような設定を入れておくことで、明る位背景色の端末では --lions
、暗い背景色の端末では --lions-rev
オプションが自動的に付与される。
option default -Mtermcolor::bg(light=--lions,dark=--lions-rev)

一番上は Apple 標準ターミナルで、下の2つは iTerm2 だ。iTerm は24ビットカラー表示が可能なので、それを有効にしてあるのが一番下の画面。微妙な違いだがわかるだろうか。
背景色の自動取得
termcolor モジュールは、XTerm の制御シークエンスを使って、端末の背景色を自動的に取得している。macOS の標準端末や iTerm などは対応しているので問題ないのだが、どうもマイクロソフト製の端末は TERM=XTerm-256color と謳いながら軒並み非対応な気がする。
このような場合は TERM_BGCOLOR
という環境変数を #000000
とか #FFFFFF
とかに設定しておけばそれを使うようになっている。
--team オプション
ついでに teams.pm
の中に次のようなオプションを追加してみた。
option --termcolor::bg -Mtermcolor::bg(light=--$<shift>,dark=--$<shift>-rev)
option --team --termcolor::bg $<copy(0,1)>
こうすることで、~/.weekrc
では次のように設定すればよくなった。
option default --team lions
インストール
cpan で公開しているので、cpanm (cpanminus) を使ってインストールします。
$ curl -sL http://cpanmin.us | perl - App::week