Pengalaman terminal yang lebih baik untuk Windows Subsystem untuk Linux (WSL)?


29

Terminal untuk Windows Subsystem untuk Linux (WSL) cukup minim. Saya belum pernah menggunakan terminal pada Windows - saya biasanya menggunakan Ubuntu atau OSX - tetapi saya terkejut bahwa terminal defaultnya sangat telanjang.

Apakah mungkin untuk:

  1. Hubungkan program terminal Windows ke WSL atau

  2. Luncurkan program terminal Ubuntu dari WSL sebagai jendela X?

Jawaban:


26

Saya pribadi melakukan yang terakhir: gunakan VcXsrv sebagai server X saya dalam mode multi windows, kemudian luncurkan terminal xfce4 (karena gnome-terminal memiliki masalah visual yang saya tidak peduli untuk mencoba mempelajari cara memperbaikinya), dan tiba-tiba saya memiliki terminal yang kompeten dengan dukungan font dan warna.

Saya menemukan saya perlu menambahkan ini ke bashrc saya ...

export DISPLAY="localhost:0"
export TERM=xterm-256color

Lakukan perbaikan dari reddit ini untuk dbus:

sudo sed -i 's$<listen>.*</listen>$<listen>tcp:host=localhost,port=0</listen>$' /etc/dbus-1/session.conf

Saya juga menginstal compiz dan saya menggunakan proyek cbwin untuk menjalankan program windows dari shell xfce4-terminal saya.

Saya sangat senang dengan pengaturan ini dan menggunakan NeoVim + banyak plugin linux asli meskipun mesin "untuk bekerja" saya harus Windows. :)

Dimungkinkan juga untuk memulai server SSH di Bash-on-Linux-on-Windows dan kemudian terhubung, katakan dari MinTTY seperti dari Cygwin.

PS: untuk membuat peluncuran xfce4-terminal tanpa rasa sakit dan tanpa jendela cmd bash ekstra, saya menulis sebuah program yang tidak melakukan apa pun kecuali memulai proses bash dengan argumen untuk memulai xfce4-terminal tanpa jendela konsol. Saya melakukan ini di C # - pada dasarnya menggunakan argumen "UseShellExecute" false dan "CreateNoWindow" benar. Saya kemudian menyematkan itu ke taskbar saya dan itu hampir tidak terlihat.

EDIT: Jawaban dengan VBScript brilian. Ini skrip yang sama, tetapi versi JScript ...

WScript.CreateObject("WScript.Shell").run('bash.exe -l -c "DISPLAY=:0.0 xfce4-terminal"', 0, false);

1
Jawaban yang dipilih karena komprehensif dan membantu saya menemukan stackoverflow.com/a/39188790 ; Saya menyadari memperbarui MobaXterm ke> 9.0 membuat saya terminal yang layak untuk WSL.
David LeBauer

Jika ada yang ingin tahu, inilah tautan ke pos reddit yang darinya the "fix from reddit" for dbusdicabut.
telp

@tel terima kasih! Saya sebenarnya tidak tahu dari mana asalnya dan telah menambahkan tautan ...
aikeru

Jika "masalah visual yang tidak ingin Anda perbaiki" adalah Anda tidak dapat melihat bagian dari prompt direktori atau nama file alasannya adalah mereka berwarna biru tua. Mereka tidak terlihat pada latar belakang terminal gnome ungu. Caranya adalah dengan memetakan kembali warna biru tua menjadi pirus dan kemudian berfungsi dengan baik.
WinEunuuchs2Unix

22

Butuh beberapa saat untuk mengetahui semua langkah tersirat dalam jawaban lain, jadi inilah ringkasan langkah demi langkah:

  1. Di Windows, instal VcXsrv atau XMing .
  2. Dalam Bash untuk Windows, instal terminal: sudo apt-get install xfce4-terminal.
  3. Tambahkan export DISPLAY=:0ke .bashrc. (Menambahkannya ke .profileatau .bash_profile tidak bekerja untuk saya ). Ini akan memungkinkan Anda untuk memulai xfce4-terminaldengan benar dari bash, tetapi ortogonal dengan perintah di bawah ini.
  4. Jalankan yang berikut ini di jalan pintas atau di prompt Jalankan (seperti yang disarankan @OhJeez di komentar):

    powershell -windowstyle hidden -Command "iex \"bash ~ -c 'DISPLAY=:0 xfce4-terminal'\" "
    

Catatan lain:

  • The ~dimulai bashdi direktori home Anda, Anda dapat menghapusnya untuk memulai dalam direktori apa pun .vbsfile di, sebagai gantinya. Jadi nyaman untuk memasukkannya C:\Users\foo, misalnya.
  • Perhatikan bahwa XMing harus berjalan agar skrip berfungsi; untuk memulainya secara otomatis dengan Windows Anda dapat mengikuti instruksi dalam artikel ini .
  • Emacs 24 (termasuk dengan Ubuntu 14.04) tampaknya tidak berfungsi dengan XMing; Saya harus menginstal versi yang lebih baru seperti yang disarankan dalam posting ini .

1
Terima kasih atas bantuan Anda. Ketika saya menjalankan skrip, sepertinya tidak ada yang terjadi (server Xming sedang berjalan). Namun, jika saya membuka bash dan menjalankannya xfce4-terminalberfungsi dengan baik. Selain itu, jika saya lari bash -l -c xfce4-terminaldari windows cmd, saya mendapat peringatan Gtk-WARNING **: cannot open display:dan tidak ada yang terjadi. Saya cukup bingung karena saya pikir perintah ini harus berperilaku identik, ada tebakan?
rperryng

@ rperryng ya - Saya juga mencoba untuk mendapatkan satu-liner untuk membuka xfce tanpa perintah bash jelek meminta di antaranya, tetapi belum berhasil.
Andrew Mao

1
Solusi terbaik untuk memulai xfce4-terminal menggunakan pintasan. Ada flicker, tetapi tidak ada jendela yang tertinggal: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -Command "iex \"bash.exe ~ -c 'DISPLAY=:0 xfce4-terminal'\" " Versi lain yang akan memulai Xming jika tidak berjalan:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -Command "iex '& \"C:\Program Files (x86)\Xming\Xming.exe\" -multiwindow'; iex \"bash.exe ~ -c 'DISPLAY=:0 xfce4-terminal'\" "
OhJeez

@ Ohh, bagus, terima kasih sudah mengerjakan seluk-beluk perintah itu.
Andrew Mao

Penanganan untuk tampilan resolusi tinggi. Jika Anda memiliki tampilan 4k, Anda akan memiliki font yang buram di terminal Anda. Untuk memperbaikinya, Anda perlu: 1. Gunakan "VcXsrv Windows X Server" alih-alih Xing sourceforge.net/projects/vcxsrv 2. Jalankan xserver dalam mode kompatibilitas. Untuk melakukan ini, Anda perlu: klik pintasan VcXsrv dengan tombol kanan mouse. Pilih "Properti". Pada tab "Kompatibilitas" setel kotak pada "Abaikan perilaku penskalaan DPI tinggi ..." dan pilih "Aplikasi" di tarik turun berikutnya. 3. Jalankan terminal xfce4 dan ubah pengaturan font. Ubah font menjadi yang lebih besar.
koorchik

10

Saya membuat (dan menggunakan) terminal sumber terbuka untuk Windows Subsystem untuk Linux (WSL) yang disebut wsl-terminal , didasarkan pada minttydan wslbridge.

tangkapan layar


Hati-hati dengan promosi diri - ini bisa terlihat seperti spam. askubuntu.com/help/promotion

2
Promosi diri tidak apa-apa jika Anda mengakuinya
David LeBauer

Dan Anda belum mengakuinya.
muru

5
Dan tolong, tambahkan beberapa detail tentang mengapa wsl-terminalakan memberikan pengalaman terminal yang lebih baik.
Cynplytholowazy

2
Terima kasih telah berbagi ini. Barang-barang Anda sudah bekerja lebih baik daripada terminal built-in - setidaknya itu dapat menangani pembungkus baris pada baris perintah sedikit lebih baik. A CTRL-A untuk dengan cepat pergi ke awal perintah masih gagal. Saya senang dengan orang-orang mempromosikan barang seperti ini. Orang harus tenang.
EdH

5

Pada instalasi Ubuntu yang baru, saya baru saja menginstal XMing (di Windows) kemudian (di Ubuntu) xfce4-terminal, dan setelah saya export DISPLAY=:0, itu berhasil.

Untuk menyingkirkan konsol default Windows, skrip VBS ini berfungsi:

WScript.CreateObject("WScript.Shell").run "bash -l -c xfce4-terminal", 0, True

(Dengan $ DISPLAY diset pada Anda .profile.)

sunting: Dan untuk membuat skrip dapat dibuat, buat pintasan dengan target wscript "C:\path\to\thescript.vbs".


VBS tampaknya berfungsi, namun jendela terminal terbuka dan ditutup setelahnya. Bagaimana saya bisa tetap beroperasi?
TCB13

3

Di Windows:

  • Klik di sudut kiri atas jendela bash.
  • Di menu yang terbuka pilih 'Properti'
  • Tetapkan opsi yang Anda inginkan seperti font, dll. (Bahkan ada font mono Ubuntu!)
  • Setelah mengatur properti mereka akan diterapkan untuk jendela saat ini. Untuk menetapkannya sebagai default klik kiri atas jendela dan klik default.
  • Anda dapat menekan Alt + Enter untuk mengaktifkan mode layar penuh.

Saya harap ini membantu.


Saya ingin menunjukkan bahwa ia memiliki tampilan / penggunaan yang sama dengan terminal Ubuntu (Gnome) kecuali ia menambahkan dukungan mouse. yaitu Anda dapat mengklik judul kolom dihtop
WinEunuuchs2Unix


2

Extraterm lebih dari sekedar emulator terminal. Ini menyediakan kotak alat untuk bekerja dengan aplikasi terminal dan baris perintah Anda.

  • fitur
  • Mendukung Linux dan macOS, pada Windows WSL, CMD, PowerShell dan Cygwin
  • kompatibel xterm
  • Banyak tab dan panel, pisah dan pasang sesuka Anda
  • Tampilkan gambar di terminal
  • Dukungan Unicode
  • Emoji warna
  • Keyboard Palette Perintah yang ramah
  • Binding kunci yang bisa dikonfigurasi
  • Pilihan berbasis keyboard
  • Integrasi shell; dapat mengisolasi dan 'membingkai' perintah output. (mendukung bash, zsh dan ikan)
  • Unggahan dan unduhan mudah menggunakan integrasi shell
  • Output perintah dapat diedit di tempat. Pengeditan multi-kursor
  • Output perintah sebelumnya dapat digunakan sebagai input untuk perintah baru
  • Mendukung tema iTerm2 dan TextMate
  • Zoom teks

Saya sekarang menggunakan terminal ini, karena memiliki fitur yang sangat saya inginkan. cara mudah untuk beralih antara cmd, powershell, bash, fish dll.
nelaaro

1

Karena pembaruan terbaru untuk Windows 10 (dan WSL) semuanya tampaknya berfungsi menggunakan konsol "bash windows" asli. (Dan saya tidak berbicara tentang pembaruan Windows 1809 yang terkenal). Ini berfungsi bahkan pada versi Perusahaan setidaknya untuk 1803 17134.345 build).

Lihat artikel di https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEnvironmentWithinLinuxOnWindows10.aspx

Peringatan kecil - untuk benar-benar menggunakan konsol bash di Windows, Anda harus meluncurkan tmux - dan semuanya akan berfungsi seperti yang ditunjukkan oleh Scott di blog-nya.


Ini sangat lucu! "exec tmux" memang memecahkan semua masalah terminal "bash.exe" Windows asli (aneh memotong garis setelah mengubah ukuran).
Yves Dorfsman

1

Terminal untuk zaman yang lebih modern https://eugeny.github.io/terminus/

Terminus adalah terminal yang sangat terinspirasi oleh Hyper. Namun, ini dirancang untuk orang-orang yang perlu menyelesaikan sesuatu.

  • Berjalan di Windows, macOS dan Linux
  • Skema tema dan warna
  • Pintasan yang sepenuhnya dapat dikonfigurasi
  • Dukungan Unicode penuh termasuk karakter lebar ganda
  • Tidak tersedak output yang mengalir cepat
  • Pengalaman mirip shell yang tepat di Windows termasuk penyelesaian tab (via Clink)
  • Dukungan PowerShell (+ Core), WSL (Bash pada Windows), Git-Bash, Cygwin, Cmder dan CMD
  • Ingat tab Anda
  • Klien SSH terintegrasi dan manajer koneksi

1

https://hyper.is/

  • Ini didasarkan pada elektron yang membuatnya mudah dikembangkan dan diperluas menggunakan javascript.
  • Itu tidak menggunakan konsol windows standar dengan cara apa pun.
  • Hal ini memungkinkan Anda untuk memilih bash shell backend, cmd, PowerShell.

    the shell to run when spawning a new session (i.e. /usr/local/bin/fish)
    if left empty, your system's login shell will be used by default
    
    Windows
    - Make sure to use a full path if the binary name doesn't work
    - Remove `--login` in shellArgs
    
    Bash on Windows
    - Example: `C:\\Windows\\System32\\bash.exe`
    
    PowerShell on Windows
    - Example: `C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`
    shell: 'C:\\Windows\\System32\\bash.exe',enter code here
    

Tema dan plugin yang sangat bagus

plugins: [
    //"hyper-dracula"
    //"hyper-solarized-dark"
    "hyper-material-theme"
],

Menggunakan panduan ini saya bisa mendapatkan WLS saya, tetapi bash bekerja dengan sangat baik.


Terima kasih - terlihat seperti proyek yang menarik tetapi dapatkah Anda mengatakan lebih banyak tentang perangkat lunak dan cara mengkonfigurasinya untuk WSL?
David LeBauer

1
@ DavidLeBauer Saya harap itu membantu.
nelaaro

Hyper sangat lambat.
Mithril


0

Memperluas jawaban aikeru dan n.caillou karena tidak ada solusi VBScript / JScript mereka langsung bekerja untuk saya.

Call WScript.CreateObject("WScript.Shell").Run("bash.exe -l -c 'DISPLAY=:0.0 xfce4-terminal --working-directory $HOME'", 0, True).

Script harus diawali dengan Callsaat menggunakan tanda kurung dalam menjalankan perintah, lihat di sini . Kutu juga perlu sebaliknya. Selain itu, argumen tambahan untuk xfce4-terminal akan memulai terminal di folder home pengguna. Maaf jika ini benar-benar berfungsi dengan kode JScript, saya tidak tahu bahasa skrip ini.

Menyimpan ini sebagai file vbscript.vbs dan mengeksekusi dari cmd prompt oleh

wscript vbscript.vbs

kemudian buka jendela terminal xfce4 (diberikan XMing atau yang sama berjalan) setelah 2 detik penundaan. Mengubah ini menjadi pintasan seperti yang disarankan oleh karya n.caillou dan mengklik pintasan akan secara otomatis menelurkan jendela terminal xfce baru dengan penundaan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.