Pada November 2014 , versi terbaru dari startxwinpenggunaan xinituntuk memulai server Cygwin / X, yang sebenarnya disebut XWin.exe. Prosesnya kira-kira seperti ini:
- Kamu panggil
startxwin
startxwinmembuat .Xauthorityfile baru dan yang disebut.serverauth.1234 (di mana 1234berubah setiap kali Anda memulai X)
startxwin mengatur beberapa parameter klien dan server
startxwin panggilan xinit dengan parameter klien dan server, termasuk beberapa skrip shell opsional dan referensi ke file auth.
xinit memulai X server, menjalankan beberapa skrip rc
xinitmemulai xtermskrip klien (biasanya ) klien atau klien.Kami ingin menghindari ini
- Ketika Anda menutup klien atau skrip rc klien selesai,
xinitmatikan X server. Jika kita menghindari langkah 6, kita juga harus menghindari ini
Dimungkinkan untuk menjalankan XWin.exelangsung dari dalam shell login Bash, tanpa tugas di sekitarnya startxwindanxinit melakukan. Keuntungan utama dari ini adalah berperilaku seperti yang kita inginkan: X server mulai dan tetap berjalan. Sayangnya, karena tidak ada .Xauthorityfile yang diteruskan saat startup, server X Anda akan mengizinkan proses lokal untuk terhubung, yang tidak aman.
Untunglah itu xinitmelakukan sebagian besar hal yang tidak kita inginkan. Ada peretasan cepat yang memintas xinittetapi menjaga elemen yang tersisastartxwin terkait dengan server itu sendiri.
TL; DR: Di startxwin, ada garis di dekat bagian bawah yang berbunyi:
eval xinit \"$client\" $clientargs -- \"$server\" $display $serverargs
Ubah baris itu menjadi:
eval \"$server\" $display $serverargs
Mulai sekarang, startxwinskrip akan memanggil XWin.exelangsung, bukan menelepon xinit. Jelas ini akan menonaktifkan skrip rc klien, tetapi kami tidak menginginkannya terlebih dahulu. Ini juga berarti bahwa X akan terus berjalan tanpa perlu proses klien untuk membuatnya tetap hidup (yaitu tetap tidak xinitmembunuhnya).
exec sleep infinityseperti yang ditunjukkan di sini: x.cygwin.com/docs/faq/cygwin-x-faq.html#q-startxwinrc-exit