古いWindows 10でコマンドプロンプトのカラーテーマをアップグレードする

2017年8月2日にリリースされた Windows 10 の build 16257 でコマンドプロンプトがフルカラー(24ビット)に対応し、それと同時にコマンドプロンプトの標準カラーテーマ(配色)も更新された。しかしこのカラーテーマ、build 16257 以前の Windows 10 をアップグレードしても有効にならない。そこで、古い Windows 10 で新しいカラーテーマを使うための設定方法を書いてみた。

新旧のカラーテーマの違い

従来のカラーテーマでは、青の文字色が暗すぎて読みにくいなど、文字色を活用するコンソールアプリを使うとツラかった。それに対して新しいカラーテーマでは全色が見直されており、青文字の読みにくさが改善される上にモダンで美しい見た目に改善される。Windows でもコンソールをヘヴィに使う人間ならば、ぜひ新しい配色を使ってみて欲しい。

従来のカラーテーマではコントラスト過剰で見疲れしやすいのに対して(ちなみに左下の方に青文字の@が表示されている):

f:id:sgryjp:20170812003252p:plain

新しいカラーテーマではコントラスト差が抑えられ、落ち着いた見疲れしにくい表示になる:

f:id:sgryjp:20170812003301p:plain

新旧それぞれのカラーテーマの、各色の値は次の通り(RGB値をカンマ区切りで表記):

色の名前
BLACK 0,0,0 12,12,12
DARK_RED 128,0,0 197,15,31
DARK_GREEN 0,128,0 19,161,14
DARK_YELLOW 128,128,0 193,156,0
DARK_BLUE 0,0,128 0,55,218
DARK_MAGENTA 128,0,128 136,23,152
DARK_CYAN 0,128,128 58,150,221
DARK_WHITE 192,192,192 204,204,204
BRIGHT_BLACK 128,128,128 118,118,118
BRIGHT_RED 255,0,0 231,72,86
BRIGHT_GREEN 0,255,0 22,198,12
BRIGHT_YELLOW 255,255,0 249,241,165
BRIGHT_BLUE 0,0,255 59,120,255
BRIGHT_MAGENTA 255,0,255 180,0,158
BRIGHT_CYAN 0,255,255 97,214,214
WHITE 255,255,255 242,242,242

なお上記データは以下の Microsoft のブログから引用させていただいたので、間違いは無いはず:

https://blogs.msdn.microsoft.com/commandline/2017/08/02/updating-the-windows-console-colors/blogs.msdn.microsoft.com

カラーテーマを規定値に適用する

カラーテーマを変更するには、まずコマンドプロンプトを起動してシステムメニュー(左上のアイコンをクリックして表示)から「規定値」を選択する。

f:id:sgryjp:20170811175003p:plain

すると「コンソール ウィンドウのプロパティ」という画面が現れるので、そこで「画面の色」タブを選択する。このタブには16個、違う色で塗りつぶされたボックスがあるのだけれど、これらが上に記したカラーテーマの各色に対応している(画面の左から順に、上表の上から対応)。各ボックスを選択すると「選択した色の値」欄で色味を確認・変更できるので、これを新しいカラーテーマの値に変更してやれば良い。正しく変更すると、変更前は次のようになっていたところ:

f:id:sgryjp:20170811175727p:plain

次のようになるはず:

f:id:sgryjp:20170811175743p:plain

……なお、その設定内容はレジストリに記録されるものなので、この設定を一発で適用するレジストリファイルを作って適用する方が楽ではある。具体的には、拡張子が .reg であり、内容が次のようになっているテキストファイルを作り(文字コードは "Unicode" (UTF-16 LE)、そのファイルをダブルクリックして適用すれば良い。レジストリファイルを作って適用する場合、自己責任でお願いします。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Console]
"ColorTable00"=dword:000c0c0c
"ColorTable01"=dword:00da3700
"ColorTable02"=dword:000ea113
"ColorTable03"=dword:00dd963a
"ColorTable04"=dword:001f0fc5
"ColorTable05"=dword:00981788
"ColorTable06"=dword:00009cc1
"ColorTable07"=dword:00cccccc
"ColorTable08"=dword:00767676
"ColorTable09"=dword:00ff783b
"ColorTable10"=dword:000cc616
"ColorTable11"=dword:00d6d661
"ColorTable12"=dword:005648e7
"ColorTable13"=dword:009e00b4
"ColorTable14"=dword:00a5f1f9
"ColorTable15"=dword:00f2f2f2

コマンドプロンプトを使う既存のショートカットは作り直す

コマンドプロンプトの実行ファイル cmd.exe へのショートカットファイルは、普通のファイルへのショートカットファイルとは異なりカラーテーマも「ショートカットファイル自体に記録できる」らしい。そのため、上記のように規定値を変更する前に作られたコマンドプロンプトを起動するためのショートカットを使うと、昔のカラーテーマが使われてしまうことがあった。この場合、おそらく単純にショートカットファイルを作り直せば良いはず。

補足:「カラーテーマ」について

コマンドプロンプトの「カラーテーマ」について補足。ANSI 規格の中には「黒、赤、緑、黄、青、マゼンタ、シアン、白、および、それぞれを明るくした色」の計16色を、コンソール(テキスト端末)で使うための仕様があるそうだ。で、それは「○○という命令を使うと文字色を赤にすること」といった形で色を名前で指定しているだけなので、実際の色味(RGB成分値など)を何にするかは、テキスト端末の実装に任せられている。この記事での「カラーテーマ」とは、「ANSI 規格で指定された計 16 色を具体的にどのような色味で表示するか」を表している。