5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

week: ターミナルで使える色っぽいカレンダー

Last updated at Posted at 2020-03-25
スクリーンショット 2018-12-12 12.39.45.png

cal コマンド

Unix には cal というコマンドがある。単体で実行すると、当月のカレンダーを表示し、年を指定すれば、その一年分のカレンダーを表示してくれる。

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

多くの場合直近の情報だけわかればいいのだが、月初や月末には、前月や翌月の情報も見たい。だから、前後の3ヶ月分を表示するために week というコマンドを作って、おそらく30年以上ではないかと思うが、ずっと使っていた。他の機能といえば、わかりやすいように、当日の日付がハイライトされるくらいだ。week という名前は変だという指摘もあるかもしれないが、なんとなく覚えやすいし、同名のコマンドも聞かないので使い続けていた。

最近になって、処理系のせいか自作の week コマンドの挙動がおかしくなったので調べてみると、最近の cal コマンドは、ご覧の様に今日の日付をハイライトし、-3 というオプションで3ヶ月分を表示してくれるようになっていた。

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

なんだ、これで week コマンドは用済みだと思うと、ちょっと残念な気分になり、また cal コマンドの色気のない表示にいささかがっかりして、色をつけてみることにした。あと、上の画像を見ていただければわかるように、日本語で表示すると月の行がバグっている。中国語だとより顕著だ。

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

新生 week コマンド

デフォルト

デフォルトの表示は、こんな感じだ。イメージしたのはチームケンズのラベンダーブルー✌️。

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

-数字 オプション

ハイフンの後に数字を与えると、前月からその月数のカレンダーを表示する。

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

-A, -B, -C オプション

-A-B オプションは前後に表示する月数を指定する。-C オプションは両方を同時に指定し、デフォルトでは前後4ヶ月分、合計9ヶ月分を表示する。

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

-y

-y オプションをつけると、1年分のカレンダーを表示する。ちなみに、当月から1年分を表示したければ -B0A11 とか -12 -B0 のようにすればよい。

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

-c オプション

-c オプションはカラム数を指定する。-Y オプションと組み合わせて -Y2c6 のように使うと、2年分のカレンダーを6カラムで表示する(図のコマンドは間違っているので注意)。

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

日付指定

日付を指定すると、今日ではなくその日を中心に表示する。次の様にすれば 1752年9月2日を含む1年分のカレンダーを表示する。

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

色指定

色はオプションで自由に指定することができて、デフォルトではこのようにラベルに対して色を指定する様な設定になっている。ラベルの意味はだいたいわかるだろう。3桁の数字は 6x6x6 で216色の RGB 指定だ。000 が黒で 555 が白。Lではじまるのはグレースケールで、L00 は黒、L25 は白、L01-L24 が24階調のグレーを表す。スラッシュの左側がフォアグラウンドの色で、右側はバックグラウンド。

--colormap      DAYS=L05/335 \
--colormap      WEEK=L05/445 \
--colormap     FRAME=L05/445 \
--colormap     MONTH=L05/335 \
--colormap   THISDAY=522/113 \
--colormap  THISDAYS=555/113 \
--colormap  THISWEEK=L05/445 \
--colormap THISMONTH=555/113
スクリーンショット 2018-12-12 6.16.37.png

自分で好きな色を指定したい場合には $HOME/.weekrc に書く。

モジュール

colorsteams という2つのモジュールを同梱してある。デフォルトモジュールの中で次のように宣言してあるので、特にモジュール指定をしなくてもこれらのオプションを使うことができる。

default.pm
autoload -Mcolors --mono --green --lavender --pastel
autoload -Mteams --tigers --lions --giants

-Mcolors: --mono, --green, --pastel

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

この中で --pastel だけは24ビットのRGB値で指定してある。ただ、多くの端末は256色しか表示できないので、自動的に256色に変換される。24ビットカラーが表示可能な端末 (たとえば iTerm2) を使っている場合は、--rgb24 オプションを指定するか export GETOPTEX_RGB24=1 などのように環境変数を設定する。

-Mteams: --tigers, --giants, --lions

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

いつの時代だなどご指摘はあると思うが、気になる人は自分で直して github にプルリクいただければと。

インストール

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

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

リポジトリ

参考

カレンダー全体に色をつけるだけなら greple-Mline モジュールを使ってこんな風に実現することもできる。ご参考まで。

スクリーンショット 2018-12-18 16.39.27.png
5
2
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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?