Luncurkan startxwin di terminal saat ini

2

Saya menggunakan Cygwin dan saya menggunakan Console2 sebagai pengganti terminal Cygwin default. Saya perlu menggunakan penerusan X11, dan setiap kali saya menjalankan startxwin meluncurkannya di terminal baru. Saya malah ingin membukanya di terminal yang sama (atau di tab baru), di dalam Console2. Idealnya saya bisa meluncurkan Cygwin dengan startxwin atau meluncurkan tab baru dengan server Cygwin XWin. Ini mungkin melibatkan pengeditan .startxwinrcfile, tetapi saya tidak yakin bagaimana cara melakukan ini. Saya baru saja mulai menggunakan penerusan X11 di Cygwin.

Bagaimana saya bisa melakukan ini?

Terima kasih.

EDIT
Saya mencoba memulai sesi X11 di Cygwin. Ini dapat dilakukan dengan mengatur DISPLAYvariabel lingkungan ke 0.0. Server X11 kemudian diluncurkan dengan mengeluarkan perintah startxwin. Setelah mengeluarkan perintah itu, terminal baru terbuka, di jendela yang berbeda. Terminal itu sangat mendasar dan sangat jelek. Apa yang saya ingin terjadi adalah terminal itu muncul sebagai tab baru di Console2 atau menjalankannya di terminal yang sama dengan tempat diluncurkannya. Dengan cara ini saya dapat terus bekerja di terminal yang telah dioptimalkan sesuai dengan keinginan saya. Atau, jika dimungkinkan untuk meluncurkan Cygwin dengan penerusan X11 yang sudah diaktifkan, itu akan lebih ideal. Saya saat ini meluncurkan Cygwin dengan menggunakan perintah iniH:\bin\bash.exe --login -i -c "cd /cygdrive/d; exec /bin/bash". Seluruh alasan mengapa saya perlu menggunakan X11 adalah karena saya SSHing ke server jauh yang memiliki program dengan GUI yang perlu saya gunakan. Saya hanya ingin dapat melakukan semuanya di dalam Console2.

TehTechGuy
sumber
Tidak jelas. Apa yang sebenarnya Anda luncurkan, dan apa masalahnya?
Maximus
@ Maximus, Lihat edit di atas
TehTechGuy

Jawaban:

2

Saya mengalami kesulitan ketika beralih ke konsol2 mencoba secara konsisten mendapatkan konsol untuk mengenali ketika X sedang berjalan kemudian untuk memberikannya dengan benar ke tab ketika saya mengatur tab untuk terhubung ke sistem lain. Ini adalah solusi yang saya akhirnya memutuskan.

Pertama adalah menjalankan sesi cygwin melalui file dos bat sederhana ke shell untuk mengetahui dengan benar apakah X sedang berjalan atau tidak. Untuk melakukan ini, saya menggunakan if / test untuk melihat apakah $ DISPLAY sudah disetel. Jika tidak, ia menjalankan panggilan xset sederhana ke -display: 0,0 untuk melihat apakah X sedang berjalan. (0,0 adalah pengaturan default untuk cygwin saya. Anda jelas dapat memeriksa yang lain di sini juga jika diinginkan). Jika mengembalikan true, maka ia akan mengatur DISPLAY yang sesuai. Saya menambahkan ini ke akhir dari / etc / profile di cygwin, walaupun Anda mungkin bisa memasukkannya ke dalam .bashrc atau skrip lain yang akan selalu berjalan ketika Anda masuk.

# /etc/profile check to set display if X is running on :0.0
if [ -n $DISPLAY ]; then
  if xset -display :0.0 q &>/dev/null; then
    export DISPLAY=:0.0
  fi
fi

Saat menambahkannya ke / etc / profile, Anda harus mengaktifkan shell login saat memulai konsol2. mis. memanggil bash --login -i dari file dos .BAT Anda.

Untuk menangani pergi ke sistem lain, saya awalnya hanya menggunakan panggilan langsung ke ssh dari file batch, tapi ini melompati pengaturan tampilan ini. Untuk menyiasatinya, saya memodifikasi file bat untuk memanggil bash --login terlebih dahulu:

(pengaturan DISPLAY merupakan upaya awal dari saran lain. Tidak benar-benar melakukan apa pun untuk sebagian besar aplikasi cygwin)

ssh.bat

@echo off

C:
chdir C:\cygwin\bin

if NOT "x%DISPLAY%" == "x" set DISPLAY=":0.0"

set sshcmd="ssh -Y "

bash --login -c %sshcmd%%1%

Penting untuk dicatat, modifikasi ke / etc / profile tidak akan melakukan apa pun jika X server cygwin (atau server Xwindow lainnya) tidak berjalan pada: 0,0 atau jika Anda tidak menggunakan shell login. Tetapi jika Anda menggunakan bash -i --login di Cygwin.bat Anda dan arahkan pengaturan console2 Anda ke file itu, dan gunakan contoh Ssh.bat untuk terhubung ke sistem jarak jauh (misalnya, letakkan C: \ cygwin \ ssh.bat [remote- host-name] di bidang 'Shell:' untuk pengaturan tab Konsol dan C: \ cygwin \ bin sebagai direktori startup)

Scott
sumber
Terima kasih atas solusinya. Seperti yang Anda katakan, Anda masih harus memastikan bahwa server X sedang berjalan. Juga bagus untuk memodifikasi ssh.bat untuk menerima nama pengguna. Selain itu, tampaknya berfungsi dengan baik. Ini jauh lebih bagus daripada menggunakan shell X default.
TehTechGuy