Besseres Terminal-Erlebnis für Windows Subsystem für Linux (WSL)?

29

Das Terminal für Windows Subsystem für Linux (WSL) ist ziemlich klein. Ich habe das Terminal unter Windows nicht sehr oft verwendet - ich verwende im Allgemeinen Ubuntu oder OSX -, aber ich bin überrascht, dass das Standardterminal so leer ist.

Ist es möglich, entweder:

  1. Verbinden Sie ein Windows-Terminalprogramm mit WSL oder

  2. Starten Sie das Ubuntu-Terminal-Programm von WSL als X-Fenster?

David LeBauer
quelle

Antworten:

26

Ich persönlich mache das letztere: benutze VcXsrv als meinen X-Server in mehreren Windows-Modi, starte dann das xfce4-Terminal (weil das Gnome-Terminal visuelle Probleme hatte, die ich nicht unbedingt lösen wollte) und plötzlich habe ich es ein kompetentes Terminal mit Schrift- und Farbunterstützung.

Ich fand, ich musste diese zu meinem Baschr ...

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

Tun Sie das Update von diesem Reddit für Dbus:

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

Ich habe auch compiz installiert und benutze das cbwin-Projekt, um Windows-Programme von meiner xfce4-Terminal-Shell aus auszuführen.

Ich bin mit diesem Setup sehr zufrieden und verwende NeoVim + viele native Linux-Plugins, obwohl mein "for-work" -Maschine Windows sein muss. :)

Es ist auch möglich, einen SSH-Server in Bash-on-Linux-on-Windows zu starten und dann eine Verbindung zu ihm herzustellen, beispielsweise von MinTTY wie von Cygwin.

PS: Um das Starten von xfce4-terminal ohne das zusätzliche Bash-Cmd-Fenster zu vereinfachen, habe ich ein Programm geschrieben, das nichts anderes tut, als den Bash-Prozess mit Argumenten zu starten, um xfce4-terminal ohne ein Konsolenfenster zu starten. Ich habe dies in C # getan - verwenden Sie im Grunde die Argumente "UseShellExecute" false und "CreateNoWindow" true. Ich habe das dann an meine Taskleiste geheftet und es ist fast scheinlos.

EDIT: Die Antwort mit VBScript ist genial. Hier ist dasselbe Skript, aber eine JScript-Version ...

WScript.CreateObject("WScript.Shell").run('bash.exe -l -c "DISPLAY=:0.0 xfce4-terminal"', 0, false);
aikeru
quelle
1
Ausgewählte Antwort, weil es umfassend ist und mir geholfen hat, stackoverflow.com/a/39188790 zu finden . Mir wurde klar, dass ich mit der Aktualisierung von MobaXterm auf> 9.0 ein anständiges Terminal für die WSL habe.
David LeBauer
Wenn jemand neugierig ist, hier ist der Link zu dem reddit Post, von dem aus the "fix from reddit" for dbusaufgehoben wurde.
Tel.
@tel danke! Ich wusste eigentlich nicht, woher das kommt und habe den Link hinzugefügt ...
Aikeru
Wenn das "visuelle Problem, das Sie nicht beheben möchten" darin besteht, dass Sie einen Teil der Eingabeaufforderung für Verzeichnis- oder Dateinamen nicht sehen können, liegt dies daran, dass sie dunkelblau sind. Sie sind auf dem violetten Hintergrund des Gnome-Terminals nicht sichtbar. Der Trick besteht darin, die Farbe dunkelblau auf türkis umzustellen und dann funktioniert es einwandfrei.
WinEunuuchs2Unix
22

Es hat eine Weile gedauert, bis Sie alle implizierten Schritte in den anderen Antworten herausgefunden haben. Hier finden Sie eine schrittweise Zusammenfassung:

  1. Installieren Sie unter Windows VcXsrv oder XMing .
  2. In Bash für Windows, installieren Sie das Terminal: sudo apt-get install xfce4-terminal.
  3. Fügen Sie export DISPLAY=:0Ihrem .bashrc. (Hinzufügen zu .profileoder .bash_profile hat bei mir nicht funktioniert ). Auf diese Weise können Sie xfce4-terminalordnungsgemäß mit der Bash beginnen, jedoch orthogonal zum folgenden Befehl.
  4. Führen Sie Folgendes in einer Verknüpfung oder in der Eingabeaufforderung Ausführen aus (wie in den Kommentaren von @OhJeez vorgeschlagen):

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

Weitere Hinweise:

  • Der ~Start erfolgt bashin Ihrem Ausgangsverzeichnis. Sie können ihn entfernen .vbs, um stattdessen in dem Verzeichnis zu starten, in dem sich die Datei befindet. So ist es zum Beispiel bequem, ihn C:\Users\fooeinzulegen.
  • Beachten Sie, dass XMing ausgeführt werden muss, damit das Skript funktioniert. Um es automatisch mit Windows zu starten, folgen Sie den Anweisungen in diesem Artikel .
  • Emacs 24 (in Ubuntu 14.04 enthalten) scheint nicht mit XMing zu funktionieren. Ich musste eine neuere Version installieren, wie in diesem Beitrag vorgeschlagen .
Andrew Mao
quelle
1
Danke für Ihre Hilfe. Wenn ich das Skript starte, scheint nichts zu passieren (Xming-Server läuft). Wenn ich jedoch bash öffne und starte xfce4-terminal, funktioniert es einwandfrei. Wenn ich bash -l -c xfce4-terminalvon Windows Cmd aus laufe, erhalte ich eine Warnung Gtk-WARNING **: cannot open display:und es passiert nichts. Ich bin ziemlich verwirrt, als ich dachte, diese Befehle sollten sich identisch verhalten, irgendwelche Vermutungen?
Rperryng
@rperryng yeah - Ich versuche auch, einen Einzeiler dazu zu bringen, xfce ohne die hässliche Bash-Eingabeaufforderung dazwischen zu öffnen, aber noch kein Glück.
Andrew Mao
1
Beste Lösung zum Starten von xfce4-terminal über eine Verknüpfung. Es gibt ein Flackern, aber kein Fenster bleibt zurück: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -Command "iex \"bash.exe ~ -c 'DISPLAY=:0 xfce4-terminal'\" " Eine andere Version, die Xming startet, wenn es nicht läuft: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 schön, danke, dass du die Feinheiten dieses Befehls ausgearbeitet hast.
Andrew Mao
Problemumgehung für hochauflösende Displays. Wenn Sie über ein 4k-Display verfügen, enthält Ihr Terminal verschwommene Schriftarten. Um dies zu beheben, benötigen Sie: 1. Verwenden Sie "VcXsrv Windows X Server" anstelle von Xing sourceforge.net/projects/vcxsrv. 2. Führen Sie den xserver im Kompatibilitätsmodus aus. Dazu benötigen Sie: Klicken Sie mit der rechten Maustaste auf die Verknüpfung VcXsrv. Wählen Sie "Eigenschaften". Aktivieren Sie auf der Registerkarte "Kompatibilität" das Kontrollkästchen "Hochauflösendes Skalierungsverhalten überschreiben ..." und wählen Sie in der nächsten Dropdown-Liste "Anwendung" aus. 3. Führen Sie xfce4-terminal aus und ändern Sie die Schriftarteinstellung. Ändern Sie die Schriftart in eine größere.
Koorchik
10

Ich habe ein Open-Source-Terminal für Windows Subsystem für Linux (WSL) mit dem Namen wsl-terminal erstellt (und benutze es) , das auf minttyund basiert wslbridge.

Bildschirmfoto

Gore Liu
quelle
Seien Sie vorsichtig mit Eigenwerbung - es kann wie Spam aussehen. askubuntu.com/help/promotion
2
Eigenwerbung ist in
Ordnung,
Und du hast es nicht anerkannt.
muru
5
Und bitte fügen Sie einige Details hinzu, warum Sie wsl-terminalein besseres Terminalerlebnis erzielen.
Cynplytholowazy
2
Vielen Dank für das Teilen. Ihr Zeug funktioniert bereits besser als das eingebaute Terminal - zumindest kann es Zeilenumbrüche auf der Kommandozeile ein bisschen besser behandeln. Eine STRG-A-Taste, um schnell zum Beginn des Befehls zu gelangen, schlägt jedoch immer noch fehl. Ich bin glücklich mit Leuten, die solche Sachen selbst bewerben. Die Leute sollten sich beruhigen.
EdH
5

Bei einer neuen Ubuntu-Installation habe ich gerade XMing (unter Windows) und dann (unter Ubuntu) das xfce4-Terminal installiert, und nachdem ich export DISPLAY=:0es installiert habe , hat es funktioniert.

Dieses VBS-Skript erledigt die folgenden Aufgaben, um die Standardkonsole von Windows zu entfernen:

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

(Mit eingestelltem $ DISPLAY in Ihrem .profile.)

edit: Und um das Skript pinbar zu machen, erstelle eine Verknüpfung mit target wscript "C:\path\to\thescript.vbs".

n.caillou
quelle
Das VBS scheint zu funktionieren, das Terminalfenster ist jedoch gleich danach geöffnet und geschlossen. Wie kann ich es am Laufen halten?
TCB13
3

Unter Windows:

  • Klicken Sie auf die obere linke Ecke des Bash-Fensters.
  • In dem sich öffnenden Menü wählen Sie 'Eigenschaften'
  • Stellen Sie die gewünschten Optionen wie Schriftart usw. ein (es gibt sogar eine Ubuntu Mono-Schriftart!)
  • Nach dem Festlegen der Eigenschaften werden diese für das aktuelle Fenster übernommen. Um sie als Standard festzulegen, klicken Sie oben links im Fenster auf Standardeinstellungen.
  • Sie können Alt + Enter drücken, um den Vollbildmodus umzuschalten.

Ich hoffe das hilft.

mohi
quelle
Ich möchte darauf hinweisen, dass es das gleiche Erscheinungsbild und die gleiche Verwendung hat wie Ubuntus (Gnome's) Terminal, außer dass es Mausunterstützung bietet. dh Sie können auf die Spaltenüberschriften inhtop
WinEunuuchs2Unix
3

ConEmu funktioniert super ! Einfach installieren und eine neue {bash} Konsole starten . Ich habe es cd ~zu meinem hinzugefügt , .bashrcdamit es standardmäßig in meinem Ausgangsverzeichnis startet.

Gute Erklärung: https://conemu.github.io/en/BashOnWindows.html

Bill Hoag
quelle
2

Extraterm ist mehr als nur ein Terminal-Emulator. Es bietet eine Toolbox für die Arbeit mit Ihren Terminal- und Befehlszeilenanwendungen.

  • Eigenschaften
  • Unterstützt Linux und MacOS, unter Windows WSL, CMD, PowerShell und Cygwin
  • xterm kompatibel
  • Mehrere Registerkarten und Fenster, aufgeteilt und gekachelt, wie Sie möchten
  • Bilder im Terminal anzeigen
  • Unicode-Unterstützung
  • Farbe Emoji
  • Tastaturfreundliche "Befehlspalette"
  • Konfigurierbare Tastenbelegung
  • Tastaturbasierte Auswahl
  • Shell-Integration; Kann die Befehlsausgabe isolieren und "rahmen". (bash, zsh und fish unterstützt)
  • Einfache Uploads und Downloads über die Shell-Integration
  • Die Befehlsausgabe kann direkt bearbeitet werden. Multi-Cursor-Bearbeitung
  • Die vorherige Befehlsausgabe kann als Eingabe für neue Befehle verwendet werden
  • Unterstützt iTerm2- und TextMate-Designs
  • Text zoomen
Nelaaro
quelle
Ich benutze jetzt dieses Terminal, da es die Funktionen hat, die ich wirklich möchte. eine einfache Möglichkeit, zwischen cmd, Powershell, Bash, Fisch usw. zu wechseln
Nelaaro
1

Seit den letzten Updates für Windows 10 (und WSL) scheint alles mit der "nativen" Windows Bash-Konsole zu funktionieren. (Und ich spreche nicht über das (in) berühmte 1809 Windows Update). Dies funktioniert auch in der Enterprise-Version (mindestens für Build 1803 17134.345).

Lesen Sie den Artikel unter https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEnvironmentWithinLinuxOnWindows10.aspx

Eine kleine Einschränkung - um die Bash-Konsole unter Windows wirklich nutzen zu können, sollte man tmux starten - und alles wird so funktionieren, wie es Scott in seinem Blog gezeigt hat.

Adrian
quelle
Das ist urkomisch! "exec tmux" behebt in der Tat alle Probleme mit dem Windows-nativen "bash.exe" -Terminal (seltsame Trennlinien nach der Größenänderung).
Yves Dorfsman
1

Ein Terminal für die Moderne https://eugeny.github.io/terminus/

Terminus ist ein stark von Hyper inspiriertes Terminal. Es ist jedoch für Menschen gedacht, die Dinge erledigen müssen.

  • Läuft unter Windows, MacOS und Linux
  • Theming und Farbschemata
  • Voll konfigurierbare Verknüpfungen
  • Volle Unicode-Unterstützung, einschließlich Zeichen mit doppelter Breite
  • Erstickt nicht an schnell fließenden Ausgängen
  • Richtige Shell-ähnliche Erfahrung unter Windows, einschließlich Tab-Vervollständigung (über Clink)
  • Unterstützung für PowerShell (+ Core), WSL (Bash unter Windows), Git-Bash, Cygwin, Cmder und CMD
  • Erinnert sich an Ihre Registerkarten
  • Integrierter SSH-Client und Verbindungsmanager
Nelaaro
quelle
1

https://hyper.is/

  • Es basiert auf electron, was die Entwicklung und Erweiterung mit Javascript vereinfacht.
  • Die Standard-Windows-Konsole wird in keiner Weise verwendet.
  • Hier können Sie Ihre Backend-Shell-Bash, Cmd, PowerShell auswählen.

    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
    

Sehr schöne Themes und Plugins

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

Mit dieser Anleitung konnte ich mein WLS zum Laufen bringen.

Nelaaro
quelle
Danke - sieht nach einem interessanten Projekt aus, aber können Sie mehr über die Software und die Konfiguration für WSL sagen?
David LeBauer
1
@ DavidLeBauer Ich hoffe das hilft.
Nelaaro
Hyper ist super langsam.
Mithril
0

Das Erweitern der Antworten von aikeru und n.caillou, da keine ihrer VBScript / JScript-Lösungen für mich auf Anhieb funktioniert hat.

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

Dem Skript muss Callbei Verwendung von Klammern im Befehl run ein Präfix vorangestellt werden (siehe hier) . Auch die Zecken mussten umgekehrt sein. Darüber hinaus startet ein zusätzliches Argument für xfce4-terminal das Terminal im Home-Ordner des Benutzers. Entschuldigung, wenn dies tatsächlich JScript-Code war, ich habe keine Ahnung über diese Skriptsprachen.

Speichern Sie diese Datei als vbscript.vbs und führen Sie sie von einer cmd- Eingabeaufforderung aus durch

wscript vbscript.vbs

öffnet dann nach 2 Sekunden Verzögerung ein xfce4-Terminal-Fenster (vorausgesetzt, XMing oder Ähnliches läuft). Wenn Sie dies in eine Verknüpfung umwandeln, wie dies in der Tat von n.caillou vorgeschlagen wird, und auf die Verknüpfung klicken, wird automatisch ein neues xfce-Terminalfenster mit einer gewissen Verzögerung erstellt.

Frederik Heber
quelle