CygwinにはCygwin/X
というX Window System
がある。インストールはsetup-x86.exe
(32bit)かsetup-x86_64.exe
(64bit)から行う。X 11
カテゴリのxorg_server
をインストール。他に必要なものもあったかもしればいが忘れた。わからなければX 11
のカテゴリを全部インストールしてもいい。
インストールするとWindowsのアプリ、7以前だとすべてのプログラムとかにXwin Server
というプログラムが出現するはず。
これをクリックして使おうとすると、デフォルトではxterm
という汚いウィンドウが出てくる。これを使わずにターミナルにはMintty
(デフォルトのCygwinのターミナル)を使い、Xサーバーだけ使う方法をメモしておく
環境変数DISPLAY
の設定
自分の使用しているシェルの設定ファイルに1行下記のように追加しておく
~/.zshrc
export DISPLAY=:0.0
Xサーバーの起動
以前のCygwin/X
はホームに.startxwinrc
という空のファイルを置いておけば、xterm
を起動せずにサーバーだけ裏で起動することができた。最近はCygwin/X
の挙動が変わって、空の.startxwinrc
を置いておくとサーバーが一瞬起動してすぐ終了するようになった。.startxwinrc
を実行して(つまり空なのでなにもせずに)、すべて終わると終了するようになったようだ。
ここにいろいろ同じ問題に出くわした人の書き込みがあった
X does not start after cygwin upgrade - Stack Overflow
xterm
を起動せずにXサーバーだけを起動するには、ターミナルから以下のコマンドでOK
$ run xwin -multiwindow -noclipboard
このrunコマンドはコンソールウィンドウを隠してプログラムを実行するCygwinのコマンド。新しいxtermの汚いウィンドウが出てくると困るのでrunコマンドを使う。裏でX serverが起動してくれる。
毎回このコマンドを打つのは面倒なのでエイリアスしておく
alias runx='run xwin -multiwindow -noclipboard'
runx
でXサーバーが裏で起動してくれる。タスクトレイにCygwin/X
のアイコンが現れていれば成功。setupからxclockなどをインストールして実行して試して見るといい
ssh
関係
ssh
の接続先でX Window
を使いたい場合は、接続するときに
$ ssh -X aaa.bbb.ccc
のように-X
もしくは-Y
オプションをつける。ちなみにこのオプションを使って接続した後にローカルのCygwin/X
を起動してもちゃんと動いてくれるので順番はどっちでもいい。
デフォルトの設定では何分かするとXの接続が切れる設定らしい。これを回避するためには~/.ssh/config
に
ForwardX11Timeout 596h
と書いておく。596時間が最大値らしい