2月 142012
 

僕は普段から KDE4 使いなんだけども、KDE4 を利用しているとターミナルソフトといういうのは必然的に konsole になるわけであります。

しかし、もう何回もこのブログに書いているんですが、 konsole というのは一個のプロセスが起動して、何個も konsole の画面を開いても一個のプロセスで動作する。つまり、表示される konsole のウィンドはスレッドとして動作しているんですな。

これがまたあーた。一個の konsole ウィンドが変な挙動をするとそのプロセスがおかしくなるということで、表示されている全ての konsole のウィンドはスレッドで動作しているんだけども、それら全てを道連れにお亡くなりになる、もしはフリーズしてしまう。という、それは非常にヒサンな状態になるわけですね。

こんなのは使いたくないよ。一つのウィンドは一個のプロセスのターミナルソフト使いたいよ。ってんで、/usr/ports/x11 の下辺りを ls -d *term* などとして色々物色するんですね。で、今回中々良いのが見つかったのでそれについてちょっと書いてみたいと思います。

今回取り上げるのは gtkterm2 です。 ports 的には x11/gtkterm2 になるんですけどもね。とりあえず make してみると、ターミナルソフト的には vte というのを利用しているみたいですね。 ports 的には x11-toolkits/vte になるみたいですが。ここに GTK2 を利用してタブの機能を盛り込んだみたいな感じです。

利用してみると一つのウィンドで一つのプロセスとして動作するようで中々良い感じですね。では、早速カスタマイズして自分好みの環境で利用してみましょう。

実は gtkterm2 をインストールして、カスタマイズしようとしてあまりにもその設定方法が書かれたウェブが無いのでいっちょ書いてみるか。ということでこのエントリを書いているわけですけどもね;-)。

gtkterm2 の設定ファイルは $HOME/.gtkterm2rc になります。 gtkterm2 を一回起動するとホームディレクトリに設定ファイルが生成されます。そしたらエディタで編集すれば良いでしょう。

それにしてもこの設定ファイル、 gtkterm2 を起動するたんびに毎回 gtkterm2 が更新してくれます。非常にややこすぃー・・。毎回エディタを再起動してあげる必要がありますが・・。

とりあえずフォントの設定から。以下の部分を変更すると自分の好きなフォントになります。

terminalFont= MS Gothic 10

 
上記設定は MS ゴシックを 10 ポイントの表示で利用する場合。フォント名は GTK2 の記述形式ですね。以下のコマンドを実行するとフォント名が抽出できると思うのでそれを記述します。

% fc-list | awk -F, '{print $2}' | awk -F: '{print $1}' | sort

 
MS ゴシックが無い人は “Ume Gothic C4” とか指定すると良いかもですね。

まぁ、上記のようにフォントの指定は色々なウェブ上で書かれているので割と設定は簡単でしょうか。

問題は色のほうです。こいつは解らない・・。orz。また、ウェブを探しまわっても全く見当たらないんですね。でもって $HOME/.gtkterm2rc には以下のように不気味な設定が書かれている。

red=0xff00 0x0000 0x0000 0xaaaa 0x0000 0xaaaa ...
grn=0xef00 0x0000 0x0000 0x0000 0xaaaa 0x5555 ...
blu=0xef00 0x0000 0x0000 0x0000 0x0000 0x0000 ...

 
red=、grn=、blu= の後に 0x0000 が全部で 17 個並んでいます。これが何を意味しているのかが全くわかりませんでした。しょーがないのでソースコード眺めましたよー。src/prefs.c 辺りで色についての記述がありますね。まぁ、読むのも大変なんですけども・・。

で、 grn= の後の一個目のパラメータはバックグラウンドの色の指定になります。二個目のパラメータはカーソル、X11 用語では foreground ってことですけどもね。の指定になります。一個目と二個目の設定だけが特徴的で残りの 15 個はファイルの色になります。この辺り、僕にもわかりません。実行形式ファイルの色は赤とか、ディレクトリは青とか、symlink の色はピンクとか、そんな設定になります。

まぁ、今回は background と foreground の色を変えてみましょう。それにしても RBG カラーってのは # のあとに六桁指定するのにどうして四桁なんだ?と思うのでありますが・・。

例えば background の色を #FFEFEF という、ちょっとピンクっぽい色にしたい場合は以下のように指定します。

red=0xff00
grn=0xef00
blu=0xef00

 
red、grn、blu で RBG の色を前から二桁に指定し、余った後ろの二桁は “0” を指定する。って感じですね。

文字とかカーソルの色は黒にしたいので #000000 になります。その場合は以下になります。

red=0xff00 0x0000
grn=0xef00 0x0000
blu=0xef00 0x0000

 
0x00 の前二桁の部分に “0” を設定し、後ろの二桁は default の “0” を設定します。これで自分の好きな色に設定できると思います。そして、三個目以降、残りの 0x???? は全部で 15 個ありますが、これは default の設定でひとまず試してみてください。 ports の make config ときなんかは不気味な色になりますけどねぇ;-)。

とまぁ、こんな感じで設定すれば自分の好みのターミナルになるのではないかなぁ。と思われます。

自分的に一点変えたいと思っているのが新しいタブを開くとき。 default では CTRL+N なんだけど、CTRL+SHIFT+N に変更したいなぁ。と思っています。ソースコードを変更してしまうのが一番早いかなぁ。などとちょっと思っていますが、機会があったら試してみたいですね;-)。

さーっ!! そんなこんなで、ようやっと一つのウィンドがひとつのプロセスとして動作するターミナルソフトを手に入れた。インストール時に入るのは vte くらいのなので KDE4 を使っていても余計なモノを入れない(インストールしない)のが気に入っています。

gtkterm2 の設定が解らないときはここを参照してください;-)。

2012/02/16 加筆
以下の部分を改修した ports を作りました。

・日本語 po ファイルを書いたのでメニューは日本語表示できるようになります。
・Ctrl+n は emacs とバッティングするので新規タブは Ctrl+t に変更しました。

以下の URL から ports がダウンロードできます。

http://icmpv6.org/Prog/FreeBSD_ports/ports-gtkterm2-20120216.tgz

  2 件のコメント to “gtkterm2 を使ってみる。”

  1. Ctrl+Shift+t で新しいタブを表示するパッチ書いたんだけど、なんか正しく動作しないな・・。Ctrl+n は emacs で持って行かれるので使いたくないので “t” にしたんだけど・・。

    — src/callbacks.c.orig 2004-07-14 06:27:08.000000000 +0900
    +++ src/callbacks.c 2012-02-14 23:51:06.000000000 +0900
    @@ -634,9 +634,9 @@
    return TRUE;
    }
    }
    – if (event->state & GDK_CONTROL_MASK)
    + if (event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK) )
    {
    – if (event->keyval == GDK_n)
    + if (event->keyval == GDK_t)
    {
    on_new_tab_activate (GTK_MENU_ITEM(lookup_widget(GTK_WIDGET(fenster), “new_tab”)), pref);

    このパッチだと Ctrl+t でしか動作しないな・・。まぁ、それでも十分にコトは足りているんだけど;-)。
    GTK 及び GDK に詳しい人いたら改修方法を教えて頂ければと思います。よろしくですー。

  2. […] 過去にもこのブログでは gtkterm2 のエントリを書いたりもしましたが、今回はそれに続く第二弾。と、いう感じでしょうかねぇ。 […]

 コメントを書いてください。

HTML タグが利用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(必須項目)

(必須項目)

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください