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

17

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

É possível:

  1. Conecte um programa do Windows terminal ao WSL ou

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

por David LeBauer 21.09.2016 / 21:16

7 respostas

18

Eu pessoalmente faço o último: uso VcXsrv como meu servidor X no modo de múltiplas janelas, então inicio o terminal xfce4 (porque o gnome-terminal tinha problemas visuais que eu não me importava em tentar aprender como consertar), e de repente eu tenho um terminal competente com suporte a fontes e cores.

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

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

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

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

Eu também instalei o compiz e utilizei o projeto cbwin para executar programas do windows a partir do meu shell xfce4-terminal.

Estou muito feliz com esta configuração e uso o NeoVim + muitos plug-ins nativos do Linux, embora minha máquina "para trabalho" deva ser o Windows. :)

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

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

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

WScript.CreateObject("WScript.Shell").run('bash.exe -l -c "DISPLAY=:0.0 xfce4-terminal"', 0, false);
    
por aikeru 21.09.2016 / 21:25
14

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 VcXsrv ou XMing .
  2. No Bash para Windows, instale o terminal: sudo apt-get install xfce4-terminal .
  3. Adicione export DISPLAY=:0 ao seu .bashrc . (Adicioná-lo ao .profile ou .bash_profile não funcionou para mim ). Isso permitirá que você inicie xfce4-terminal corretamente do bash, mas seja 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:

  • O ~ inicia bash em seu diretório inicial, você pode removê-lo para iniciar em qualquer diretório no qual o arquivo .vbs esteja. Por isso, é conveniente colocá-lo em C:\Users\foo , por exemplo.
  • Observe que o XMing precisa estar em execução para o script funcionar; Para iniciá-lo automaticamente com o Windows, você pode seguir as instruções em este artigo .
  • O Emacs 24 (incluído no Ubuntu 14.04) parece não funcionar com o XMing; Eu tive que instalar uma nova versão como sugerido neste post .
por Andrew Mao 04.01.2017 / 00:40
5

Em uma nova instalação do Ubuntu, eu acabei de instalar o XMing (no Windows) e depois (no Ubuntu) xfce4-terminal, e depois de eu export DISPLAY=:0 , funcionou.

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

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

(com $ DISPLAY definido no seu .profile .)

edit: Para tornar o script pin'able, crie um atalho com destino wscript "C:\path\to\thescript.vbs" .

    
por n.caillou 29.09.2016 / 05:27
4

Eu criei (e uso) um terminal de software livre para o Windows subsistema para Linux (WSL) chamado wsl-terminal , é baseado em mintty e wslbridge .

    
por Gore Liu 20.09.2017 / 03:11
3

No Windows:

  • Clique no canto superior esquerdo da janela do bash.
  • No menu que abre selecione 'Propriedades'
  • Defina as opções que você deseja, como fonte etc. (existe até uma fonte mono do Ubuntu!)
  • Depois de 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 o modo de tela cheia.

Espero que isso ajude.

    
por mohi 01.08.2017 / 03:33
2

ConEmu funciona muito bem! Basta instalá-lo e iniciar um novo console {bash} . Eu adicionei cd ~ ao meu .bashrc para que o padrão seja iniciado no meu diretório inicial.

Boa explicação: link

    
por Bill Hoag 14.11.2017 / 18:17
0

Estendendo 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 prefixado por Call ao usar parênteses no comando de execução, consulte aqui . Também os carrapatos precisavam ser o contrário. Além disso, um argumento adicional para xfce4-terminal iniciará o terminal na pasta base do usuário. Desculpe se isso estava realmente funcionando 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 cmd por

wscript vbscript.vbs

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

    
por Frederik Heber 13.06.2018 / 13:22