2008年1月15日火曜日

cygwin X の起動スクリプト.bat

cygwin Xを起動する場合、cygwin bashから、startx を起動するとcygwin bashのウィンドウが残ります。このウィンドウを終了させると Cygwin Xも終了してしまうぅ。ので最初のcygwin bashのウィンドウを残しておく必要がありそうなんですが、なんか目障りです:-<

まずは、startxスクリプト中のxinitを起動している部分を cygwin runで包みましょう。

xinit "$@"

run xinit "$@"

これでcygwin bashは不要になりますので、cygwin bashを起動する.batファイルを
@echo off
C:
chdir C:\cygwin\bin
bash --login -i C:\cygwin\home\ogurak\startx

こんな風に作っておくと、Windowsからこの.batを起動することでcygwin Xが立ち上がりますねぇ:-)
runコマンドに関して、

run コマンドはコンソール・ウィンドウを隠してプログラムを実行する Cygwin 独特のコマンドです。 Cygwin プログラムのほとんどはコンソール・モード・アプリケーション *14ですから,本来ならば,標準入出力のためのコンソール・ウィンドウがまとわりつきます。 run コマンドは,このコンソール・ウィンドウを隠して,あたかも GUI モード・アプリケーションのような見かけにします。 run コマンドはもともと Cygiwn 用 X11 プログラムのひとつでした。しかし,今年 (2005年) 11月に改編され, base カテゴリの独立パッケージになりました。今は X11 を導入しなくてもデフォルトでインストールされます。
などとあります。

てことで、更にこんなサンプルも・・・
@echo off
C:
chdir \cygwin\bin
run bash -l -c 'cd /usr/local/lib/pysol-4.81/src; python pysol.py --nosound'

なので、startxのように、startxを編集せんでも、start.batを
bash --login -i C:\cygwin\home\ogurak\startx

run bash --login C:\cygwin\usr\X11R6\bin\startx
としておけばOKです。

0 件のコメント: