SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2008-06-12(Thu) Fedora9、端末チューン

  今日は、ハッカーのオペレーションには欠かせない「端末」、いわゆる「コンソールエミュレータ」、要するに「gnome端末」をチューンする。

  オイラは、Windows上では、日頃から比較的高機能なTERATERMを愛用、自作マクロまで組んでチューニングしていた。なので、正直、gnome端末には物足りなさを感じなくもないのだが、だからといって究極に機能が不足しているわけでもなし、それよりなにより「標準である」というのは結構な強みなので、こいつをそのままベースにしてチューニングを始めることにする。

  まず、手始めは、端末画面の色。白地に黒というのはごく一般的ではあるものの、コントラストが高すぎて目に痛い。長時間に渡ってニラめっこ、しかも端末画面では頭を酷使する作業を行う場合が多いので、もう少しリラックスできる暗めの色が望ましいのだ。いうなれば、ホテルの間接照明のような。

  というわけで、オイラのチョイスは往年のプラズマディスプレイを彷彿させるオレンジ〜茶系。カラーコードでいうと#FF6020と#481800だ。文字通り異色ではあるが、なかなかどうして、慣れると快適である。また、グリーンディスプレイ風味も悪くない。#40FF00と#204000という感じ。新しい人にはマトリックスっぽいなんて言われるかもしれないが。

  次はフォント。これは好みだが、標準のVLゴシックがかなりイイ。ゼロに斜線が入っているのもプログラマ向き……なのだが、オイラは僅差でOsakaの等幅。やはり、長年、見慣れているモノがいい。

  意外と重要なのがアイコン。デフォルトのデスクトップテーマであるFedoraは、モノトーン〜青系で統一されている……のは、決して悪くないのだが、タスクバーのアイコンがどれもモノトーンであり、パッと識別できないのはマイナス。特に「端末」と「ファイルブラウザ」は、形状も色配置も似ているせいもあって識別性が最悪で、これが両方とも複数が開かれる性格を持っているから始末が悪い。

  そこで、端末の実際の表示イメージに近い「プラズマ」と「グリーン」に色変換したアイコンに変更する。アイコンの編集の際には、ちゃんとGIMPを使うぞ。こういう場合、領域を区切って「着色」機能を使うといい。こんな感じ。

  画像の説明

  gnome端末には、プロファイルごとにアイコンを変更できる機能がついているので、個々に設定する。実際の端末の印象とも適合するし、これはなかなかにナイスなプチハックではないだろうか。

  次、ちょっとだけ深いハック。タブのクローズボタンがジャマだという件。

  gnome端末は、ウィンドウ+タブと、Operaと同様のウィンドウ構成をとることができる。これは、アカウントごと、ホストごと、用途ごと、など、うまくルール付けをすることで、とても便利に使えるのだが、惜しいのがタブにクローズボタンが「付いている」こと。

  単純に、誤ってボタンを押すと、問答無用でタブがクローズしてしまうのだ。動いていたプロセスは置き去りで、元に戻す方法がない。これは困る。TERATERMだったらクローズの際には確認を求められるし、Operaはゴミ箱から元に戻せる。これらは後から、必要にかられて実装された機能なのだと思う。

  そもそも、タブはそれ自体がボタンなわけで、その上にボタンつけるのはナンセンスだ。Operaもこの状態がデフォルトになってはいるが、ボタンを取り外す設定も可能なので問題ない。そもそもジェスチャーでクローズできるならそっちを使うべきだ、頻繁に利用するタブ切り替えの都度、イラッとくる必要はない。gnome端末だって、通常はCtrl+Dで閉じることができる。

  と、ここで、オープンソースであることを活用するのである。気にくわないなら改造してしまえばいいのだ。Windowsではこうはいかない(場合が多い、アプリがオープンソースでも開発環境が有償である場合が多いし)。

  まず、Fedoraのサイトから最新のソースコードを入手する。Fedora上で扱う以上、形式はsrpmが望ましい。rpmbuild -bpでソースパッケージを展開し……ようとしたら、大量の開発関連パッケージが必要だと怒られた。そっか、GUI開発なんてするつもりなかったので、開発関連パッケージは入れてなかったっけ。yumで丸ごと導入す……

# yum grouplist
# yum groupinstall "X ソフトウェア開発" "GNOME ソフトウェア開発"

  ……ぷはぁ、2時間もかかったぞ。安いフラッシュを使ったSSD環境では、パッケージインストールがガンだなぁ。それ以外では概ね、不満なく使えているのに。

# rpm -ivh gnome-terminal-2.22.2-1.fc9.src.rpm
# cd /usr/src/redhat/
# rpmbuild -bp SPECS/gnome-terminal.spec

  rpmbuildでrpmパッケージを作る都合上、変更部分はパッチファイル化する必要がある。独立したパッチファイルを作るのは面倒なので、既存のパッチに紛れ込ませる。具体的には、以下のようにする。

# vi BUILD/gnome-terminal-2.22.2/src/terminal-window.c

  以下の3行を殺すことで、クローズボタンを「バカ」にし……

   1430 //  g_signal_connect (G_OBJECT (close_button), "clicked",
   1431 //          G_CALLBACK (close_button_clicked_cb),
   1432 //          screen);

  ……この変分ごと、既存のパッチファイルとスリ替える。

# diff -U 3 BUILD/gnome-terminal-2.22.2/src/terminal-window.c.338913-revert-336325 BUILD/gnome-terminal-2.22.2/src/terminal-window.c > ../SOURCES/gnome-terminal-2.15.0-338913-revert-336325.patch

  で、パッケージビルド。

# rpmbuild -ba SPECS/gnome-terminal.spec

  しばらくして正常終了したら、RPMS/i386の下にRPMパッケージができているはずなので。アップデートインストールする。

# rpm -Uvh RPMS/i386/gnome-terminal-2.22.2-1.fc9.i386.rpm

  gnome端末が動いている状態でもインストールはできそうだが、全インスタンスを終了して立ち上げ直すまで、新しいプロセスでは動かないはず。縁起物なので、いったんログアウトして、黒い端末画面からインストールすることをお勧めする。

  改めてログイン後、タブのクローズボタンが動作しなくなっていることを確認しよう。ホントはこのようにボタンを「バカ」にするのでなく、ボタン自体を消し去ってしまう改造の方が望ましいが、これ以上、試行錯誤するのは面倒なのでこれでよしとする。

  つーわけで、気にくわないなら改造できるのが、オープンソースの醍醐味である。他にナイスなハックがあったら、教えて欲しい。んじゃ。