[スタート]メニューの[XWinサーバー]リンクを使用するかstartxwin
、Cygwinシェルから実行してCygwinのXサーバーを起動すると、自動的にxtermウィンドウが表示されます。
どうすればそれを回避できますか?
(質問に触発されたこのコメントによるStijn Vanpouckeスタックオーバーフローにオーバー)
[スタート]メニューの[XWinサーバー]リンクを使用するかstartxwin
、Cygwinシェルから実行してCygwinのXサーバーを起動すると、自動的にxtermウィンドウが表示されます。
どうすればそれを回避できますか?
(質問に触発されたこのコメントによるStijn Vanpouckeスタックオーバーフローにオーバー)
回答:
更新:この回答は現在古くなっています。最新の回答については、以下のuser551570の回答を参照してください。
からman startxwin
:
コマンドラインで特定のクライアントプログラムが指定されていない場合、クライアントプログラムを起動するシェルスクリプトとして実行するために
startxwin
呼び出されるユーザーのホームディレクトリ内のファイルを探し.startxwinrc
ます。そのようなファイルが存在しない場合startxwin
、以下をデフォルトとして使用します。xterm -geometry +1+1 -n login -display :0
したがって、Xサーバーの起動時にプログラムが起動しないようにするには、空の.startxwinrc
ファイルが必要です。Cygwinプロンプトから次を実行するだけです。
touch ~/.startxwinrc
.startxwinrc
と、Xサーバーがすぐに消えます。:-(
のとして2014年11月、最新バージョンのstartxwin
使用がxinit
実際に呼び出されるのCygwin / Xサーバを起動しますXWin.exe
。プロセスは次のようになります。
startxwin
startxwin
新しい.Xauthority
ファイルを作成し、.serverauth.1234
(1234
Xを起動するたび変更されます)startxwin
クライアントとサーバーのパラメーターを設定しますstartxwin
xinit
オプションのシェルスクリプトと認証ファイルへの参照を含む、クライアントとサーバーのパラメーターを使用した呼び出し。xinit
Xサーバーを起動し、rcスクリプトのいくつかを実行しますxinit
クライアント(通常xterm
)またはクライアントrcスクリプトを開始します。これを避けたいxinit
、Xサーバーをシャットダウンします。手順6を回避する場合は、これも回避する必要があります実行することが可能であるXWin.exe
、周囲の作業なしに、バッシュのログインシェル内から直接、startxwin
およびxinit
実行します。これの主な利点は、Xサーバーが起動し、実行し続けるという希望どおりに動作することです。残念ながら、.Xauthority
起動中にファイルが渡され、Xサーバーはローカルプロセスに接続を許可しますが、これは安全ではありません。
幸いなことにxinit
、それは私たちが望んでいないほとんどのことを行います。バイパスするxinit
がstartxwin
、サーバー自体に関連する残りの要素を保持する簡単なハックがあります。
TL; DR:ではstartxwin
、下の近くに次のような行があります。
eval xinit \"$client\" $clientargs -- \"$server\" $display $serverargs
その行を次のように変更します。
eval \"$server\" $display $serverargs
これ以降、startxwin
スクリプトはを呼び出すのXWin.exe
ではなく、直接呼び出しxinit
ます。明らかに、これによりクライアントのrcスクリプトが無効になりますが、そもそもそれらは必要ありません。また、Xがクライアントプロセスを必要とせずにXを実行し続けることを意味します(つまり、Xを強制終了しませxinit
ん)。
Cygwin Xをstartxwin(.exe)で起動するのを習慣にしました。私の.startxwinrcファイルは次のように読み取ります。
X :0 -rootless mrxvt -geometry +1+1 -n login -display :0 -tt ImTabbed
これまでのところ、うまくいきました。表示される唯一のエラーは、別のXプロセスによってディスプレイがまだ「開いている」ことに関するものです。このエラーは、Xサーバーがすべてのセッションでデフォルトで生成する特定のファイルを指定します。Cygwinの人々は、セッションが終了しても削除されないことを知っています。
だから私はそれを「治す」ためのエイリアスを書いた:
alias freex='rm /tmp/.X0-lock'
私はそれを忘れる必要がある場合に備えて、.bashrcファイルと.bash_profileファイルに同じ行(引用符の間の部分)を入れます。
HTH。
BZT
exec sleep infinity
た:x.cygwin.com/docs/faq/cygwin-x-faq.html#q-startxwinrc-exit