web-dev-qa-db-fra.com

Une meilleure expérience de terminal pour Windows Subsystem for Linux (WSL)?

Le terminal pour le sous-système Windows pour Linux (WSL) est assez minime. 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épourvu.

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?

28
David LeBauer

Personnellement, je fais le dernier: utiliser VcXsrv comme serveur X en mode Windows multiple, puis lancer le terminal xfce4 (parce que gnome-terminal présentait des problèmes visuels que je ne souhaitais pas apprendre à résoudre), et du coup je un terminal compétent avec prise en charge des polices et des couleurs.

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

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

Faites le correction 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 heureux de cette configuration et utilise NeoVim + de nombreux plug-ins Linux natifs, même si ma machine "for-work" doit être Windows. :)

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

PS: pour rendre le lancement de xfce4-terminal indolore et sans la fenêtre supplémentaire bash cmd, 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 # - en gros, utilisez les arguments "UseShellExecute" false et "CreateNoWindow" true. J'ai ensuite épinglé cela à ma barre des tâches et c'est presque sans faille.

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);
25
aikeru

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

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

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

Autres notes:

  • ~ démarre bash dans votre répertoire personnel, vous pouvez le supprimer pour commencer dans le répertoire où se trouve le fichier .vbs. Il est donc pratique de le mettre dans 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 (fourni avec Ubuntu 14.04) ne semble pas fonctionner avec XMing; Je devais installer une version plus récente comme suggéré dans ce post .
21
Andrew Mao

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

screenshot

10
Gore Liu

Sur une nouvelle installation Ubuntu, je viens d'installer XMing (sous Windows), puis (sous Ubuntu) xfce4-terminal, et après 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 pinable, créez un raccourci avec target wscript "C:\path\to\thescript.vbs".

5
n.caillou

ConEm fonctionne très bien! Il suffit de l’installer et de démarrer une nouvelle {bash} console. J'ai ajouté cd ~ à mon .bashrc pour qu'il démarre par défaut dans mon répertoire personnel.

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

3
Bill Hoag

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 souhaitées, telles que 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 en cours. Pour les définir comme valeurs par défaut, cliquez en haut à gauche de la fenêtre, puis sur Valeurs par défaut.
  • Vous pouvez appuyer sur Alt + Entrée pour basculer en mode plein écran.

J'espère que ça aide.

3
mohi

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.

  • Caractéristiques
  • Prend en charge Linux et macOS, sur Windows WSL, CMD, PowerShell et Cygwin
  • compatible xterm
  • Plusieurs onglets et volets, divisés et carrelés comme bon vous semble
  • Afficher les images dans le terminal
  • Support Unicode
  • Couleur emoji
  • "Palette de commande" conviviale pour le clavier
  • Raccourcis clavier configurables
  • Sélections basées sur le clavier
  • Intégration de Shell; peut isoler et la sortie de la commande ‘frame’. (bash, zsh et poisson pris en charge)
  • Uploads et téléchargements faciles à l'aide de l'intégration de Shell
  • La sortie de la commande est éditable sur place. Edition multi-curseur
  • La sortie de commande précédente peut être utilisée comme entrée pour les nouvelles commandes
  • Prise en charge des thèmes iTerm2 et TextMate
  • Zoom du texte
2
nelaaro

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

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

Une petite mise en garde - pour utiliser réellement la console bash dans Windows, il faut lancer tmux - et tout fonctionnera comme le montre Scott dans son blog.

1
Adrian

Un terminal pour un âge plus moderne https://eugeny.github.io/terminus/

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

  • Fonctionne sous Windows, macOS et Linux
  • Theming et couleurs
  • Raccourcis entièrement configurables
  • Prise en charge complète Unicode, y compris les caractères double largeur
  • N'étouffe pas les sorties rapides
  • Expérience correcte de type shell sous Windows, y compris la réalisation des onglets (via Clink)
  • Prise en charge de PowerShell (+ Core), WSL (Bash sous Windows), Git-Bash, Cygwin, Cmder et CMD
  • Se souvient de vos onglets
  • Client SSH intégré et gestionnaire de connexion
1
nelaaro

Aujourd’hui, il vous est suggéré d’utiliser "terminal Windows" qui est une source ouverte créée par Microsoft.

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

Mais vous pouvez également le découvrir 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 sont ci-dessous:

pic1

pic2

pic3

pic4

1
Bravo Yeung

https://hyper.is/

  • Il est basé sur electron, ce qui facilite le développement et l’extension en javascript.
  • Il n'utilise en aucun cas la console Windows par défaut.
  • Il vous permet de choisir votre backend Shell bash, 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"
],

Utilisation de ce guide J'ai pu obtenir mon WLS, bash fonctionnant très bien.

1
nelaaro

L'extension des réponses de aiker et n.caillo , car aucune de leurs solutions VBScript/JScript n'a immédiatement fonctionné 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 préfixé par Call lors de l’utilisation de parenthèses dans la commande d’exécution, voir ici . De plus, les tiques devaient être à l'inverse. De plus, un argument supplémentaire pour 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.

Enregistrement de ceci en tant que fichier vbscript.vbs et exécution à partir d'une invite cmd par

wscript vbscript.vbs

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

0
Frederik Heber