ターミナルの色を最高にかっこよくする方法


概要

こちらでMinttyを知ってからずっと愛用していて、エディタの色もカラーテーマを適用することにより見た目がよくなりとても満足していました。

Windowsで最高のターミナルを構築する方法 - 純粋関数空間
http://tanakh.jp/posts/2011-11-15-windows-terminal.html

しかしターミナルのシェルの色だけが最初から変わっていのが少し残念。。。


↑色がかっこ悪い



ということで、シェルの色を変更する方法を調べて、いくつかのカラーテーマのスクリプトを作成してみました。ついでにカラーテーマ作成用の補助スクリプトも作成してみました。

ターミナルのカラーテーマ

現在公開しているカラーテーマは、以下の5つになります。
これらの色は私が考えたものではなく、他のエディターなどで有名なカラーテーマを参考に作成しました。

  • zenburn
  • ir_black
  • tangotango
  • molokai
  • ambiance

こちらに作成したテーマとスクリーンショットを載せています。

sona-tar/terminal-color-theme GitHub
https://github.com/sona-tar/terminal-color-theme

※ WindowsのMintty環境では確認済みですが、他の環境でも利用できるかの確認はできていません。MacのTerminal.appやiTerm2、Linuxgnome-terminalなどでも実行することができましたらコメントで教えて頂けると嬉しいです。

カラーテーマの使い方

color-theme-zenburnを適用する例で説明します。

git clone --recursive https://github.com/sona-tar/terminal-color-theme.git
cd terminal-color-theme
COLOR_THEME=zenburn
source color-theme-${COLOR_THEME}/${COLOR_THEME}.sh

最後の2行を~/.bashrcなどに追加するとシェルを起動するとともにカラーテーマが適用されます。
Minttyユーザーの方は~/.minttyrcにzenburn.minttyrcの内容をコピペすることでもカラーテーマを設定することができます。
zenburnを適用するとこの記事のトップに貼ってある画像のようになります。

お遊び
  • random_color-theme.sh

お遊びスクリプトです。
実行するとcolor-theme-*/*.shをランダムで適用します。
~/.bashrcなどにsh ~/terminal-color-theme/random_color-theme.shと書いておくと、ターミナルを起動する度にランダムで色が設定されます。
最初はカッコいいと思ったテーマも飽きるといまいちな気がしてくるので、そんなときにお勧めです。

注意

正しい色に表示するにはターミナルが256色に対応できるよう設定する必要があります。
対応済みかどうかの確認は以下のコマンドですることができます。

cd terminal-color-theme
perl 256colors2.pl
  • 256色に対応している場合

  • 256色に対応していない場合


もし対応していない場合には、.bashrcファイルに設定を加えましょう。

  • vi ~/.bashrc
TERM=xterm-256color
  • 設定の反映、確認
source ~/.bashrc
echo $TERM
簡単な仕組みの説明

ターミナルの色はANSIカラーを設定することにより変更することができます。
ANSIカラーとは、ターミナルなどで利用する16色の名前を定義しているもので、ターミナルはこの色の定義に従って色を表示します。
そのため、ANSIカラーの黒に黒以外の赤などを設定すれば、ターミナルでは今まで黒で表示されていたものが赤で表示されるようになります。
またその他に、背景、通常の文字色、カーソルの色の3つを設定することが可能となっています。

ANSI escape code - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/ANSI_escape_code#Colors

カラーテーマの作り方

カラーテーマは簡単に作ることができます。
まず既存の適当なカラーテーマのフォルダをコピーしてリネームしてください。
次に.minttyrcに16色+3つの設定をした後、以下のコマンドを実行すると.shが生成されます。
.shが必要ないという場合にはこの作業は必要ありません。
このとき作る.minttyrcはHTMLなどでよく見る#16進数表記でお願いします。
もしR,G,B表記で作成した場合には、事前に以降で紹介するスクリプトで変換してから、次のコマンドを実行してください。

sh convert_mintty_ansi_color_to_bash_ansi_color.sh new_color-theme.minttyrc

色は既存のエディタなどの有名な色を参考にして通常の8色を決めた後に、ボールドの色をColor Hex - ColorHexa.comのようなサイトで僅かに明るくした色を見つけるといいと思います。

カラーテーマ作成用補助スクリプト

カラーテーマ作成の際にご利用ください。

convert_mintty_ansi_color_dec_to_hex.sh

Mintty用の設定ファイルの色設定項目の値を、10進数から16進数に変換するためのスクリプトです。
引数に.minttyrcのカラー設定のみが保存してあるファイルを指定します。
最初から16進数で設定する場合には使う必要はありません。

convert_mintty_ansi_color_to_bash_ansi_color.sh

Mintty用の設定ファイルをbash用に変換するためのスクリプトです。
引数に.minttyrcの16進数のカラー設定のみが保存してあるファイルを指定します。
10進数の.minttyrcを利用している場合は、convert_mintty_ansi_color_dec_to_hex.shを利用してからこちらのスクリプトを実行してください。

all_convert_mintty_ansi_color_to_bash_ansi_color.sh

すべての./color-theme-*/*.minttyrcをbash用に変換するためのスクリプトです。
特に引数を指定する必要はありません。既に*.shが存在する場合には変換されません。

最後に

random_color-theme.shで選択できるテーマがたくさんあると楽しいので、もし新たなカラーテーマを作成された場合にはgithubに公開した後にpull requesで教えて頂けたらterminal-color-themeにサブモジュールとしてマージさせて頂きます。
pull requestをいただける場合は、.minttyrcと.shがあること、ファイル名とディレクトリ名が他のカラーテーマと同様のルールに則っていることをご確認ください。


あとLS_COLORSというlsのカラー設定の記事もまとめたのでよかったらどうぞ

lsで表示されるファイルの色(LS_COLORS)を様々な言語や拡張子に合わせて設定してみた Web系も関数型言語もあるよ - GeekなNooblog
http://d.hatena.ne.jp/sona-zip/20130623/p1

カラー参考

juba/color-theme-tangotango
https://github.com/juba/color-theme-tangotango
molokai - A port of the monokai scheme for TextMate : vim online
http://www.vim.org/scripts/script.php?script_id=2340
twerth/ir_black
https://github.com/twerth/ir_black
Zenburn - Low contrast colour scheme for low light conditions : vim online
http://www.vim.org/scripts/script.php?script_id=415

その他参考

The 256 color mode of xterm
http://frexx.de/xterm-256-notes/
端末の256色拡張の覚え書き - 試験運用中なLinux備忘録
http://d.hatena.ne.jp/kakurasan/20080701/p1