LoginSignup
0
0

More than 3 years have passed since last update.

ライオンズカラーのカレンダーと termcolor モジュール

Last updated at Posted at 2020-05-28

week コマンド

少し前にこういう記事を書いた。

スクリーンショット 2018-12-12 12.39.45.png

プロ野球チーム別カラーコード

試しにプロ野球チーム用オプションをいくつか用意したのだが、厳密な色設定はしていなかった。探してみると、RGB値を調べてくれているサイトがあったので、これを反映してみた。

week コマンドの色設定は Getopt::EX::Colormap モジュールを使っていて、基本は 6x6x6 の216色で指定する。しかし、24ビットで指定した値は216色に変換して表示し、24ビットカラー対応の端末であれば、そのまま表示することも可能だ。

冒頭のタイガースカラーはこうなった。

スクリーンショット 2020-05-28 09.26.49.png

ライオンズカラー

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

スクリーンショット 2020-05-28 09.18.19.png

背景色に合わせる

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

スクリーンショット 2020-05-28 09.23.12.png

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

スクリーンショット 2020-05-28 09.24.26.png

Getopt::EX::termcolor

こうなると、端末の背景色に合わせてオプションを変更したい。実は、こんなこともあろうかと、最近 Getopt::EX 用の termcolor というモジュールを作ってあった。

これは、Getopt::EX を利用するアプリから共通に使えるモジュールだ。week コマンドの場合 ~/.weekrc に次のような設定を入れておくことで、明る位背景色の端末では --lions、暗い背景色の端末では --lions-rev オプションが自動的に付与される。

~/.weekrc
option default -Mtermcolor::bg(light=--lions,dark=--lions-rev)
スクリーンショット 2020-05-28 09.45.24.png

一番上は Apple 標準ターミナルで、下の2つは iTerm2 だ。iTerm は24ビットカラー表示が可能なので、それを有効にしてあるのが一番下の画面。微妙な違いだがわかるだろうか。

背景色の自動取得

termcolor モジュールは、XTerm の制御シークエンスを使って、端末の背景色を自動的に取得している。macOS の標準端末や iTerm などは対応しているので問題ないのだが、どうもマイクロソフト製の端末は TERM=XTerm-256color と謳いながら軒並み非対応な気がする。

このような場合は TERM_BGCOLOR という環境変数を #000000 とか #FFFFFF とかに設定しておけばそれを使うようになっている。

--team オプション

ついでに teams.pm の中に次のようなオプションを追加してみた。

teams.pm
option --termcolor::bg -Mtermcolor::bg(light=--$<shift>,dark=--$<shift>-rev)
option --team --termcolor::bg $<copy(0,1)>

こうすることで、~/.weekrc では次のように設定すればよくなった。

~/.weekrc
option default --team lions

インストール

cpan で公開しているので、cpanm (cpanminus) を使ってインストールします。

$ curl -sL http://cpanmin.us | perl - App::week
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0