it-swarm.com.de

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

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?

29
David LeBauer

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 Fix 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 verwende 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);
26
aikeru

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. Installieren Sie in Bash für Windows das Terminal: Sudo apt-get install xfce4-terminal.
  3. Fügen Sie export DISPLAY=:0 zu Ihrem .bashrc hinzu. (Hinzufügen zu .profile oder .bash_profilehat bei mir nicht funktioniert ). Auf diese Weise können Sie xfce4-terminal ordnungsgemäß von Bash aus starten, jedoch orthogonal zum folgenden Befehl.
  4. Führen Sie Folgendes in einer Verknüpfung oder in der Eingabeaufforderung aus (wie in den Kommentaren von @OhJeez vorgeschlagen):

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

Weitere Hinweise:

  • Der ~ startet bash in Ihrem Ausgangsverzeichnis. Sie können ihn entfernen, um stattdessen in dem Verzeichnis zu starten, in dem sich die .vbs -Datei befindet. Es ist also praktisch, es zum Beispiel in C:\Users\foo einzufügen.
  • Beachten Sie, dass XMing ausgeführt werden muss, damit das Skript funktioniert. Um es automatisch mit Windows zu starten, folgen Sie den Anweisungen in dieser 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 .
21
Andrew Mao

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

screenshot

10
Gore Liu

Bei einer neuen Ubuntu-Installation habe ich gerade XMing (unter Windows) und dann (unter Ubuntu) xfce4-terminal installiert und nach I export DISPLAY=:0 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

(Wenn $ DISPLAY in Ihrem .profile eingestellt ist.)

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

5
n.caillou

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

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

3
Bill Hoag

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.

3
mohi

Extraterm ist mehr als nur ein Terminalemulator. 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 mithilfe der 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
2
nelaaro

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.

1
Adrian

Ein Terminal für eine modernere Zeit 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
  • Ordnungsgemäße 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
1
nelaaro

Heute wird empfohlen, "Windows-Terminal" zu verwenden, das von Microsoft als Open-Source-Version bereitgestellt wird.

Das offizielle Build ist ab Mitte Juni dieses Jahres im Windows Store erhältlich.

Sie können es aber auch mit der folgenden Vorschau-Version erleben. https://github.com/yanglr/WindowsDevTools/blob/master/awosomeTerminal/WindowsTerminal_SelfSigned_x86_x64_arm64.7z

Nach der Installation werden die folgenden Ergebnisse angezeigt:

pic1

pic2

pic3

pic4

1
Bravo Yeung

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, was sehr gut funktioniert.

1
nelaaro

Das Erweitern der Antworten von aiker und n.caillo , da keine ihrer VBScript/JScript-Lösungen sofort für mich 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 Call vorangestellt werden, wenn Klammern im Befehl run verwendet werden, siehe hier . Auch die Zecken mussten umgekehrt sein. Darüber hinaus startet ein zusätzliches Argument für xfce4-terminal das Terminal im Basisordner des Benutzers. Entschuldigung, wenn dies tatsächlich JScript-Code war, ich habe keine Ahnung über diese Skriptsprachen.

Speichern als Datei vbscript.vbs und Ausführen von einer cmd Eingabeaufforderung durch

wscript vbscript.vbs

öffnet dann nach 2 Sekunden Verzögerung ein xfce4-Terminal-Fenster (vorausgesetzt, XMing oder Ähnliches läuft). Das Umwandeln in eine Verknüpfung, wie von n.caillou's vorgeschlagen, funktioniert in der Tat, und das Klicken auf die Verknüpfung erzeugt automatisch ein neues xfce-Terminalfenster mit einer gewissen Verzögerung.

0
Frederik Heber