2013年2月8日金曜日

Cygwin/X on DELL(Windows XP)

 Cygwin/Xがあることは知っていたし、DELLにもいれてあるのだが、まったく使っていなかったらいつもまにか、動かなくなってしまっていた。それもあって思わずX-mingをいれてしまったのだが、待てよ、Cygwin/Xでもいいんじゃないか、と思ってアップデートした。
 一瞬、動かし方を忘れていてググってしまった。
 あっ、startxか。
 そうなのだった。Cygwinって結局、Linuxなんだよなぁ。普通のUnix上のXと同じなのだった。別のマシンのGDMに接続するには「X -broadcast」(-query hostnameでもできるけど、-broadcastならIPアドレスがわからなくても接続できる)。で、ThinkPad X60上のGDMに勝手に接続。
 ログイン画面が表示され、ここでもやはりGNOMEはうまく動かず、Xfceを使用。
 なぜか表示されるフォントサイズがX-mingのときと微妙にちがう。でかくなっている。よくわからん。フルスクリーンにすることもXから直に起動するとできなさそうだ(X-mingはできる)。startxwin.exeを使うと、「xwininfo -root」で見てみると、フルスクリーンになっているようだが。どうやらこれで動かすと、ルートウィンドウは隠され、xtermなどがまるでWindows上で動いているように見えるようになっているらしい。
 ほー。

 X-mingの方が微妙に暗いし、フォントも小さいように見える。X-mingは最新版というわけではないので、その影響かもしれない。いろいろ試してみることにしてとりあえず、Windowsから直接、起動できるようにXWin Serverのやり方を見てみる。おおっ、なるほどこんな手もあるのか。ということはrun.exeへのショートカットに「C:\cygwin\bin\run.exe /usr/bin/X -broadcast」でいいのか。
 ちなみにX-mingの方もX-Lunchの設定ファイルを保存すれば、そのファイルをクリックして動かせることに気づく。こちらは拡張子をX-Lunhに紐づけてあって中身はXMLの設定になっていた。
 いやはや、いろんな手練手管があるものだ。感心してしまった。

しかしあいかわらず、どちらからもGNOMEが動かない。
 エラーメッセージがでることもあって——ただ問題はフォントがないのか、マップできてないのか、豆腐だらけでなんと書いてあるのか、読めない。そういうときはターミナルすら立ち上げられないのでカット&ペーストでどこかに保存することもできない……。
 状況からとりあえず、フォント回りだろう、と見当をつけてCygwin/Xにあるfontを全部、インストールしてみる。そうしてCygwin/XでGNOME on ThinkPad X60を動かすと、だいぶん動く状況になっていた。すくなくともメニューのフォントも表示されて……エラーメッセージも読めた。
 ファイルがつくれません、だと?
 ためしに裏からsshで入ろうとしても入れない。

 実はDELLからだけでもなく、ThinkPad上でログインしたときにもうまく動作しなくなることがあった——ファイルディスクリプタ番号がとれなくなっていたのか。
 sysctlしてみる。



$ sysctl -a | grep maxfiles
sysctl -a | grep maxfiles
kern.maxfiles: 11912
kern.maxfilesperproc: 10720


 十分そうに見えるけど、足りないらしい。kern.maxfilesの値を10倍にしてDELLからGNOME指定でログインすると正常に動作した。
 これが原因だったか。納得である。
 フォントが豆腐に化けていたのもフォントファイルが開けなくなっていたからかもしれない。Cygwin/Xにインストールしたフォントは実は不要だったかもしれないなぁ、と思いつつ、もしかしたらローカルに(DELL上)になかったらネットワーク越しにThinkPad X60のフォントをさがしにいって余計にファイルディスクリプタを消費していたのかもしれない。socketもたしか、ファイルディスクリプタの制限を受けていたような気がする(下記の参考サイトに書いてあった)。
 それにしてもXfceが動いてよかったよ。そうでなければ、あきらめていた。そういえば、Xfceでもアプリケーションが起動しないときがあったりしたが、同じ原因かもしれん。

参考サイト:第 12章設定とチューニング

 ちなみに/boot/loader.confに次の値を追加した。

kern.maxfiles="119120"
 これで大きな問題はキーレイアウトだけになった。
 まぁ、Alt-tabとAlt+kanjiがWindowsに喰われてしまうのはしかたがない。不便だが——指が無意識のうちに動くので——、ホィールマウスが使えるようになるので我慢しよう。
 問題は「setxkbmap -rules xorg -layout jp -model jp106 -option ctrl:swapcaps」してもうまくキーがマップされないことだ。
 CtrlキーとCapsLockキーの入れ替えは調整できなさそう、ということはわかった。DELL(Windows)ではWindowsのレジストリをいじってひっくり返しているからだ。ThinkPad X60はXの機能でやろうとしている。いやぁ、一発でうまく調節するのはむずかしい。.xsessionファイルで調整しようにもどうやらGNOMEはその設定を上書きしているようなんだし。ということはキーレイアウトをjp106にするにはもう四の五のいわずにGNOMEにjp106を登録すべきだな。で、登録した。

参考サイト:不合対処:GNOME環境でのキーボードの設定エラー

 CtrlキーとCapsLockキーの入れ替えは「setxkbmap -option ctrl:swapcaps」をシェル化。ThinkPad X60のときだけ自分で動かす。

 さてX-mingとCygwin/X、どちらを使うか。
 Cygwin/Xの方はやはりローカル(DELL)のフォントを使ってくれているようで(それでX-mingとはフォントの大きさがちがって見えたらしい)、それを考えると、Cygwin/Xがいいようだ。
 もうひとつ、ちがいがあってユーザがログアウトしたときの挙動だ。Cygwin/XはXそのものが終了するのだが、X-mingはGDMのログイン画面に復帰してしまう。フルスクリーンで使いたいときはX-ming、それ以外はCygwin/Xというところだろうか……。たぶんCygwin/Xだけで十分だな。


追記:Cygwin/Xでもフルスクリーンができるようだ。(man XWin