Une meilleure expérience de terminal pour le sous-système Windows pour Linux (WSL)?

29

Le terminal pour le sous-système Windows pour Linux (WSL) est assez minimal. Je n'ai pas beaucoup utilisé le terminal sous Windows - j'utilise généralement Ubuntu ou OSX - mais je suis surpris que le terminal par défaut soit si dépouillé.

Est-il possible de:

  1. Connectez un programme de terminal Windows à WSL ou

  2. Lancer le programme de terminal Ubuntu à partir de WSL en tant que fenêtre X?

David LeBauer
la source

Réponses:

26

Personnellement, je fais ce dernier: utiliser VcXsrv comme mon serveur X en mode fenêtres multiples, puis lancer le xfce4-terminal (car gnome-terminal avait des problèmes visuels que je ne voulais pas essayer d'apprendre à résoudre), et soudain j'ai un terminal compétent avec prise en charge des polices et des couleurs.

J'ai trouvé que je devais les ajouter à mon bashrc ...

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

Faites le correctif de ce reddit pour dbus:

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

J'ai également installé compiz et j'utilise le projet cbwin pour exécuter des programmes Windows à partir de mon shell xfce4-terminal.

Je suis très content de cette configuration et j'utilise NeoVim + beaucoup de plugins natifs Linux même si ma machine "for-work" doit être Windows. :)

Il est également possible de démarrer un serveur SSH dans Bash-on-Linux-on-Windows puis de s'y connecter, par exemple à partir de MinTTY comme à partir de Cygwin.

PS: pour rendre le lancement de xfce4-terminal indolore et sans la fenêtre cmd supplémentaire bash, j'ai écrit un programme qui ne fait que démarrer le processus bash avec des arguments pour démarrer xfce4-terminal sans fenêtre de console. J'ai fait cela en C # - utilise essentiellement les arguments "UseShellExecute" false et "CreateNoWindow" true. J'ai ensuite épinglé cela dans ma barre des tâches et c'est presque sans effet.

EDIT: La réponse avec VBScript est brillante. Voici ce même script, mais une version JScript ...

WScript.CreateObject("WScript.Shell").run('bash.exe -l -c "DISPLAY=:0.0 xfce4-terminal"', 0, false);
aikeru
la source
1
Réponse choisie car elle est complète et m'a aidé à trouver stackoverflow.com/a/39188790 ; J'ai réalisé que la mise à jour de MobaXterm vers> 9.0 m'a permis d'obtenir un terminal décent pour WSL.
David LeBauer
Si quelqu'un est curieux, voici le lien vers le post reddit à partir duquel il a the "fix from reddit" for dbusété retiré.
tel
@tel merci! En fait, je ne savais pas d'où cela venait et j'ai ajouté le lien ...
aikeru
Si le «problème visuel que vous ne souhaitez pas résoudre» est que vous ne pouvez pas voir une partie de l'invite du répertoire ou des noms de fichiers, la raison en est qu'ils sont bleu foncé. Ils ne sont pas visibles sur le fond violet du terminal gnome. L'astuce consiste à remapper la couleur bleu foncé à turquoise, puis cela fonctionne bien.
WinEunuuchs2Unix
22

Il a fallu un peu de temps pour comprendre toutes les étapes implicites dans les autres réponses, alors voici un résumé étape par étape:

  1. Sous Windows, installez VcXsrv ou XMing .
  2. Dans Bash pour Windows, installez le terminal: sudo apt-get install xfce4-terminal.
  3. Ajoutez export DISPLAY=:0à votre .bashrc. (L'ajouter .profileou .bash_profile n'a pas fonctionné pour moi ). Cela vous permettra de démarrer xfce4-terminalcorrectement à partir de bash, mais est orthogonal à la commande ci-dessous.
  4. Exécutez ce qui suit dans un raccourci ou dans l'invite Exécuter (comme @OhJeez l'a suggéré dans les commentaires):

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

Autres notes:

  • Le ~démarre bashdans votre répertoire personnel, vous pouvez le supprimer pour commencer dans le répertoire dans lequel se trouve le .vbsfichier. Il est donc pratique de le mettre C:\Users\foo, par exemple.
  • Notez que XMing doit être en cours d'exécution pour que le script fonctionne; afin de le démarrer automatiquement avec Windows, vous pouvez suivre les instructions de cet article .
  • Emacs 24 (inclus avec Ubuntu 14.04) ne semble pas fonctionner avec XMing; J'ai dû installer une version plus récente comme suggéré dans cet article .
Andrew Mao
la source
1
Merci de votre aide. Lorsque j'exécute le script, rien ne semble se produire (le serveur Xming est en cours d'exécution). Cependant, si j'ouvre bash et l'exécute, xfce4-terminalcela fonctionne très bien. De plus, si je cours à bash -l -c xfce4-terminalpartir de Windows cmd, je reçois un avertissement Gtk-WARNING **: cannot open display:et rien ne se passe. Je suis assez confus car je pensais que ces commandes devraient se comporter de manière identique, des suppositions?
rperryng
@rperryng yeah - J'essaie également d'obtenir un one-liner pour ouvrir xfce sans l'invite de commande laid bash entre les deux, mais pas de chance pour le moment.
Andrew Mao
1
Meilleure solution pour démarrer xfce4-terminal en utilisant un raccourci. Il y a un scintillement, mais aucune fenêtre ne reste derrière: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -Command "iex \"bash.exe ~ -c 'DISPLAY=:0 xfce4-terminal'\" " Une autre version qui démarrera Xming si elle ne fonctionne pas: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 nice, merci d'avoir travaillé sur les subtilités de cette commande.
Andrew Mao
Solution de contournement pour les écrans haute résolution. Si vous avez un écran 4k, vous aurez des polices floues dans votre terminal. Pour résoudre ce problème, vous aurez besoin de: 1. Utilisez "VcXsrv Windows X Server" au lieu de Xing sourceforge.net/projects/vcxsrv 2. Exécutez le xserver en mode de compatibilité. Pour ce faire, vous aurez besoin: cliquez sur le raccourci VcXsrv avec le bouton droit de la souris. Choisissez "Propriétés". Dans l'onglet "Compatibilité", cochez la case "Remplacer le comportement de mise à l'échelle à haute résolution ..." et choisissez "Application" dans la liste déroulante suivante. 3. Exécutez xfce4-terminal et modifiez le paramètre de police. Changez la police en une plus grande.
koorchik
10

J'ai créé (et utilisé) un terminal open source pour le sous-système Windows pour Linux (WSL) appelé wsl-terminal , il est basé sur minttyet wslbridge.

capture d'écran

Gore Liu
la source
Soyez prudent avec l'auto-promotion - cela peut ressembler à du spam. askubuntu.com/help/promotion
2
L'auto-promotion est acceptable si vous le reconnaissez
David LeBauer
Et vous ne l'avez pas reconnu.
muru
5
Et s'il vous plaît, ajoutez quelques détails sur pourquoi wsl-terminaloffrira une meilleure expérience de terminal.
Cynplytholowazy
2
Merci de partager cela. Vos trucs fonctionnent déjà mieux que le terminal intégré - au moins, ils peuvent traiter un peu mieux le retour à la ligne sur la ligne de commande. Un CTRL-A pour aller rapidement au début de la commande échoue cependant. Je suis content que les gens promeuvent eux-mêmes des trucs comme ça. Les gens devraient se calmer.
EdH
5

Lors d'une nouvelle installation d'Ubuntu, je viens d'installer XMing (sous Windows) puis (sous Ubuntu) xfce4-terminal, et après moi export DISPLAY=:0, cela a fonctionné.

Pour se débarrasser de la console par défaut de Windows, ce script VBS fait le travail:

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

(Avec $ DISPLAY défini dans votre .profile.)

edit: Et pour rendre le script pin'able, créez un raccourci avec la cible wscript "C:\path\to\thescript.vbs".

n.caillou
la source
Le VBS semble fonctionner, mais la fenêtre du terminal est ouverte et fermée juste après. Comment puis-je le faire fonctionner?
TCB13
3

Sous Windows:

  • Cliquez sur le coin supérieur gauche de la fenêtre bash.
  • Dans le menu qui s'ouvre, sélectionnez «Propriétés»
  • Définissez les options que vous souhaitez comme la police, etc. (il existe même une police mono Ubuntu!)
  • Après avoir défini les propriétés, elles seront appliquées à la fenêtre actuelle. Pour les définir par défaut, cliquez sur le coin supérieur gauche de la fenêtre et cliquez sur par défaut.
  • Vous pouvez appuyer sur Alt + Entrée pour basculer en mode plein écran.

J'espère que ça aide.

mohi
la source
Je voudrais souligner qu'il a la même apparence / utilisation que le terminal d'Ubuntu (Gnome), sauf qu'il ajoute le support de la souris. ie Vous pouvez cliquer sur les en-têtes de colonne danshtop
WinEunuuchs2Unix
3

ConEmu fonctionne très bien! Installez-le et démarrez une nouvelle console {bash} . J'ai ajouté cd ~à mon .bashrcpour qu'il démarre par défaut dans mon répertoire personnel.

Bonne explication: https://conemu.github.io/en/BashOnWindows.html

Bill Hoag
la source
2

Extraterm est plus qu'un simple émulateur de terminal. Il fournit une boîte à outils pour travailler avec vos applications de terminal et de ligne de commande.

  • traits
  • Prise en charge Linux et macOS, sous Windows WSL, CMD, PowerShell et Cygwin
  • compatible avec xterm
  • Plusieurs onglets et volets, divisés et carrelés comme vous le souhaitez
  • Afficher les images dans le terminal
  • Prise en charge Unicode
  • Emoji couleur
  • «Palette de commandes» compatible avec le clavier
  • Raccourcis clavier configurables
  • Sélections basées sur le clavier
  • Intégration Shell; peut isoler et «encadrer» la sortie de la commande. (bash, zsh et fish pris en charge)
  • Téléchargements et téléchargements faciles à l'aide de l'intégration du shell
  • La sortie de la commande est modifiable sur place. Édition multi-curseur
  • La sortie de commande précédente peut être utilisée comme entrée pour de nouvelles commandes
  • Prend en charge les thèmes iTerm2 et TextMate
  • Zoom texte
nelaaro
la source
J'utilise maintenant ce terminal, car il a les fonctionnalités que je veux vraiment. un moyen facile de basculer entre cmd, powershell, bash, fish etc.
nelaaro
1

Depuis les dernières mises à jour de Windows 10 (et WSL), tout semble fonctionner en utilisant la console bash Windows "native". (Et je ne parle pas de la (in) fameuse mise à jour 1809 de Windows). Cela fonctionne même sur la version Enterprise au moins pour la version 1803 17134.345).

Voir l'article à https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEnvironmentWithinLinuxOnWindows10.aspx

Une petite mise en garde - pour vraiment utiliser la console bash dans Windows, il faut lancer tmux - et tout fonctionnera comme indiqué par Scott dans son blog.

Adrian
la source
C'est hilarant! "exec tmux" résout en effet tous les problèmes de terminal natif "bash.exe" de Windows (coupures bizarres après le redimensionnement).
Yves Dorfsman
1

Un terminal pour une époque plus moderne https://eugeny.github.io/terminus/

Terminus est un terminal fortement inspiré par Hyper. Il est cependant conçu pour les personnes qui ont besoin de faire avancer les choses.

  • Fonctionne sur Windows, macOS et Linux
  • Thèmes et schémas de couleurs
  • Raccourcis entièrement configurables
  • Prise en charge complète d'Unicode, y compris les caractères double largeur
  • Ne s'étouffe pas sur les sorties rapides
  • Expérience de type shell appropriée sur Windows, y compris la complétion des onglets (via Clink)
  • Prise en charge de PowerShell (+ Core), WSL (Bash sur Windows), Git-Bash, Cygwin, Cmder et CMD
  • Se souvient de vos onglets
  • Client SSH et gestionnaire de connexions intégrés
nelaaro
la source
1

https://hyper.is/

  • Il est basé sur l'électron, ce qui facilite son développement et son extension à l'aide de javascript.
  • Il n'utilise en aucun cas la console Windows par défaut.
  • Il vous permet de choisir votre bash shell shell, 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
    

Très beaux thèmes et plugins

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

En utilisant ce guide, j'ai pu obtenir mon WLS, bash fonctionnant très bien.

nelaaro
la source
Merci - ressemble à un projet intéressant, mais pourriez-vous en dire plus sur le logiciel et comment le configurer pour WSL?
David LeBauer
1
@DavidLeBauer J'espère que cela aide.
nelaaro
Hyper est super lent.
Mithril
1

Aujourd'hui, nous vous suggérons d'utiliser le "terminal Windows" qui est open source par Microsoft.

La version officielle peut être obtenue sur le Windows Store à la mi-juin de cette année.

Mais vous pouvez également en faire l'expérience en utilisant la version d'aperçu ci-dessous. https://github.com/yanglr/WindowsDevTools/blob/master/awosomeTerminal/WindowsTerminal_SelfSigned_x86_x64_arm64.7z

Après l'installation, les résultats en cours d'exécution sont ci-dessous:

pic1

pic2

pic3

pic4

Bravo Yeung
la source
0

L'extension des réponses de aikeru et n.caillou car aucune de leurs solutions VBScript / JScript n'a fonctionné tout de suite pour moi.

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

Le script doit être ajouté au préalable Calllors de l'utilisation de parenthèses dans la commande d'exécution, voir ici . Les tiques devaient également être inversées. De plus, un argument supplémentaire à xfce4-terminal démarrera le terminal dans le dossier personnel de l'utilisateur. Désolé si cela fonctionnait réellement avec du code JScript, je n'ai aucune idée de ces langages de script.

L'enregistrer en tant que fichier vbscript.vbs et l'exécuter à partir d'une invite cmd en

wscript vbscript.vbs

ouvre ensuite une fenêtre de terminal xfce4 (étant donné que XMing ou similaire est en cours d'exécution) après un délai de 2 secondes. Transformer cela en raccourci comme suggéré par les travaux de n.caillou et cliquer sur le raccourci fera automatiquement apparaître une nouvelle fenêtre de terminal xfce avec un certain retard.

Frederik Heber
la source