VNCは、3年ぐらい前に使ったことがあるのですが、その時の印象としては、まぁ、えらく遅くてつかえんなぁ、、という感じでしばらく記憶の彼方に遠ざかっていました。
しかし、最近ではCPUも早くなったし、以前ほどでもなかろうと、期待を込めてインストールしてみたものの、8ビットカラーならともかく、16ビットでgnomeなんか動かそうものなら、カクカク、タラタラと動くその様に、改めて失望感を覚えたのでありました。
そんな折、(どこか忘れたが)海外のLinux系ニュースサイトで、偶然にも
TightVNCなるものに出会いました。駄目元で試してみたら、これがなかなかいけるみたいなので、今回、きちんと導入してまとめておくことにした次第であります。
Webサイトの説明によれば、TightVNCとは、低速のネットワーク経由での利用に最適化されたVNCの改良版です。効果的な圧縮アルゴリズムの採用、マウスカーソル動作のローカル処理化、圧縮レベルの選択機能などを実現しており、オリジナルのVNCにさまざまな改良や最適化が施されています。
従来のVNCと比較して、どの程度改善されているのかは、
こちらのページにありますが、なるほど、すごい圧縮率です。
同サイトにrpmやtar-ball、zipなどで固められたパッケージがあるので、それをインストールするだけ。私の場合は、rpm形式のLinux用サーバとzip形式のWindows用クライアント(ビューワ)をそれぞれインストールしました。
サーバ側の設定は、デフォルトのままでも一応は使えるのですが、
- Window Managerが(とてもシンプルな)twm : これはこれで悪くないが。。
- 色数が8bitカラー(256色)
- TrueTypeフォントが使えない
- 日本語入力ができない
といったシンプルな画面が現れます。普段使っている、Vine標準のGnomeなデスクトップや日本語環境に慣れた人は納得がいかないはず?
そこで、次のような設定を行います。
・/etc/X11/xinit/xinitrcを ~/.vnc/xstartup としてコピー。
$ cd ~/.vnc/ ; cp -a xstartup xstartup.org
$ cp -a /etc/X11/xinit/xinitrc ~/.vnc/xstartup
これで、普段使い慣れたデスクトップ環境が立ち上がるようになります。しかし、フォントが変。。これは、VNC自体ではTrueTypeフォントを扱えないため、Gnomeのデスクトップの日本語文字などがバケバケになってしまうから。そこで、VNCでもxfs経由でTrueTypeを使うよう、次のような設定を行います。
・root権限で、/usr/bin/vncserver (vnc起動用のperlスクリプト)を編集。
140行目付近に↓を追加
$cmd .= " -fp tcp/localhost:7100";
$cmd .= " -co /usr/X11R6/lib/X11/rgb";
$cmd .= " -deferglyphs 16";
・やっぱ、16ビットカラーでしょ。
36行目付近にある↓を変更
$geometry = "1024x768";
$depth = 16;
・META キーをALTキーに割り当てたい。
140行目あたりに↓を追加
$cmd .= " -compatiblekbd";
さぁ、これで、サーバ側の準備ができたので、上記で設定したポート番号でxfsを起動し、続けて、vncserverを起動します。xfsはroot権限で起動しますが、vncサーバはログオンするuidで起動します。
$ su -c "xfs -droppriv -daemon -port 7100"
$ vncserver
xfsを毎回起動するのが面倒なら、/etc/rc.d/init.d/xfs に追加すればいいかな。
あと、これは、私のノートPC固有の問題なのかもしれないけど、VNC経由で数字の5が入力できない、という困った問題が発生。これは、なぜか数字の5のキーがキーコード=22(日本語106キーではBackSpace)になっているため、/etc/X11/xinit/Xmodmap の中で、
keycode 22 = BackSpace
!keycode 49 = Kanji
keycode 111 = Print
keycode 113 = Alt_R
keycode 120 = Katakana
keycode 129 = Henkan
keycode 131 = Muhenkan
keycode 133 = backslash bar
とされていることから、5=BackSpace となってしまうため。そこで、1行目を
!keycode 22 = BackSpace
とすることで、解決しました。他のマシン(106キーボード)でも問題ないみたいなので、これでよしとしよう。:-)
※注:その後、VineSeedにupdateしたら、いつの間にか日本語環境でのキーマップの設定を、/etc/X11/xinit/Xmodmap.jp から読み込むようになっていました。。
Windows用の専用ビューワ(クライアントでは、圧縮アルゴリズムやレベルを選択できます。私は、Tightというアルゴリズムを選択しました。その他はとりあえずデフォルトのまま。接続先として、ホスト名:ディスプレイNo. としますが、私の場合、接続するホスト側で既に起動されているXサーバがディスプレイNo.= 0 を使っているので、VNCは1番を使うようになります。
では、クライアントを起動。
めでたく、WindowsからVine LinuxのGnomeが使えるようになりました(パチパチ)。
個人的にはフルスクリーンにする方が使いやすいと思いますが、撮影の都合上、ウィンドウ表示にしました。(笑)
標準的なGNOMEでは、M-TAB でウィンドウの切替えをショートカットできるようになっていますが、VNC経由でこれをやると、Windows側のタスク(ウィンドウ)切替えが働いてしまい、Gnome上にMS-Windowsの窓がかぶさってしまいます。これはこれで便利なこともあるのですが、Gnome上のウィンドウ切替えをショートカットで実現できないのは不便なので、これを回避するため、GNOME(ウィンドウマネージャ)側でC-TABにウィンドウ切替えを割り当てることにしました。
具体的には、GNOME Control Center −> Sawmillウィンドウマネージャ −> ショートカット −> 挿入 で、C-TAB に Cycle windows を割り当てます。