Uma melhor experiência de terminal para o Windows Subsystem for Linux (WSL)?


29

O terminal do Windows Subsystem para Linux (WSL) é bastante mínimo. Não usei muito o terminal no Windows - geralmente uso Ubuntu ou OSX - mas estou surpreso que o terminal padrão seja tão vazio.

É possível:

  1. Conecte um programa de terminal do Windows à WSL ou

  2. Lançar o programa de terminal Ubuntu a partir da WSL como uma janela X?

Respostas:


26

Pessoalmente, faço o último: uso o VcXsrv como meu servidor X no modo de múltiplas janelas e, em seguida, inicio o xfce4-terminal (porque o gnome-terminal tinha problemas visuais que eu não queria tentar aprender a consertar) e, de repente, um terminal competente com suporte de fonte e cor.

Descobri que precisava adicioná-los ao meu bashrc ...

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

Faça a correção deste reddit para o dbus:

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

Também instalei o compiz e uso o projeto cbwin para executar programas do Windows a partir do meu shell xfce4-terminal.

Estou muito feliz com essa configuração e uso o NeoVim + muitos plugins nativos do Linux, embora minha máquina "for-work" deva ser o Windows. :)

Também é possível iniciar um servidor SSH no Bash-on-Linux-no-Windows e depois conectar-se a ele, digamos do MinTTY como do Cygwin.

PS: para tornar o lançamento do terminal xfce4 indolor e sem a janela extra do bash cmd, escrevi um programa que não faz nada além de iniciar o processo do bash com argumentos para iniciar o xfce4-terminal sem uma janela do console. Eu fiz isso em c # - basicamente, use os argumentos "UseShellExecute" false e "CreateNoWindow" true. Eu então fixei isso na minha barra de tarefas e é quase impossível.

EDIT: A resposta com VBScript é brilhante. Aqui está o mesmo script, mas uma versão JScript ...

WScript.CreateObject("WScript.Shell").run('bash.exe -l -c "DISPLAY=:0.0 xfce4-terminal"', 0, false);

1
Resposta selecionada porque é abrangente e me ajudou a encontrar o stackoverflow.com/a/39188790 ; Percebi que atualizar o MobaXterm para> 9.0 me deu um terminal decente para a WSL.
— David LeBauer 26/09/16

Se alguém estiver curioso, aqui está o link para o post do reddit do qual the "fix from reddit" for dbusfoi retirado.
— tel

@tel obrigado! Eu realmente não sei de onde veio isso e ter adicionado o link ...
— aikeru

Se o "problema visual que você não deseja corrigir" é que não consegue ver parte do prompt do diretório ou dos nomes de arquivos, o motivo é que eles são azul escuro. Eles não são visíveis no plano de fundo roxo do terminal gnomo. O truque é remapear a cor azul escuro para turquesa e depois funcionar bem.
— WinEunuuchs2Unix 14/06

22

Demorou um pouco para descobrir todas as etapas implícitas nas outras respostas, então aqui está um resumo passo a passo:

  1. No Windows, instale o VcXsrv ou o XMing .
  2. Em Bash para Windows, instale o terminal: sudo apt-get install xfce4-terminal.
  3. Adicione export DISPLAY=:0ao seu .bashrc. (Adicionando .profileou .bash_profile não funcionou para mim ). Isso permitirá que você inicie xfce4-terminalcorretamente a partir do bash, mas é ortogonal ao comando abaixo.
  4. Execute o seguinte em um atalho ou no prompt Executar (como @OhJeez sugerido nos comentários):

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

Outras notas:

  • As ~partidas bashem seu diretório pessoal, você pode removê-lo para iniciar em qualquer diretório em que o .vbsarquivo esteja. Portanto, é conveniente colocá-lo C:\Users\foo, por exemplo.
  • Observe que o XMing precisa estar em execução para que o script funcione; para iniciá-lo automaticamente no Windows, você pode seguir as instruções deste artigo .
  • O Emacs 24 (incluído no Ubuntu 14.04) parece não funcionar com o XMing; Eu tive que instalar uma versão mais recente, conforme sugerido neste post .

1
Obrigado pela ajuda. Quando executo o script, nada parece acontecer (o servidor Xming está sendo executado). No entanto, se eu abrir o bash e executá- xfce4-terminallo, funcionará bem. Além disso, se eu correr bash -l -c xfce4-terminaldo windows cmd, recebo um aviso Gtk-WARNING **: cannot open display:e nada acontece. Estou bastante confuso, pois imaginei que esses comandos deveriam se comportar de forma idêntica, algum palpite?
— rperryng

@perryng yeah - Eu também estou tentando conseguir um liner para abrir o xfce sem o feio prompt de comando do bash, mas sem sorte ainda.
— Andrew Mao

1
Melhor solução para iniciar o xfce4-terminal usando o atalho. Há um lampejo, mas nenhuma janela fica para trás: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -Command "iex \"bash.exe ~ -c 'DISPLAY=:0 xfce4-terminal'\" " Uma outra versão que começará Xming se ele não está funcionando: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 legal, obrigado por trabalhar os meandros desse comando.
— Andrew Mao

Solução alternativa para monitores de alta resolução. Se você tiver uma tela de 4k, terá fontes borradas no seu terminal. Para corrigir isso, você precisará: 1. Use "VcXsrv Windows X Server" em vez de Xing sourceforge.net/projects/vcxsrv 2. Execute o xserver no modo de compatibilidade. Para fazer isso, você precisará: clique no atalho do VcXsrv com o botão direito do mouse. Escolha "Propriedades". Na guia "Compatibilidade", defina a caixa de seleção em "Substituir comportamento de escala de alto DPI ..." e escolha "Aplicativo" no próximo menu suspenso. 3. Execute o xfce4-terminal e altere a configuração da fonte. Mude a fonte para uma maior.
— koorchik

10

Criei (e uso) um terminal de código aberto para o Windows Subsystem for Linux (WSL) chamado wsl-terminal , baseado em minttye wslbridge.

captura de tela


Tenha cuidado com a autopromoção - pode parecer spam. askubuntu.com/help/promotion

2
Auto-promoção é ok se você reconhecê-lo
— David LeBauer

E você não reconheceu.
— Muni

5
E, por favor, adicione alguns detalhes sobre por wsl-terminalque fornecerá uma melhor experiência de terminal.
— Cynplytholowazy

2
Obrigado por compartilhar isso. Suas coisas já funcionam melhor que o terminal embutido - pelo menos ele pode lidar com quebra de linha na linha de comando um pouco melhor. Um CTRL-A para ir rapidamente para o início do comando ainda falha. Estou feliz com as pessoas se autopromoverem coisas assim. As pessoas devem se acalmar.
— EDH

5

Em uma nova instalação do Ubuntu, eu apenas instalei o XMing (no Windows) e depois (no Ubuntu) xfce4-terminal, e depois eu funcionei export DISPLAY=:0.

Para se livrar do console padrão do Windows, este script VBS faz o trabalho:

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

(Com $ DISPLAY definido no seu .profile.)

edit: E para tornar o script fixável, crie um atalho com target wscript "C:\path\to\thescript.vbs".


O VBS parece funcionar, no entanto, a janela do terminal é aberta e fechada logo depois. Como posso mantê-lo funcionando?
— TCB13

3

No Windows:

  • Clique no canto superior esquerdo da janela do bash.
  • No menu que se abre, selecione 'Propriedades'
  • Defina as opções que você deseja, como fonte etc. (existe até uma fonte mono do Ubuntu!)
  • Após definir as propriedades, elas serão aplicadas à janela atual. Para defini-los como padrão, clique no canto superior esquerdo da janela e clique em padrões.
  • Você pode pressionar Alt + Enter para alternar para o modo de tela cheia.

Eu espero que isso ajude.


Eu gostaria de salientar que ele tem a mesma aparência / uso que o terminal do Ubuntu (Gnome), exceto que adiciona suporte ao mouse. Você pode clicar nos títulos das colunas emhtop
— WinEunuuchs2Unix 7/17


2

Extraterm é mais do que apenas um emulador de terminal. Ele fornece uma caixa de ferramentas para trabalhar com seus aplicativos de terminal e linha de comando.

  • Recursos
  • Suporta Linux e macOS, no Windows WSL, CMD, PowerShell e Cygwin
  • compatível com xterm
  • Várias guias e painéis, divididos e lado a lado da maneira que você quiser
  • Mostrar imagens no terminal
  • Suporte Unicode
  • Emoji colorido
  • Teclado amigável "Command Palette"
  • Ligações de teclas configuráveis
  • Seleções baseadas em teclado
  • Integração Shell; pode isolar e 'quadro' a saída do comando. (suporte para bash, zsh e fish)
  • Uploads e downloads fáceis usando a integração do shell
  • A saída do comando é editável no local. Edição multi-cursor
  • Saída de comando anterior pode ser usada como entrada para novos comandos
  • Suporta temas iTerm2 e TextMate
  • Zoom de texto

Agora estou usando este terminal, pois possui os recursos que realmente desejo. uma maneira fácil de alternar entre cmd, powershell, bash, fish etc.
— nelaaro

1

Desde as atualizações mais recentes do Windows 10 (e WSL), tudo parece estar funcionando usando o console bash do Windows "nativo". (E eu não estou falando sobre a (in) famosa atualização do Windows 1809). Isso funciona mesmo na versão Enterprise pelo menos para a versão 1803 17134.345).

Consulte o artigo em https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEnvironmentWithinLinuxOnWindows10.aspx

Um pequeno aviso - para realmente usar o console bash no Windows, é preciso lançar o tmux - e tudo funcionará como mostrado por Scott em seu blog.


Isso é hilário! O "exec tmux" realmente resolve todos os problemas do terminal "bash.exe" nativo do Windows (linhas de corte estranhas após o redimensionamento).
— Yves Dorfsman 23/10

1

Um terminal para uma idade mais moderno https://eugeny.github.io/terminus/

Terminus é um terminal fortemente inspirado pelo Hyper. É, no entanto, projetado para pessoas que precisam fazer as coisas.

  • Executa no Windows, macOS e Linux
  • Esquemas de temas e cores
  • Atalhos totalmente configuráveis
  • Suporte Unicode completo, incluindo caracteres de largura dupla
  • Não engasga com saídas de fluxo rápido
  • Experiência adequada do tipo shell no Windows, incluindo a conclusão de guias (via Clink)
  • Suporte para PowerShell (+ Core), WSL (Bash no Windows), Git-Bash, Cygwin, Cmder e CMD
  • Lembra suas guias
  • Cliente SSH integrado e gerenciador de conexões

1

https://hyper.is/

  • É baseado em elétrons, o que facilita o desenvolvimento e a extensão usando javascript.
  • Ele não usa o console padrão do Windows de forma alguma.
  • Ele permite que você escolha o bash do shell de back-end, 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
    

Temas e plugins muito bons

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

Usando este guia, pude obter meu WLS, bash funcionando muito bem.


Obrigado - parece um projeto interessante, mas você poderia dizer mais sobre o software e como configurá-lo para a WSL?
— David LeBauer 25/01

1
@DavidLeBauer Espero que ajude.
— nelaaro 25/01

Hyper é super lento.
— Mithril


0

Estender as respostas de aikeru e n.caillou, pois nenhuma das soluções VBScript / JScript funcionou imediatamente para mim.

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

O script precisa ser anexado Callao usar parênteses no comando run, veja aqui . Também os carrapatos precisavam ser o contrário. Além disso, um argumento adicional para o xfce4-terminal iniciará o terminal na pasta inicial do usuário. Desculpe se isso realmente estava funcionando com código JScript, não tenho idéia sobre essas linguagens de script.

Salvando isso como um arquivo vbscript.vbs e executando a partir de um prompt do cmd ,

wscript vbscript.vbs

em seguida, abre uma janela do terminal xfce4 (dado que o XMing ou similar está em execução) após 2 segundos de atraso. Transformar isso em um atalho, como sugerido pelos trabalhos de n.caillou, e clicar no atalho gerará automaticamente uma nova janela do terminal do xfce com algum atraso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.