色気のあるターミナルをつくろう

今までターミナル環境のカスタマイズにあまり興味を向けてこなかった私ですが、さすがに最近「白背景に黒文字」の味気ない画面に物足りなさを感じるようになってきました。

だいたい下の画像みたいなかんじです。ほぼデフォルト配色のPoderosaに、同じくデフォルト配色のVim

気分よく作業するには、もう少し色気が欲しいよなぁ…ってことで、色々入れ替えてみました。せっかくなので、そのメモを残しておこうと思います。

なお、クライアントOSはWindows 7 Professional 64bit、サーバOSはCentOS 5.5 64bitとなっています。

色気のある画面とは

まずは、どの辺の要素が満たされていれば「色気のある画面」と言えるのかを考えてみたいと思います。

完全に個人的な意見ですが、ざっと次のようなところでしょうか。

綺麗なフォント
基本ですね。個人的には角張ったものより柔らかな印象を与えるもののほうが好みです。
256色表示
これも欠かせないでしょう。色が多いとそれだけでなんとなく落ち着きます。
ソフトな配色
ソフトな配色がいいか、はっきりした配色がいいかは好みの問題でしょうが、私はあまりコントラストの高くない配色が好きです。
背景画像
実用性は皆無ですが、やっぱり背景に薄く画像が表示されていたほうが「それっぽい」でしょう!却って文字が見難いとか言わない。
ペイン分割
これもハッカーっぽくて素敵な要素ですね!ただ、こちらは実用性も兼ね備えていると思います。

これらを満たす環境を作っていきます。

端末エミュレータ選び

なにはともあれ端末エミュレータ

長いことPoderosaにお世話になってきましたが、これは256色表示に対応していないので、残念ながらさよならすることになりました。

他にも、複数タブでsshセッションを無造作に立ち上げまくる方式から、最小限のセッション内で仮想画面を管理するような、もっとスマートな使い方に移行したかった…という目的もあります。

そういうわけで、端末エミュレータにはPuTTYを採用。Poderosaを使い始める前に一時期使っていたこともありますので、出戻りという形になりますねw

PuTTYのバリエーション選択

PuTTY自体にも色々とバリエーションがありまして。

PuTTY本家ごった煮版には、xterm風透過やビットマップ壁紙を設定した場合に、マルチバイト文字の背景が正常に透過しないなど、いくつかの細かな問題があります。

普通に使っている分には問題にならないのですが、色気のある画面を目指す以上は、そこは妥協できないだろう…!ということで、そのあたりが解決されている派生版をいくつか探してみました。

今回はビットマップ画像による背景指定ではなく、xterm風透過を使ってデスクトップの壁紙を表示したいと思います。上2つはビットマップ画像の背景表示に特化したパッチのようでしたので、ICE IVさんのカスタマイズ版(下から2番目)を使わせていただくことにしました。

ICE IV+PuTTYには他にも色々便利な機能が追加されている上に、今も精力的にアップデートが重ねられているようですので、他の方にとってもかなり有力な選択肢になるのではないかと思います。ベースとなっているオリジナルのソースコードが他のカスタマイズ版より新しいという点も素敵。

ICE IV+PuTTYにはレンダリングエンジンをDirect2D/DirectWriteに変更した更なるカスタマイズ版(一番下)もあり、細やかなテキストのレンダリング指定など、魅力的な機能も多かったのですが、まだ開発途上ということもあり、安定度の面でGDI版を選択しました。D2D/DW版が安定してきたら再乗り替えも検討してみようと思います。

ICE IV+PuTTYのインストール

zipアーカイブで配布されていますので、サイトに書かれているとおりに必要なファイルをコピーして完了です。OSが64bitなので、せっかくですし64bit版を使ってみることにしました。設定はレジストリではなくiniファイルに保存するように。

このPuTTYに対する設定を中心に、いくつかカスタマイズを行っていきます。

フォントの設定

プログラミングに適したフォントについては、色んなところで素敵なフォントの情報を見かけることができます。

いくつか吟味した中で、下記のサイトで知った「Inconsolata + Takaoゴシック」の組み合わせが個人的に気に入りました。今回はこれを採用することにします。

上記サイトには、Inconsolataはotfファイルとttfファイルへの2種類のリンクがありますが、OpenTypeなフォントは後述するFontLinkが使えないようですので*1、ttfファイルをダウンロードしてインストールします。Takaoフォントも同様にインストール。

FontLink

さて、これらのファイルをPuTTYで使うフォントとして設定したいのですが、あいにくPuTTYは英文フォントと日本語フォントを別々に指定することができません。*2

そのままフォントにInconsolataを指定すると、日本語部分にMSゴシックが使われるため、ちょっと残念な見た目になります。

これを解決するには、以下のサイトで解説されている FontLink という機能を利用します。

簡単にいうと、「そのフォントに含まれていない文字が呼び出されたときに、かわりにどのフォントを使うか」を指定できる機能です。FontLinkでInconsolataとTakaoゴシックを組み合わせれば、ASCII文字はInconsolata、マルチバイト文字はTakaoゴシックで表示させることができます。

設定方法は、レジストリの「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink」に、

名前 種類 データ
Inconsolata REG_MULTI_SZ TakaoGothic.ttf*3

というデータを追加するだけです。とはいえレジストリの編集なので、自己責任において慎重に。

あとはWindowsを再起動すれば、上記の設定が有効になります。

PuTTYにフォントを設定

このInconsolataをPuTTYのフォントとして指定したいわけですが、何故かGUIのフォント選択画面に表示されない*4ため、putty.ini を直接編集して指定します。

私の環境ではフォントサイズを13に指定すると、日本語文字も綺麗にレンダリングされて見やすかったので、それもついでに指定しておきます。

Font="Inconsolata"
FontHeight=13

同じくPuTTYの設定で、「ウィンドウ > 外観 > フォントの品質」を「クリアタイプ」あたりにしておきます。それと、「ウィンドウ > 変換 > Remote character set」を「UTF-8 (CJK)」に変更し、すぐ下の「CJK 用の文字幅を使用する」にチェックを入れておきます。これらはGUIで設定して大丈夫。

これでフォントの設定は完了です。

カラーの設定

PuTTY自体の色設定

PuTTY自体の色設定は、Google先生にお伺いをたてた結果、以下のサイトで配布されている配色が気に入ったため、使わせていただくことにしました。

ただし、自分の環境ではPuTTYの設定をレジストリではなくiniファイルに保存しているため、上記サイトでダウンロードできるregファイルは使えません。

かわりに putty.ini を以下のように編集します。

Colour0="212,212,212"
Colour1="255,255,255"
Colour2="45,45,45"
Colour3="63,63,63"
Colour4="0,0,0"
Colour5="162,223,169"
Colour6="45,45,45"
Colour7="0,0,0"
Colour8="231,126,126"
Colour9="231,126,126"
Colour10="231,225,154"
Colour11="255,255,128"
Colour12="128,128,255"
Colour13="70,70,255"
Colour14="102,185,217"
Colour15="141,203,226"
Colour16="222,116,146"
Colour17="0,166,166"
Colour18="131,224,135"
Colour19="114,216,132"
Colour20="212,212,212"
Colour21="255,255,255"

Colour22と23は特に変更していません。

加えて、「ウィンドウ > 色 > 太字のテキストは別の色にする」のチェックを外しておきます。「xterm 256 色モードを使うことを許可する」は最初からチェックが入っていると思います。

シェルの設定

CentOSならデフォルトで適切な設定がされていますので、特にすることはありません。

Vim等での表示用に、TERM 環境変数を設定する必要はあるかもしれません。Bashを使っている場合は .bashrc

export TERM=xterm-256color

を追加しておきます。

256色表示の確認

以下のサイトから256colors2.plを落としてきます。

実行して以下のように綺麗に256色表示されればOKです。


Vimのカラースキーマの設定

私はエディタにVimを使っています。

Vimのカラースキーマは、それこそ目移りするほど多くの選択肢があるわけですが、悩んだ結果、zenburnを使うことにしました。

以下のページから最新の zenburn.vim を落としてきて ~/.vim/colors に設置します。

そのまま使うと、Vimを立ち上げている間は全面がzenburnによって指定された背景色によって塗りつぶされ、背景を透過しなくなってしまいますので、以下のように背景色の指定を削除しておきます。

240c240
<         hi Normal ctermfg=188 ctermbg=237
---
>         hi Normal ctermfg=188

あとは .vimrc に以下の行を追加してVimの設定は完了。

colorscheme zenburn

背景の設定

背景は前述した通り、ビットマップ画像による指定ではなく、xterm風透過を使います。

xterm風透過を選んだのは、Windowsのテーマ設定でデスクトップ背景に数分単位で複数の画像を切り替えるスライドショーを適用しているため、そちらを透過したほうが飽きがこないだろう、という理由からです。

ICE IV+PuTTYでは他にAero Glassによる透過エフェクトという素晴らしい選択肢もあるのですが、個人的には後ろのウィンドウが透けていてもあまり嬉しくないので、そちらはパスしました。

PuTTYの設定画面で「ウィンドウ > 壁紙 > 背景透過モード」に「xterm風透過」を指定し、すぐ下の「背景画像のアルファ値」を「64」くらいにしておきます。この辺は好みで調整することになるかと思います。

先程zenburnの背景色指定も消しておきましたので、これで常に背景にデスクトップの壁紙が透過表示されるようになります。

ただ、残念なことに、透過した背景画像の更新はPuTTYを移動したときかリサイズしたときにのみ行われるようで、デスクトップのスライドショーによる切り替えがリアルタイムに反映されたりはしないようです。これができるとより素晴らしいのですが…。

tmuxのインストール

最後に残ったのはペイン分割です。PuTTY自体に表示ペインの分割機能はありませんので、端末内で仮想画面を管理する screen 的なソフトウェアを利用します。

そのまま素直にscreenを使っても良かったのですが、tmux という代替ソフトもあるようです。

画面の縦分割あたりは、screenでも最新の開発版では実現されていますので、正直どちらでも良かったのですが、デフォルトの挙動がより好みだったという理由で、今回はtmuxを使ってみることにしました。

ソースからインストールする方法もありますが、RPMforgeに2010年9月2日時点の最新版であるバージョン1.3のRPMがありましたので、そちらでインストールしました。

tmuxの設定

tmuxの詳しい操作方法や設定方法は、まだ私が使いこなせていないため、日を改めて調査してみようと思います。

上記のサイトに加え、以下のサイトも参考になります。

とりあえず最低限、以下の設定を ~/.tmux.conf にしておけば、個人的に違和感なく使えました。

set-option -g prefix C-z
set-window-option -g mode-keys vi

デフォルトでPrefix+カーソルキーでペインのフォーカス切り替えができるのが素敵。

PuTTYのサイズ設定

tmuxによって同一画面内に複数ペインを表示しますので、PuTTYの画面サイズは大きい方が良いです。

フルスクリーンにしてもいいのですが、Twitterクライアントなど、同時に表示しておきたいものが他にいくつもあったため、単に大きなウィンドウサイズを指定するだけにとどめておきました。

PuTTYの設定画面の「ウィンドウ > ウィンドウのサイズの指定」で桁が180行が60くらい。これくらいあると、左右にペイン分割してあっても、それぞれ80桁以上表示できるので良いです。

ただ、Inconsolata+Takaoゴシックのフォントサイズ13でこのサイズ指定にすると、WUXGA未満の解像度のモニタだとスペース的に厳しいかもしれません。

その他の設定

その他、見た目に関わるものではありませんが、個人的な好みとして、PuTTYに対して以下の設定をしておきました。

  • 端末 > ベル > ベルの鳴らしかた」を「なし」にする
  • ウィンドウ > 動作 > ALT-Space でシステムメニューを表示する」をチェックする
  • ウィンドウ > 動作 > Alt-Enter でフルスクリーンにする」をチェックする
  • ウィンドウ > 動作 > Ctrl + TABでPuTTYのウィンドウを切り替える」をチェックする
  • 接続 > SSH > 認証 > Attempt GSSAPI auth (SSH-2)」のチェックを外す

まとめ

だらだらと書いていたら随分と長くなりましたが、最終的に以下のような画面になりました。

ちょっとは「色気のある画面」になったかな…?*5

あとはtmuxをガンガン使い込んでいく感じです。世の中にはこんな風にscreenを使いこなしている方もいらっしゃるようですし…。

さすがにここまでとはいきませんが、ぼちぼちカスタマイズしていきたいと思います。

*1:面倒なので実際に確認はしていません。

*2:前述のICE IV+PuTTY D2D/DW版なら別々に指定できます。でも、なぜか日本語フォントが常にメイリオになってしまう…。

*3:私の環境では、何度かフォントをインストールし直したりしていたせいか、フォント名が"TakaoGothic_1.ttf"になっていました。

*4:私は試していませんが、参考までに:Windows 7 で任意のフォントが使えない場合: 世の中は不思議なことだらけ

*5:ちなみに、普段はこんなクールっぽい壁紙にはしていません。基本的に某少女ばかりの弾幕STGキャラ率100%です。ちょっと日和りました。ごめんなさい。