Lepsza jakość terminalu dla Windows Subsystem for Linux (WSL)?

29

Terminal dla Windows Subsystem for Linux (WSL) jest dość minimalny. Nie korzystałem zbyt często z terminala w systemie Windows - zazwyczaj używam Ubuntu lub OSX - ale jestem zaskoczony, że domyślny terminal jest tak pusty.

Czy można:

  1. Podłącz program terminalowy Windows do WSL lub

  2. Uruchomić program terminalowy Ubuntu z WSL jako okno X?

David LeBauer
źródło

Odpowiedzi:

26

Osobiście robię to drugie: używam VcXsrv jako mojego serwera X w trybie wielu okien, a następnie uruchamiam terminal xfce4 (ponieważ terminal gnome miał problemy wizualne, których nie chciałem się nauczyć, jak to naprawić), i nagle mam kompetentny terminal z obsługą czcionek i kolorów.

Odkryłem, że muszę je dodać do mojego bashrc ...

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

Wykonaj poprawkę z tego reddita dla dbus:

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

Zainstalowałem również compiz i używam projektu cbwin do uruchamiania programów Windows z mojej powłoki xfce4-terminal.

Jestem bardzo zadowolony z tej konfiguracji i używam NeoVim + wiele rodzimych wtyczek linuksowych, mimo że moją maszyną do pracy musi być Windows. :)

Możliwe jest również uruchomienie serwera SSH w Bash-on-Linux-on-Windows, a następnie połączenie się z nim, powiedzmy z MinTTY jak z Cygwin.

PS: aby uruchomienie programu xfce4-terminal było bezbolesne i bez dodatkowego okna cmd bash, napisałem program, który nie robi nic oprócz uruchomienia procesu bash z argumentami do uruchomienia xfce4-terminal bez okna konsoli. Zrobiłem to w języku C # - w zasadzie używam argumentów „UseShellExecute” false i „CreateNoWindow” true. Następnie przypiąłem to do paska zadań i wydaje się to prawie niemożliwe.

EDYCJA: Odpowiedź z VBScript jest genialna. Oto ten sam skrypt, ale wersja JScript ...

WScript.CreateObject("WScript.Shell").run('bash.exe -l -c "DISPLAY=:0.0 xfce4-terminal"', 0, false);
aikeru
źródło
1
Wybrano odpowiedź, ponieważ jest kompleksowa i pomogła mi znaleźć stackoverflow.com/a/39188790 ; Uświadomiłem sobie, że aktualizacja MobaXterm do> 9.0 dała mi przyzwoity terminal dla WSL.
David LeBauer,
Jeśli ktoś jest ciekawy, oto link do posta reddit, z którego the "fix from reddit" for dbuszostał usunięty.
tel
@tel dzięki! Właściwie nie wiedziałem, skąd to się wzięło i dodałem link ...
aikeru
Jeśli „problemem wizualnym, którego nie chcesz rozwiązać” jest to, że nie widać części monitu o nazwie katalogu lub pliku, przyczyną jest ciemnoniebieski. Nie są widoczne na fioletowym tle terminalu gnomów. Sztuczka polega na przekształceniu koloru z ciemnoniebieskiego na turkusowy, a następnie działa dobrze.
WinEunuuchs2Unix
22

Zajęło trochę czasu, aby dowiedzieć się o wszystkich domniemanych krokach w innych odpowiedziach, więc oto podsumowanie krok po kroku:

  1. W systemie Windows zainstaluj VcXsrv lub XMing .
  2. W bash dla systemu Windows, należy zainstalować terminal: sudo apt-get install xfce4-terminal.
  3. Dodaj export DISPLAY=:0do swojego .bashrc. (Dodanie go do mnie .profilelub .bash_profile nie zadziałało ). Umożliwi to xfce4-terminalprawidłowe uruchomienie od bash, ale jest prostopadłe do poniższego polecenia.
  4. Uruchom następujące polecenie w skrócie lub w wierszu polecenia (zgodnie z sugestią @OhJeez w komentarzach):

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

Inne notatki:

  • Do ~rozpoczyna bashw swoim katalogu domowym, można usunąć go uruchomić w każdej Directory .vbsplik jest zamiast. Na przykład wygodnie jest go umieścić C:\Users\foo.
  • Zauważ, że XMing musi być uruchomiony, aby skrypt działał; Aby uruchomić go automatycznie w systemie Windows, postępuj zgodnie z instrukcjami w tym artykule .
  • Emacs 24 (dołączony do Ubuntu 14.04) nie działa z XMing; Musiałem zainstalować nowszą wersję, jak sugerowano w tym poście .
Andrew Mao
źródło
1
Dzięki za pomoc. Po uruchomieniu skryptu nic się nie dzieje (serwer Xming działa). Jednak jeśli otworzę i uruchomię bash, xfce4-terminalto działa dobrze. Ponadto, jeśli uruchomię bash -l -c xfce4-terminalz Windows cmd, dostaję ostrzeżenie Gtk-WARNING **: cannot open display:i nic się nie dzieje. Jestem dość zdezorientowany, ponieważ uznałem, że te polecenia powinny zachowywać się identycznie, jakieś domysły?
rperryng
@rperryng yeah - Próbuję również uzyskać jeden wiersz, aby otworzyć xfce bez brzydkiego wiersza poleceń między, ale nie ma jeszcze szczęścia.
Andrew Mao,
1
Najlepsze rozwiązanie do uruchamiania XFCE4-terminal za pomocą skrótu. Jest migotanie, ale nie pozostaje żadne okno: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -Command "iex \"bash.exe ~ -c 'DISPLAY=:0 xfce4-terminal'\" " Kolejna wersja, która uruchomi Xming, jeśli nie będzie działać: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
@ Och, fajnie, dziękuję za wypracowanie zawiłości tego polecenia.
Andrew Mao,
Obejście dla wyświetlaczy o wysokiej rozdzielczości. Jeśli masz wyświetlacz 4k, będziesz mieć rozmyte czcionki w swoim terminalu. Aby to naprawić, potrzebujesz: 1. Użyj „VcXsrv Windows X Server” zamiast Xing sourceforge.net/projects/vcxsrv 2. Uruchom xserver w trybie zgodności. Aby to zrobić, potrzebujesz: kliknij skrót VcXsrv prawym przyciskiem myszy. Wybierz „Właściwości”. Na karcie „Kompatybilność” zaznacz pole wyboru „Zastąp zachowanie skalowania w wysokiej rozdzielczości ...” i wybierz „Aplikacja” w następnym menu. 3. Uruchom xfce4-terminal i zmień ustawienia czcionek. Zmień czcionkę na większą.
koorchik 30.09.17
10

Stworzyłem (i używam) terminal open source dla Windows Subsystem dla Linux (WSL) o nazwie wsl-terminal , jest on oparty na minttyi wslbridge.

zrzut ekranu

Gore Liu
źródło
Uważaj na autopromocję - może wyglądać jak spam. askubuntu.com/help/promotion
2
Autopromocja jest w porządku, jeśli się
zorientujesz
I nie potwierdziłeś tego.
muru
5
I proszę dodać kilka szczegółów na temat tego wsl-terminal, dlaczego zapewni lepszą obsługę terminalu.
Cynplytholowazy,
2
Dziękujemy za udostępnienie tego. Twoje rzeczy działają już lepiej niż wbudowany terminal - przynajmniej może trochę lepiej poradzić sobie z zawijaniem linii w linii poleceń. CTRL-A, aby szybko przejść do początku polecenia, nadal się nie udaje. Cieszę się, że ludzie promują takie rzeczy. Ludzie powinni się uspokoić.
EdH
5

Podczas nowej instalacji Ubuntu właśnie zainstalowałem XMing (w Windows), a następnie (w Ubuntu) xfce4-terminal, a po export DISPLAY=:0nim zadziałało.

Aby pozbyć się domyślnej konsoli Windows, ten skrypt VBS wykonuje to zadanie:

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

(Z ustawionym $ DISPLAY .profile.)

edycja: Aby skrypt był możliwy do przypisania, utwórz skrót z celem wscript "C:\path\to\thescript.vbs".

n.caillou
źródło
Wygląda na to, że VBS działa, ale okno terminala jest otwarte i zamknięte zaraz potem. Jak mogę go utrzymać?
TCB13
3

W systemie Windows:

  • Kliknij lewy górny róg okna bash.
  • W menu, które zostanie otwarte, wybierz „Właściwości”
  • Ustaw opcje, takie jak czcionka itp. (Istnieje nawet czcionka mono Ubuntu!)
  • Po ustawieniu właściwości zostaną zastosowane do bieżącego okna. Aby ustawić je jako domyślne, kliknij lewy górny róg okna i kliknij domyślne.
  • Możesz nacisnąć Alt + Enter, aby przełączyć tryb pełnoekranowy.

Mam nadzieję, że to pomoże.

mohi
źródło
Chciałbym zaznaczyć, że ma taki sam wygląd / użycie jak terminal Ubuntu (Gnome), tyle że dodaje obsługę myszy. tzn. możesz kliknąć nagłówki kolumn whtop
WinEunuuchs2Unix
3

ConEmu działa świetnie! Po prostu zainstaluj i uruchom nową konsolę {bash} . Dodałem cd ~do mojego, .bashrcaby domyślnie uruchamiał się w moim katalogu domowym.

Dobre wyjaśnienie: https://conemu.github.io/en/BashOnWindows.html

Bill Hoag
źródło
2

Extraterm to coś więcej niż emulator terminala. Zapewnia zestaw narzędzi do pracy z aplikacjami terminalowymi i wiersza poleceń.

  • cechy
  • Obsługuje Linux i macOS, w Windows WSL, CMD, PowerShell i Cygwin
  • kompatybilny z Xterm
  • Wiele kart i paneli, dzielonych i kafelkowych w dowolny sposób
  • Pokaż obrazy w terminalu
  • Obsługa Unicode
  • Kolorowe emoji
  • Przyjazna dla klawiatury „Paleta poleceń”
  • Konfigurowalne przypisania klawiszy
  • Wybory oparte na klawiaturze
  • Integracja powłoki; może izolować i „wychodzić” z wyjścia komendy. (obsługiwane bash, zsh i fish)
  • Łatwe przesyłanie i pobieranie przy użyciu integracji powłoki
  • Dane wyjściowe polecenia można edytować na miejscu. Edycja wielu kursorów
  • Dane wyjściowe poprzednich poleceń można wykorzystać jako dane wejściowe dla nowych poleceń
  • Obsługuje motywy iTerm2 i TextMate
  • Zoom tekstu
nelaaro
źródło
Teraz używam tego terminala, ponieważ ma on funkcje, których naprawdę chcę. łatwy sposób przełączania między cmd, powerhell, bash, fish itp.
nelaaro
1

Od czasu najnowszych aktualizacji systemu Windows 10 (i WSL) wszystko działa poprawnie przy użyciu „natywnej” konsoli bash Windows. (I nie mówię o (nie) znanej aktualizacji Windows 1809). Działa to nawet w wersji Enterprise przynajmniej dla wersji 1803 17134.345).

Zobacz artykuł na https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEnvironmentWithinLinuxOnWindows10.aspx

Małe zastrzeżenie - aby naprawdę korzystać z konsoli bash w systemie Windows, należy uruchomić tmux - i wszystko będzie działało tak, jak pokazał Scott na swoim blogu.

Adrian
źródło
To przezabawne! „exec tmux” faktycznie rozwiązuje wszystkie natywne problemy z terminalem „bash.exe” systemu Windows (dziwne odcięcie linii po zmianie rozmiaru).
Yves Dorfsman
1

Terminal dla bardziej nowoczesnego wieku https://eugeny.github.io/terminus/

Terminus to terminal mocno zainspirowany Hyperem. Jest jednak przeznaczony dla osób, które muszą załatwić sprawę.

  • Działa w systemach Windows, macOS i Linux
  • Schematy tematyczne i kolorystyczne
  • W pełni konfigurowalne skróty
  • Pełna obsługa Unicode, w tym znaki o podwójnej szerokości
  • Nie dusi się przy szybko płynących wyjściach
  • Właściwe działanie powłoki w systemie Windows, w tym uzupełnianie tabulatorów (przez Clink)
  • Obsługa PowerShell (+ Core), WSL (Bash w Windows), Git-Bash, Cygwin, Cmder i CMD
  • Zapamiętuje twoje zakładki
  • Zintegrowany klient SSH i menedżer połączeń
nelaaro
źródło
1

https://hyper.is/

  • Opiera się na elektronie, co ułatwia tworzenie i rozszerzanie za pomocą javascript.
  • Nie korzysta w żaden sposób z domyślnej konsoli Windows.
  • Pozwala wybrać bash powłoki 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
    

Bardzo ładne motywy i wtyczki

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

Korzystając z tego przewodnika , udało mi się uzyskać mój WLS, bash działa bardzo ładnie.

nelaaro
źródło
Dzięki - wygląda na ciekawy projekt, ale czy mógłbyś powiedzieć coś więcej o oprogramowaniu i jak skonfigurować go dla WSL?
David LeBauer,
1
@DavidLeBauer Mam nadzieję, że to pomoże.
nelaaro
Hyper jest bardzo wolny.
Mithril,
0

Rozszerzanie odpowiedzi aikeru i n.caillou, ponieważ żadne z ich rozwiązań VBScript / JScript nie działało od razu dla mnie.

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

Przed Callużyciem skryptu należy użyć nawiasu w poleceniu uruchomienia, patrz tutaj . Również kleszcze musiały być odwrotnie. Co więcej, dodatkowy argument do xfce4-terminal uruchomi terminal w folderze domowym użytkownika. Przepraszam, jeśli to rzeczywiście działał kod JScript, nie mam pojęcia o tych językach skryptowych.

Zapisanie tego jako plik vbscript.vbs i wykonanie z wiersza polecenia cmd przez

wscript vbscript.vbs

następnie otwiera okno xfce4-terminal (pod warunkiem, że XMing lub podobnie działa) po 2 sekundach opóźnienia. Przekształcenie tego w skrót, jak sugerują prace n.caillou, i kliknięcie tego skrótu automatycznie wyświetli nowe okno terminala xfce z pewnym opóźnieniem.

Frederik Heber
źródło