Trải nghiệm thiết bị đầu cuối tốt hơn cho Hệ thống con Windows cho Linux (WSL)?


29

Thiết bị đầu cuối cho Hệ thống con Windows cho Linux (WSL) khá tối thiểu. Tôi chưa sử dụng thiết bị đầu cuối trên Windows nhiều - tôi thường sử dụng Ubuntu hoặc OSX - nhưng tôi ngạc nhiên rằng thiết bị đầu cuối mặc định quá trống rỗng.

Có thể một trong hai:

  1. Kết nối chương trình thiết bị đầu cuối Windows với WSL hoặc

  2. Khởi chạy chương trình thiết bị đầu cuối Ubuntu từ WSL dưới dạng cửa sổ X?

Câu trả lời:


26

Cá nhân tôi làm điều sau: sử dụng VcXsrv làm máy chủ X của tôi ở chế độ nhiều cửa sổ, sau đó khởi chạy xfce4-terminal (vì gnome-terminal có vấn đề về hình ảnh mà tôi không quan tâm để cố gắng học cách khắc phục), và đột nhiên tôi có một thiết bị đầu cuối có thẩm quyền với phông chữ và hỗ trợ màu sắc.

Tôi thấy tôi cần thêm những thứ này vào bashrc của mình ...

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

Thực hiện sửa lỗi từ reddit này cho dbus:

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

Tôi cũng đã cài đặt compiz và tôi sử dụng dự án cbwin để chạy các chương trình windows từ shell xfce4-terminal của tôi.

Tôi rất hài lòng với thiết lập này và sử dụng NeoVim + rất nhiều plugin linux gốc mặc dù máy "for-work" của tôi phải là Windows. :)

Cũng có thể khởi động máy chủ SSH trong Bash-on-Linux-on-Windows và sau đó kết nối với nó, nói từ MinTTY như từ Cygwin.

PS: để khởi chạy xfce4-terminal không gây đau đớn và không có cửa sổ bd cmd bổ sung, tôi đã viết một chương trình không có gì ngoài bắt đầu quá trình bash với các đối số để khởi động xfce4-terminal mà không có cửa sổ giao diện điều khiển. Tôi đã làm điều này trong C # - về cơ bản sử dụng các đối số "UseShellExecute" false và "CreateNoWindow" true. Sau đó tôi ghim nó vào thanh tác vụ của mình và nó dường như không có gì.

EDIT: Câu trả lời với VBScript là tuyệt vời. Đây là cùng một kịch bản, nhưng một phiên bản JScript ...

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

1
Câu trả lời được chọn vì nó toàn diện và nó giúp tôi tìm stackoverflow.com/a/39188790 ; Tôi nhận ra rằng việc cập nhật MobaXterm lên> 9.0 đã cho tôi một thiết bị đầu cuối tốt cho WSL.
David LeBauer

Nếu bất cứ ai tò mò, đây là liên kết đến bài đăng reddit từ đó the "fix from reddit" for dbusđã được gỡ bỏ.
điện thoại

@tel cảm ơn! Tôi thực sự không biết nó đến từ đâu và đã thêm liên kết ...
aikeru

Nếu "vấn đề trực quan bạn không quan tâm để khắc phục" là bạn không thể thấy một phần lời nhắc của thư mục hoặc tên tệp thì lý do là chúng có màu xanh đậm. Chúng không thể nhìn thấy trên nền thiết bị đầu cuối màu tím. Mẹo nhỏ là ánh xạ lại màu xanh đậm sang màu ngọc lam và sau đó nó hoạt động tốt.
WinEunuuchs2Unix

22

Phải mất một chút thời gian để tìm ra tất cả các bước ngụ ý trong các câu trả lời khác, vì vậy đây là tóm tắt từng bước:

  1. Trên Windows, cài đặt VcXsrv hoặc XMing .
  2. Trong Bash cho Windows, cài đặt thiết bị đầu cuối : sudo apt-get install xfce4-terminal.
  3. Thêm export DISPLAY=:0vào của bạn .bashrc. (Thêm nó vào .profilehoặc .bash_profile không làm việc cho tôi ). Điều này sẽ cho phép bạn bắt đầu xfce4-terminalđúng cách từ bash, nhưng trực giao với lệnh bên dưới.
  4. Chạy phần sau trong một phím tắt hoặc trong lời nhắc Chạy (như @OhJeez đã đề xuất trong phần bình luận):

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

Ghi chú khác:

  • Các ~khởi động bashtrong thư mục chính của bạn, bạn có thể loại bỏ nó để bắt đầu trong bất cứ thư mục .vbstập tin là trong, để thay thế. Vì vậy, nó thuận tiện để đặt nó vào C:\Users\foo, ví dụ.
  • Lưu ý rằng XMing phải được chạy để kịch bản hoạt động; để khởi động nó tự động với Windows, bạn có thể làm theo hướng dẫn trong bài viết này .
  • Emacs 24 (bao gồm Ubuntu 14.04) dường như không hoạt động với XMing; Tôi đã phải cài đặt một phiên bản mới hơn như đề xuất trong bài viết này .

1
Cảm ơn bạn đã giúp đỡ. Khi tôi chạy tập lệnh, dường như không có gì xảy ra (máy chủ Xming đang chạy). Tuy nhiên, nếu tôi mở bash và chạy xfce4-terminalnó hoạt động tốt. Hơn nữa, nếu tôi chạy bash -l -c xfce4-terminaltừ windows cmd, tôi nhận được cảnh báo Gtk-WARNING **: cannot open display:và không có gì xảy ra. Tôi khá bối rối khi tôi nghĩ rằng các lệnh này sẽ hành xử giống hệt nhau, bạn có đoán được không?
rperryng

@rperryng yeah - Tôi cũng đang cố gắng để có một lớp lót để mở xfce mà không có dấu nhắc lệnh bash xấu xí ở giữa, nhưng chưa có may mắn.
Andrew Mao

1
Giải pháp tốt nhất để bắt đầu xfce4-terminal bằng phím tắt. Có một cái nhấp nháy, nhưng không có cửa sổ nào ở phía sau: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -Command "iex \"bash.exe ~ -c 'DISPLAY=:0 xfce4-terminal'\" " Một phiên bản khác sẽ bắt đầu Xming nếu nó không chạy: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

@OhJeez tốt đẹp, cảm ơn vì đã tìm ra sự phức tạp của lệnh đó.
Andrew Mao

Giải pháp cho màn hình độ phân giải cao. Nếu bạn có màn hình 4k, bạn sẽ có phông chữ mờ trong thiết bị đầu cuối của mình. Để khắc phục điều này, bạn sẽ cần: 1. Sử dụng "VcXsrv Windows X Server" thay vì Xing sourceforge.net/projects/vcxsrv 2. Chạy xserver ở chế độ tương thích. Để làm điều này, bạn sẽ cần: nhấp vào phím tắt VcXsrv bằng nút chuột phải. Chọn "Thuộc tính". Trên hộp kiểm "Tương thích", đặt hộp kiểm "Ghi đè hành vi chia tỷ lệ DPI cao ..." và chọn "Ứng dụng" trong danh sách thả xuống tiếp theo. 3. Chạy xfce4-terminal và thay đổi cài đặt phông chữ. Thay đổi phông chữ thành một phông chữ lớn hơn.
koorchik

10

Tôi đã tạo (và sử dụng) một thiết bị đầu cuối nguồn mở cho Hệ thống con Windows cho Linux (WSL) được gọi là wsl-terminal , nó dựa trên minttywslbridge.

ảnh chụp màn hình


Hãy cẩn thận với tự quảng cáo - nó có thể trông giống như thư rác. Askubfox.com/help/promotion

2
Tự quảng cáo là ổn nếu bạn thừa nhận nó
David LeBauer

Và bạn đã không thừa nhận nó.
muru

5
Và xin vui lòng, thêm một số chi tiết về lý do tại sao wsl-terminalsẽ cung cấp một trải nghiệm thiết bị đầu cuối tốt hơn.
Cynplytholowazy

2
Cảm ơn vì đã chia sẻ. Nội dung của bạn đã hoạt động tốt hơn so với thiết bị đầu cuối tích hợp - ít nhất là nó có thể xử lý việc gói dòng trên dòng lệnh tốt hơn một chút. Mặc dù vậy, CTRL-A để nhanh chóng đi đến đầu lệnh vẫn không thành công. Tôi hài lòng với những người tự quảng cáo những thứ như thế này. Mọi người nên bình tĩnh.
EdH

5

Trên bản cài đặt Ubuntu mới, tôi vừa cài đặt XMing (trong Windows) rồi (trong Ubuntu) xfce4-terminal, và sau khi tôi export DISPLAY=:0, nó hoạt động.

Để thoát khỏi bảng điều khiển mặc định của Windows, tập lệnh VBS này thực hiện công việc:

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

(Với $ HIỂN THỊ được đặt trong .profile.)

chỉnh sửa: Và để làm cho tập lệnh có thể ghim được, hãy tạo một lối tắt với mục tiêu wscript "C:\path\to\thescript.vbs".


VBS dường như hoạt động, tuy nhiên cửa sổ đầu cuối được mở và đóng ngay sau đó. Làm thế nào tôi có thể giữ cho nó chạy?
TCB13

3

Trên Windows:

  • Nhấp vào góc trên bên trái của cửa sổ bash.
  • Trong menu mở ra, chọn 'Thuộc tính'
  • Đặt các tùy chọn mà bạn muốn như phông chữ, v.v. (thậm chí còn có một phông chữ đơn sắc Ubuntu!)
  • Sau khi thiết lập thuộc tính, chúng sẽ được áp dụng cho cửa sổ hiện tại. Để đặt chúng làm mặc định, nhấp vào phía trên bên trái của cửa sổ và nhấp vào mặc định.
  • Bạn có thể nhấn Alt + Enter để chuyển chế độ toàn màn hình.

Tôi hi vọng cái này giúp được.


Tôi muốn chỉ ra rằng nó có ngoại hình / cách sử dụng giống như thiết bị đầu cuối của Ubuntu (Gnome) ngoại trừ việc nó hỗ trợ chuột. tức là Bạn có thể nhấp vào tiêu đề cột tronghtop
WinEunuuchs2Unix


2

Extraterm không chỉ là một trình giả lập thiết bị đầu cuối. Nó cung cấp một hộp công cụ để làm việc với các ứng dụng thiết bị đầu cuối và dòng lệnh của bạn.

  • Tính năng, đặc điểm
  • Hỗ trợ Linux và macOS, trên Windows WSL, CMD, PowerShell và Cygwin
  • tương thích xterm
  • Nhiều tab và panes, chia và lát bất kỳ cách nào bạn muốn
  • Hiển thị hình ảnh trong thiết bị đầu cuối
  • Hỗ trợ Unicode
  • Biểu tượng cảm xúc màu
  • Bàn phím thân thiện
  • Các ràng buộc khóa cấu hình
  • Lựa chọn dựa trên bàn phím
  • Tích hợp vỏ; có thể cô lập và đầu ra lệnh 'khung'. (bash, zsh và cá được hỗ trợ)
  • Dễ dàng tải lên và tải xuống bằng cách sử dụng tích hợp shell
  • Đầu ra lệnh có thể chỉnh sửa tại chỗ. Chỉnh sửa nhiều con trỏ
  • Đầu ra lệnh trước có thể được sử dụng làm đầu vào cho các lệnh mới
  • Hỗ trợ các chủ đề iTerm2 và TextMate
  • Thu phóng văn bản

Tôi hiện đang sử dụng thiết bị đầu cuối này, vì nó có các tính năng tôi thực sự muốn. một cách dễ dàng để chuyển đổi giữa cmd, powershell, bash, fish, v.v.
nelaaro

1

Vì các bản cập nhật mới nhất cho Windows 10 (và WSL), mọi thứ dường như đang hoạt động bằng cách sử dụng bảng điều khiển bash "bản địa". (Và tôi không nói về bản cập nhật Windows 1809 nổi tiếng (trong)). Điều này hoạt động ngay cả trên phiên bản Enterprise ít nhất là cho bản dựng 1803 17134.345).

Xem bài viết tại https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEn MôiWithinLinuxOnWindows10.aspx

Một lưu ý nhỏ - để thực sự sử dụng bảng điều khiển bash trong Windows, nên khởi chạy tmux - và mọi thứ sẽ hoạt động như được hiển thị bởi Scott trong blog của anh ấy.


Thật là vui nhộn! "exec tmux" thực sự giải quyết tất cả các sự cố thiết bị đầu cuối "bash.exe" gốc Windows (cắt bỏ các dòng lạ sau khi thay đổi kích thước).
Yves Dorfsman

1

Thiết bị đầu cuối cho thời đại hiện đại hơn https://eugeny.github.io/terminus/

Terminus là một thiết bị đầu cuối lấy cảm hứng từ Hyper. Tuy nhiên, nó được thiết kế cho những người cần hoàn thành công việc.

  • Chạy trên Windows, macOS và Linux
  • Đề án và màu sắc
  • Phím tắt cấu hình đầy đủ
  • Hỗ trợ Unicode đầy đủ bao gồm các ký tự có chiều rộng gấp đôi
  • Không nghẹt thở với đầu ra chảy nhanh
  • Trải nghiệm giống như vỏ sò đúng cách trên Windows bao gồm hoàn thành tab (thông qua Clink)
  • Hỗ trợ PowerShell (+ Core), WSL (Bash trên Windows), Git-Bash, Cygwin, Cmder và CMD
  • Ghi nhớ các tab của bạn
  • Trình quản lý kết nối và máy khách SSH tích hợp

1

https://hyper.is/

  • Nó dựa trên điện tử giúp dễ dàng phát triển và mở rộng bằng cách sử dụng javascript.
  • Nó không sử dụng giao diện điều khiển windows mặc định theo bất kỳ cách nào.
  • Nó cho phép bạn chọn bash shell phụ trợ, 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
    

Các chủ đề và plugin rất hay

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

Sử dụng hướng dẫn này, tôi đã có thể có được WLS của mình, bash hoạt động rất độc đáo.


Cảm ơn - có vẻ như là một dự án thú vị nhưng bạn có thể nói thêm về phần mềm và cách định cấu hình cho WSL không?
David LeBauer

1
@DavidLeBauer Tôi hy vọng điều đó có ích.
nelaaro

Hyper là siêu chậm.
Mithril

1

Hôm nay, bạn được đề xuất sử dụng "thiết bị đầu cuối Windows" do Microsoft mở.

Bản dựng chính thức có thể được lấy từ Windows Store vào giữa tháng 6 năm nay.

Nhưng bạn cũng có thể trải nghiệm nó bằng cách sử dụng phiên bản xem trước bên dưới. https://github.com/yanglr/WindowsDevTools/blob/master/awosomeTerminal/WindowsTerminal_SelfSign_x86_x64_arm64.7z

Sau khi cài đặt, kết quả chạy bên dưới:

pic1

pic2

pic3

pic4


0

Mở rộng câu trả lời của aikerun.caillou vì cả hai giải pháp VBScript / JScript của họ đều không hoạt động ngay với tôi.

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

Kịch bản cần phải được chuẩn bị trước Callkhi sử dụng dấu ngoặc đơn trong lệnh chạy, xem tại đây . Ngoài ra các con bọ cần thiết phải là cách khác. Hơn nữa, một đối số bổ sung cho xfce4-terminal sẽ khởi động thiết bị đầu cuối trong thư mục nhà của người dùng. Xin lỗi nếu điều này thực sự hoạt động với mã JScript, tôi không biết gì về các ngôn ngữ script này.

Lưu tệp này dưới dạng tệp vbscript.vbs và thực hiện từ dấu nhắc cmd bằng cách

wscript vbscript.vbs

sau đó mở cửa sổ xfce4-terminal (cho XMing hoặc tương tự đang chạy) sau 2 giây trì hoãn. Thực sự biến nó thành một phím tắt như được đề xuất bởi các tác phẩm của n.caillou và nhấp vào phím tắt sẽ tự động tạo ra một cửa sổ đầu cuối xfce mới với một số độ trễ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.