Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)

No.505  Re[3]:その後エラーはなくなったものの、Xが起動不可
発言者: MSだす。
発言日: 2002 07/23 02:57
 

> #! /bin/sh
> export DISPLAY=127.0.0.1:0.0
> PATH=/usr/X11R6/bin:$PATH
> cd
使用するディスプレイとして、自ホスト(127.0.0.1)の
一番めのディスプレイ(:0.0)を指定し、
/usr/X11R6/bin(X関係の実行ファイルのあるところ)に
パスを通す。
cd でユーザのHOMEに移動。


> # Clearnup from last run.
> rm -rf /tmp/.X11-unix
>
> userresources=$HOME/.Xresources
> usermodmap=$HOME/.Xmodmap
> sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
> sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

/tmp/.X11-unixという一時ファイルを消去。
resourceファイル、およびkeymapを変更するための
設定ファイルのパスを上記の変数に格納。
ここではあなたのホームディレクトリに
.Xresourcesと.Xmodmapがあるかどうかは
不問に付されている。
なお、少なくとも私のCygwin+Xfree86では、

sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

は無いです。


> # merge in defaults and keymaps
>
> if [ -f $sysresources ]; then
> xrdb -merge $sysresources
> fi
>
> if [ -f $sysmodmap ]; then
> xmodmap $sysmodmap
> fi
>
> if [ -f $userresources ]; then
> xrdb -merge $userresources
> fi
>
> if [ -f $usermodmap ]; then
> xmodmap $usermodmap
> fi
>
先のresoureceファイルおよびmodmapファイルが
あれば使うようにしている。
例えば、$usermodmapはusermodmapという変数の値で、
ここでは、$HOME/.Xmodmapを指す。
[ -f $usermodmap ]はそのファイルがあれば、真。
つまりあなたのホームディレクトリに.Xmodmapがあれば
then 以下を実行、なければ何もしない。


> XWin -screen 0 1024x768x256 &
バックグラウンドにて、Xwinを起動。
screen numberが0、
1024x768x256は多分screenの解像度と色深度の指定。
ただ、man XWinを見ると

-screen screen_number width height

となっているから、書き方が違うかも。
ただ、エラーにはなってないようですね…。
Xのウインドのサイズが画面一杯に広がって良いなら
-screen 以降はなくても良いでしょう。
> rxvt -e bash &

rxvtを起動、rxvt上で、直ちにbashを実行。
> #twm &
#はコメントアウトの意味。
> exec wmaker &
これは少し変だといいう気がします。
exec wmaker でwmakerを起動している。
exec しているので、以降の処理はwmakerに移る…。
一方、&がついているから、バックグラウンドで…。
exec と & は矛盾する指定です。
どちらが適用されるのだろう…。
自分のCygwin+XFree86でやってみると、
結局バックグラウンドでwmakerが走るようです。
execを使った場合、普通は、以降の行は実行されず無効です。
他方、wmaker &、だと、引続き、wmakerの実行状況と
無関係に以降の行のコマンドが実行されていく。

> #blackbox &
コメント行。
> xmodmap .Xmodmap
> xsetroot -solid aquamarine4
この部分が実行されるかどうかは
わかりませんが、
もう一度、xmodmap .Xmodmapが実行されている。
現在のディレクトリがあなたのホームディレクトリだから、
そこにある.Xmodmapを使おうとしている。
.Xmodmapがなければエラーになるはず
(file not foundなどいいったメッセージになるでしょう。)
もし、.Xmodmapが無いにもかかわらず
エラーにならないようなら、exec したことにより
無視され、実行されていない。

> exit
シェルスクリプトを終了している。
なくても良いでしょうきっと。
あってもいいけど。

> ただし、
> xmodmap: unable to open display '127.0.0.1:0.0'
> のメッセージがでているので、記述内容に間違いがある
> のでしょう?!
>
xmodmapからのメッセージ。
ディスプレーがopenできない。

xserver が起動して無い、
環境変数DISPLAYによるディスプレーの指定が間違っている、
といった理由が普通考えられます。

このエラーの出どころは、
> if [ -f $sysmodmap ]; then
> xmodmap $sysmodmap
> fi

> if [ -f $usermodmap ]; then
> xmodmap $usermodmap
> fi
のところでしょう、きっと。

まだxserver(XWin.exe)が実行されていないところで、
xmodmapが実行されていますから。
もしシステムの.Xmodmapや個人的に作った.Xmodmapがあり、
それを実行したいなら、Xwin.exeを実行した後に

xmodmap $usermodmap

を実行すべきだということになります。


▼関連発言

313:0xc0000022のエラー [naoya] 04/09
 ├358:Re:0xc0000022のエラー [mz] 05/01
 ├420:Re:0xc0000022のエラー [mogemog] 06/12
 │└423:Re[2]:0xc0000022のエラー [naoya] 06/13
 │ └428:Re[3]:0xc0000022のエラー [naoya] 06/14
 └450:その後エラーはなくなったものの、Xが起動不可 [naoya] 06/24
  └451:Re:その後エラーはなくなったものの、Xが起動不可 [naoya] 06/25
   └453:Re[2]:その後エラーはなくなったものの、Xが起動不可 [naoya] 06/26
    └505:Re[3]:その後エラーはなくなったものの、Xが起動不可 [MSだす。] 07/23
     └506:Re[4]:その後エラーはなくなったものの、Xが起動不可 [naoya] 07/23 <

Pass 保存

早田のホームページへ
CGIROOM